Hallo!
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.
Dazu meine Fragen:
Wie müssen die Prozeduren (?) aussehen, die ich den ereignissen zuweise?
Wie müssen sie deklariert werden.
Beides bekomme ich nicht hin!
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
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.
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
Danke erstmal, aber:
Wenn ich das so mache, bekomme ich:
[Fehler] Unit1.pas(16): Ungenügende Forward- oder External-Deklaration: ‚TForm1.ComboBoxSettingsChange‘
[Fehler] Unit1.pas(16): Ungenügende Forward- oder
External-Deklaration: ‚TForm1.ComboBoxSettingsChange‘
Lösung?!
das deutet schwer darauf hin, daß Du die Methode noch gar nicht implementiert hast?!?!?! Dir ist klar, daß Du irgendwo 250 Zeilen weiter unten noch hinschreiben mußt
PROCEDURE TForm1.ComboBoxSettingsChange (Sender: TObject);
begin
[Was auch immer in Reaktion auf das Ändern
der Comboboxen zu tun ist]
end;
oder so? Weil, wenn Du die Methode im Formular deklarierst, dann muß die ja auch irgendwo existieren, oder nicht ?