Hi Trempf,
Folgendes Problem habe ich:
Ich erzeuge in einem Form meine Comboboxen aus einem Array of
tcombobox.
Ich möchte nun diesen Boxen auch die Ereignisse „onchange“
etc. zuweisen.
klar.
Dazu meine Fragen:
- Wie müssen die Prozeduren (?) aussehen, die ich den
ereignissen zuweise?
Setze zur Entwurfszeit mit der Maus eine ComboBox ins Formular. Rufe den Objektinspektor auf. Gehe auf die Registertab „Events“. Klicke das Feld „OnChange an“. Drücke die Taste „F1“ zum Aktivieren der Kontexthilfe. Es erscheint die Hilfeseite zu „TCustomComboBox.OnChange“. Dort steht die Deklaration des Events:
property OnChange: TNotifyEvent
Somit hast Du es mit einer Klassenmethode vom Typ „TNotifyEvent“ zu tun. Ein Klick darauf verrät Dir auf einer weiteren Hilfeseite die Deklaration dieses Typs:
type TNotifyEvent = procedure (Sender: TObject) of object;
Du kannst das „OnChange“-Event Deiner Comboboxen zur Laufzeit jeder Methode zuweisen, die von diesem Typ ist. Füge also z. B. Deiner Formulardeklaration im Private-Abschnitt die Methode
PROCEDURE ComboBoxSettingsChange (Sender: TObject);
hinzu und implementiere sie wie gewünscht. Als letztes mußt Du die Comboboxen-Change-Events nun noch auf diese Methode setzen. Das geschieht üblicherweise im OnCreate-Eventhandler des Formulars. Dort schreibst Du also hinein:
FOR k := 0 TO n-1 DO
begin
ComboBoxSettings[k].OnChange := ComboBoxSettingsChange
end;
und fertig ist die Sache.
Viel Spaß beim coden. Wenn noch was unklar ist, frag hier nach.
Mit freundlichem Gruß
Martin