[Delphi3] CheckBox-Gruppe (array?)

Hallo Experten!

Ich möchte ein Programm mit einem Fenster schreiben, das gleich eine ganze Reihe von Checkboxes enthält, die alle sehr ähnliche Funktionen haben.
Deshalb würde ich gerne gleich ein Feld erstellen, ungefähr so:

type
TForm1 = class(TForm)
Checkboxes: array[1…10] of TCheckBox;

anstatt
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
CheckBox3: TCheckBox;
CheckBox4: TCheckBox;
CheckBox5: TCheckBox;
CheckBox6: TCheckBox;
CheckBox7: TCheckBox;
CheckBox8: TCheckBox;
CheckBox9: TCheckBox;
CheckBox10: TCheckBox;

Wenn der Benutzer irgendeine dieser Checkboxen aktiviert, sollte EINE Procedure aufgerufen werden, in die übergeben wird, welche Checkbox es genau war.
Sonst muesste ich für jede Checkbox eine enzelne
procedure TForm1.CheckBox1Click(Sender: TObject);
procedure TForm1.CheckBox2Click(Sender: TObject);
procedure TForm1.CheckBox3Click(Sender: TObject);
usw. erstellen, die aber fast identische Inhalte hätten.

Wie kann ich das möglichst elegant hinbekommen? Es soll dann auch mit 10 Labels, Buttons o.ä. funktionieren, z.B. für alle Labels mit einem Befehl oder einer for-Schleife den Wert „Enabled“ verändern.

(Ich bin Delphi-Anfänger, aber kenne mich gut mit TurboPascal aus.)

Vielen Dank für Eure Tipps!

Sven.

Das ist gaaanz einfach:

Im Konstruktor (create) des Fensters werden die Checkboxen erzeugt:

Var TmpCB:TCheckbox;

for i:=1 to n do
With TCheckBox.Create(self) do begin
{Eigenschaften setzen }
Top := …;

Tag := n; // WICHTIG zur Idendifizierung später
OnCklick := CheckBoxClick; // Event-Handler setzen
end;

Procedure TForm1.CheckBoxClick(Sender:TObject);
var n:Integer;
begin
n := TCheckBox(Sender).Tag;
{ n ist die Nummer der Checkbox,
damit kann man hier die Box idendifizieren }
end;

Vielen Dank, das probier ich mal (o.T.)

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]