Dyn. erzeugten Komponenten onClick-Event-Methode zuweisen

Morph

Erfahrenes Mitglied
Hallo allerseits,

Ich hätte da ein Problem, was ich bisher ( leider ) nicht allein lösen konnte. Sei es aufgrund meines mangelnden Verständnisses der BCB-Umgebung oder aufgrund des "Hilfesystems". Auch egal.

Folgendes: Ich habe ein vector mit ( wahrscheinlich ) bis zu 10 TCheckBox-Objekten, die dynamisch zur Laufzeit erstellt werden. Diesen Checkboxen möchte ich nun allen ( ! ) bei deren Konstruktion eine feste Methode "zuweisen", die beim onClick-Event auf einer der erstellten Checkboxen ausgelöst wird. In der "onClick"-Methode soll respektive muss es möglich sein zu ermitteln, welche der up to 10 Checkboxen das Event ausgelöst hat.

Wie bereits erwähnt: Ich krieg's leider nicht hin. Wäre für Gesamt- und Teillösungen sowie nützliche Links zu diesem Thema sehr, sehr dankbar.

Schon einmal danke für eure Mühe.
Gruß, Morph
 
Zuletzt bearbeitet:
Hallo miteinander,

ihr schreibt einfach eine OnClick-Methode (z.B. BoxClick()). Beim erstellen der Boxes gebt ihr dann diese Funktion als Onlick-Methode an:

CheckBox1->OnClick = BoxClick;

Die Funktion muss allerdings vorher definiert sein. Für die genau benötigten Parameter etc. einfach mal eine Checkbox ins Form einfügen, ein OnClick-Event erstellen und denn Kopf der Funktion einfach kopieren. Nur der Name der Funktion muss dann in BoxClick umbenannt werden.

Um in dem EventHandler dann das Aufrufende Objekt zu bekommen, gibt es wohl mehrere Möglichkeiten. Eine der Möglichkeiten ist einen Zeiger zu definieren und diesem Zeiger die Adresse der momentan aktiven Komponente zuzuweisen. Wie die Funktion genau heist, kann ich leider jetzt aus dem Kopf nicht sagen, aber so ungefähr:

TCheckBox *tmp = Form1->GetActiveComponent;

Jetzt kann man über tmp auf alle Eigenschaften der Checkbox zugreifen, die das OnClick-Event aufgerufen hat.

Eine zweite Möglichkeit wäre folgende, wobei ich aber nicht genau sagen kann, ob sie funktioniert. Der Funktion wird beim Aufruf der Parameter Sender übermittelt. Dann sollte auch folgendes funktionieren:

TCheckBox *tmp = (TCheckBox*)Sender;

Jetzt sollte man über tmp auf alle Eigenschaften der aufrufenden Checklbox zugreifen können.

Für weitere Fragen einfach nochmal posten, dann bemühe ich mich um aussagekräftigere Antworten :)

MfG
TheBadDwarf
 

Neue Beiträge

Zurück