[Delphi] Variable Events
lima-city → Forum → Programmiersprachen → Delphi & Pascal
anzahl
beispiel
beitrag
button
dankeschn
dialog
erklrung
event
funktion
interface
irgend
ketchup
kleine vernderungen
message
ordner
parameter
recht
sender
variable
window
-
Hallo,
Hm.... Ich habe irgend wie ein Problem. Ich habe versucht ein Programm zu schreiben welches mir einen Ordner ausließt. Wenn es auf einen Unterordner stößt soll es einen neue Button erstellen. Nun: Bis hierher klappts (^^ Wow) aber jetzt hab ich ein Problem: Ich brauche natürlich für jeden Button nun ein Onklick-event.
Ich habe jetzt scho heraus bekommen das ich eine Fuktion schreibe die den Rückgabedatentyp TNotifyEvent hat. Wenn ich jetzt aber einem Button mit
Button[x].Onclick:=irgend_eine_funktion();
zuweise. wird die funktion Am Anfang ausgeführt. Und eben nicht wenn ich auf den Button klicke.
Ich hoffe ihr wisst wie ichs meine
mfg ketchup
Beitrag geaendert: 10.5.2007 18:59:49 von ketchupfleck -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Was meinst du damit, dass die Funktion dann "am Anfang" ausgeführt wird?
Edit: Probier's halt einfach so??
unit chrUnit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button2Click(Sender: TObject); begin ShowMessage('Neues OnClick!'); Button1.OnClick := Button1Click; end; procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage('altes OnClick!'); Button1.OnClick := Button2Click; end; end.
Beitrag geaendert: 10.5.2007 20:23:16 von burgi -
Hallo,
Danke schon mal für eure Antworten
Ähh ich glaub ich hab mich etwas verdreht ausgedrückt.
type TForm1 = class(TForm) Button1: TButton; procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
Bei dir Hab ich jetzt ein Button mit 2 Events. Aber ich wollte eine Variable Anzahl an Buttons die mit einem Event ausgestattet sind.
(Ok ich gebs zu das war ein bisschen verwirrend. ^^)
Button[x].Onclick:=irgend_eine_funktion();
Die erklärung wie das gemeint war:
Das [x] steht eben dafür das es eine variable anzahl an Buttons ist. (Eben ein Array) "Irgend_eine_funktion" ist eben irgend eine funktion ( XD ) der ich noch Parameter über geben musst.
Das zuweisen ist auch kein Problem, aber die funktion wird nicht ausgeführt wenn der entsprechende Button geklickt wird sondern eben beim erstellen des Buttons (d.h. ganz am Anfang). Hm was Mach ich falsch?
Ich hoffe ich hab es ein bisschen klarer gemacht.
mfg Ketchup
Beitrag geaendert: 11.5.2007 15:16:21 von ketchupfleck -
Ja, ist schon klar! Ich wollte dir mit dem Beispiel eingentlich nur zeigen, wie du das zuweist. Also in deinem speziellen Fall sollte das irgendwie so in der Art gehen:
//du erzeugst deine Buttons var buttons: araray[0..5] of TButton; for i:= 0 to 5 do begin buttons[i] := TButton.Create(Self); buttons[i].Name := 'Whatever'; buttons[i].Left := links; //analog für rechts //nehmen wir an, du hast wie in meinem ersten Beispiel gepostet, //die Button2Click-Funktion deklariert, //dann kannst du sie jetzt zuweisen für alle deine Buttons buttons[i].OnClick := Button2Click; //und schon haben die alle den selben Eventhandler! //... you can push my button ... end;
Ist hoffentlich klarer mit dem Beispiel. Hab' den Code nicht probiert, sondern einfach nur so dahingetippselt! Also kreuzige mich bitte nicht, wenn er nicht ohne kleine Veränderungen läuft! ;) -
Ok ist klar funktioniert auch. XD
Dankeschön!!
Nun brauch ich nur noch die Caption die der Button der gedrückt wurde, hat.
wie bekomm ich die?
mfg Ketchup
Beitrag geaendert: 11.5.2007 17:00:43 von ketchupfleck -
Indem du in der Event-Funktion (bleiben wir bei Button2Click) einfach die String-Variable Sender.Caption auswertest?
Edit:
Richtig: St := TButton(Sender).Caption, denn Sender wird als TObject od. TComponent übergeben, und da klappt's mit .Caption sonst nicht ...
Beitrag geaendert: 11.5.2007 18:33:56 von burgi -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage