Thread Dynamische Buttons (12 answers)
Opened by Kean at 2007-04-25 17:01

Kean
 2007-04-25 17:01
#46306 #46306
User since
2004-08-18
463 Artikel
BenutzerIn

user image
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:

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
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);
}

View full thread Dynamische Buttons