Thread [Wx] EventHandler aktiv nur wenn PopUpMenü geöffnet ist
(10 answers)
Opened by XimPerl at 2011-12-16 02:41
Und so funktionierts.
Vielen Dank Code (perl): (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 # Parse ein XML Document use XML::Simple; my $xml = new XML::Simple; my $doc = $xml->XMLin("file.xml"); # Zähle Anzahl Einträge my $rowCount=0; foreach my $key (keys (%{$doc->{item}})){ $rowCount++; } # Erstelle Grid $self->{grid} = Wx::Grid->new($self->{tab}, -1); $self->{grid}->CreateGrid($rowCount,4); $self->{grid}->SetColLabelValue(0,"A"); # Füge dem Grid anhand der XML Datei die Einträge hinzu my $row=0; foreach my $key (keys (%{$doc->{item}})){ my $name = $doc->{item}->{$key}->{'name'}; $self->{grid}->SetCellValue($row,1, $name); $row++; } # Füge Rechtsklick-Event hinzu für Grid Zellen Wx::Event::EVT_GRID_CELL_RIGHT_CLICK($self, \&showPopupMenu); # Das PopUp Menü an sich sub showPopupMenu { my ($self,$event) = @_; my $pos = $event->GetPosition(); my $row = $event->GetRow(); # Connect Event Wx::Event::EVT_MENU($self, "101", sub { $self->onSelect($event); }); my $menu = Wx::Menu->new(); my $download = Wx::MenuItem->new($menu, "101","Select"); $menu->AppendItem($download); $menu->Append($loeschen); $menu->Append($neustart); $self->PopupMenu($menu, $pos); $menu->Destroy(); } sub onSelect { my ($self,$event) = @_; my $row = $event->GetRow(); $self->{grid}->SetCellValue($row,1, "Text"); # Disconnect Event Wx::Event::EVT_MENU($self, "101",""); } Letztes Problem wäre wenn kein PopUpMenü Eintrag ausgewählt wird. Das Event würde dann nicht disconnected werden. Last edited: 2011-12-19 16:52:15 +0100 (CET) |