Schrift
[thread]5237[/thread]

Wx::Perl::VirtualTreeCtrl GetItem: Welches Element wurde gedrückt?

Tags: Ähnliche Threads

Leser: 1


<< >> 4 Einträge, 1 Seite
pktm
 2006-09-13 19:53
#45834 #45834
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hallo!

Wie kann ich bei einem VirtualTreeCtrl herausfinden, welches aufklappbare Element gerade aufgeklappt wurde, bzw. welchen Wert es hat?

Aus der Doku:
Quote
sub AddChildren {
   my ($self, $event) = @_;

   my $tree = $event->GetEventObject;
   my $item = $event->GetItem;
   my $item_data = $tree->GetPlData($item);


In $item_data müsste doch eigentlich das drin stehen, was ich brauche. Aber da ist nicht drin. Dumper wirft mir einen undef-Wert vor die Füße.

Hier mein ganzer
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#!/Perl/bin/perl

use strict;
use warnings;

package ServusWelt;
use Data::Dumper qw/ Dumper /;
use Wx;                                     # Wx einbinden
use base qw(Wx::App);                       # von Wx::App ableiten
use Wx::Perl::VirtualTreeCtrl 'EVT_POPULATE_TREE_ITEM'; #'EVT_TREE_ITEM_EXPANDING';


sub OnInit {
   my $app = shift;
   my $frame = Wx::Frame->new( undef,         # kein Eltern-Fenster
                            -1,            # Fenter id
                            'Servus Welt', # Titel
                            [-1, -1],      # Position x/y
                            [150, 150]     # Größe x/y
                          );
   $app->SetTopWindow($frame);             # Fenster als oberstes bestimmen
   
   
   # Wald erstellen    
   #my $tree = new Wx::Perl::VirtualTreeCtrl($tree_ctrl);
   my $tree = new Wx::Perl::VirtualTreeCtrl($frame, 1, [1, 1], [150, 150]);
   EVT_POPULATE_TREE_ITEM($app, $tree, \&AddChildren);
   #my $name = 'ROOT';
   #my $data = 'data';
   #my $root = $tree->AddRoot($name, $data);
   my $root = $tree->AddRoot('ROOT');
   #$tree->Expand($root);
   
   
   $frame->Show(1);                        # Fenster zeichnen
}

sub AddChildren {
   my ($self, $event) = @_;

   my $tree = $event->GetEventObject;
   my $item = $event->GetItem;
   my $item_data = $tree->GetPlData($item);

   if ($tree->GetChildrenCount($item, 0)) {
       # update existing children ...

       my ($child, $cookie) = $tree->GetFirstChild($item);
       while ($child && $child->IsOk) {
           my $child_data = $tree->GetPlData($child);
           # synchronise deletions
           if (child_was_deleted($child_data)) {
               $tree->Delete($child);
           }

           ($child, $cookie) = $tree->GetNextChild($child, $cookie);
       }

   } else {
       # add children for the first time

       my @child_data = expensive_process_to_get_children($item_data);
       foreach (@child_data) {
           my $child = $tree->AppendItem($item, $_->{name});
           # make item expandable if it's a folder
           $tree->SetItemHasChildren($child, 1) if 1;
       }
   }
} # /AddChildren

sub expensive_process_to_get_children {
   my $self = shift;
   
   return {'name' => 'child'};
} # /expensive_process_to_get_children

sub child_was_deleted {
   return 1;
} # /child_was_deleted

package main;

ServusWelt->new->MainLoop();


Kann mir wer weiterhelfen?

Grüße, pktm
http://www.intergastro-service.de (mein erstes CMS :) )
lichtkind
 2006-09-14 14:53
#45835 #45835
User since
2004-03-22
5697 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
ich kenn das widget noch nicht. aber schau mal die demo app an die benutzt so was. und wenns wirklich bug zu sein scheint, meld ihn doch in der liste wxperl-user@lists.sourceforge.net an\n\n

<!--EDIT|lichtkind|1158231431-->
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
pktm
 2006-09-14 15:17
#45836 #45836
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Jepp, da ist ein tolles Demo-Programm dabei. Das erklärt auch, wie man die Daten setzt bzw. wie man wieder an sie heran kommt. Man muss die samples allerdings extra herunter laden, sie sind nicht bei dem WxPaket oder der Dokumentation dabei.

Grüße, pktm
http://www.intergastro-service.de (mein erstes CMS :) )
lichtkind
 2006-09-15 11:53
#45837 #45837
User since
2004-03-22
5697 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
ja das sag ich auch in dem vortrag oder im tutorial hier in der wiki :)
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
<< >> 4 Einträge, 1 Seite



View all threads created 2006-09-13 19:53.