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
# 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);
# Erstelle statisches Event für Eintrag für PopUp Menü Event
Wx::Event::EVT_MENU($self, "01".$row."", \&onSelect);
$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();
my $menu = Wx::Menu->new();
my $download = Wx::MenuItem->new($menu, "01".$row."","Select");
$menu->AppendItem($download);
$menu->Append($loeschen);
$menu->Append($neustart);
$self->PopupMenu($menu, $pos);
$menu->Destroy();
}
# Die Methode bei PopUp Menü Event
# Nur woher weiß ich jetzt für welchen Eintrag bzw. Reihe des Grids der Event ausgelöst wurde?
sub onSelect {
my ($self,$event) = @_;
my $row = ????; # Woher nehmen wenn nicht stehlen?
$self->{grid}->SetCellValue($row,1, "Text");
}
QuoteDas Event habe ich bereits vorher statisch mappen müssen,
Wx::Event::EVT_GRID_CELL_RIGHT_CLICK($self, sub {} );
1 2 3 4
$self->{events}->{EVT_GRID_CELL_RIGHT_CLICK} = Wx::Event::EVT_GRID_CELL_RIGHT_CLICK($self, \&showPopupMenu); $self->{events}->{EVT_GRID_CELL_RIGHT_CLICK}->connect(); $self->{events}->{EVT_GRID_CELL_RIGHT_CLICK}->disconnect();
$self->Connect(10101,10101, EVT_GRID_CELL_RIGHT_CLICK, \&showPopupMenu);
$self->Connect(10101,10101, Wx::Event::EVT_GRID_CELL_RIGHT_CLICK, \&showPopupMenu);
$self->Connect(10101,10101, Wx::Grid::EVT_GRID_CELL_RIGHT_CLICK, \&showPopupMenu);
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",""); }
1 2 3 4 5
# Zähle Anzahl Einträge my $rowCount=0; foreach my $key (keys (%{$doc->{item}})){ $rowCount++; }
1 2 3 4 5 6 7
# 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++; }
1 2 3 4 5
# Füge dem Grid anhand der XML Datei die Einträge hinzu my $row=0; foreach my $val (values(%{$doc->{item}})){ $self->{grid}->SetCellValue($row++,1, $val->{'name'}); }