Objekte aus Array

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:

  1. Wie müssen die Prozeduren (?) aussehen, die ich den ereignissen zuweise?
  2. Wie müssen sie deklariert werden.
    Beides bekomme ich nicht hin!

Danke!
Trempf

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:

  1. 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

Hallo!

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

Danke erstmal, aber:
Wenn ich das so mache, bekomme ich:

[Fehler] Unit1.pas(16): Ungenügende Forward- oder External-Deklaration: ‚TForm1.ComboBoxSettingsChange‘

Lösung?!

Trempf

Hi,

[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 :wink: ?

Gruß
Martin