Ich habe ein kleines Programm geschrieben mit dynamische Buttons. Die Buttons werden mit einer forSchleife erzeugt und mit Daten aus einer Ini-Datei gefüllt. Das klappt auch wunderbar. Alle Buttons werden mit ihrem individuellen Namen angelegt.
Jetzt möchte ich bei jedem Button beim Clicken eine eigene Routine ausführen. Hierbei musste ich allerdings feststellen das Perl hier die Sub-Routine erst beim clicken erstellt bzw. die Variablen in der Routine alle den gleichen (letzten) Wert haben.
Quasi ist jeder Button mit dem Code des letzten Buttons belegt.
Gibt es eine Möglichkeit das ich hier elegant rausfinden/abfragen kann welcher Button gedrückt wurde???
Hier mal der Code:
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
for (my $button=0; $button < readini(PRODUKTE, ANZAHL, 'produkte.ini'); $button++)
{
$produktnr[$button] = 'PRODUKT'.$button;
($textbutton = readini($produktnr[$button], NAMEDISPLAY, 'produkte.ini')) =~ s/\\n/\n/g;
$fontface = readini($produktnr[$button], FONTDISPLAY, 'produkte.ini');
$buttoncolor = readini($produktnr[$button], BUTTONCOLOR, 'produkte.ini');
$placex=readini($produktnr[$button], X, 'produkte.ini');
$placey=readini($produktnr[$button], Y, 'produkte.ini');
$placeh=readini($produktnr[$button], H, 'produkte.ini');
$placew=readini($produktnr[$button], W, 'produkte.ini');
$mw->Button( -text => $textbutton,
-relief => "raised",
-font => $fontface,
-background => $buttoncolor,
-activebackground => $buttoncolor,
-command => sub { print $produktnr[$button];if (readini($produktnr[$button], AKTIV, 'produkte.ini') == 1) {
print "bindrin";$wahl = readini($produktnr[$button], NAMEBON, 'produkte.ini');
$wert = readini($produktnr[$button], PREIS, 'produkte.ini');
$pfand_kz = readini($produktnr[$button], PFAND, 'produkte.ini');
$pfand_wert = readini($produktnr[$button], PFANDWERT, 'produkte.ini');
$pid = 0; for($i=0;$i<$menge_wahl;$i++) { &ausgabesumme; &print;}
$storno_kz = 0; $menge_wahl = 1;}
}
)->place( -x => $placex, -y => $placey, -height => $placeh, -width => $placew);
}