Warum überhaupt Verweise auf die Checkboxen in einem Array speichern? Wenn man beim Erzeugen einer Checkbox einen Owner übergibt, übernimmt der doch die komplette Verwaltung. Durch einen geschickte Benennung der Komponenten kann man sie bei Bedarf über die Methode
FindComponent des Owners suchen.
Wir benötigen zunächst eine Routine zum Erzeugen eines Namens für die Checkbox in Reihe aRow, Spalte aCol:
Delphi-Quellcode:
function TForm1.GetCheckboxName (aRow, aCol: Integer): string;
begin
Result := Format('cxR%.3dC%.3d', [aRow, aCol]);
end;
Die folgende Routine liefert einen Zeiger auf die Checkbox in Reihe aRow, Spalte aCol:
Delphi-Quellcode:
function TForm1.FindCheckbox (aRow, aCol: Integer): TCheckBox;
begin
Result := FindComponent(GetCheckboxName(aRow, aCol)) AS TCheckBox;
end;
Nun kann man die Checkboxen erzeugen:
Delphi-Quellcode:
var row, col : Integer;
box : TCheckBox;
begin
for row := 0 to 9 do
for col := 0 to 9 do
begin
box := TCheckBox.Create(Self);
box.Parent := Self;
box.Name := GetCheckboxName(row, col);
box.SetBounds (8 + 16 * col, 8 + 16 * row, 14, 14);
box.Caption := '';
end;
end;
Der Zugriff auf die Checkbox in Zeile row, Spalte col erfolgt dann z. B. so:
FindCheckbox(row, col).Checked := True;
Zusätzlich könnte man die Funktion FindCheckbox noch als Getter-Methode für ein Array-Property benutzen.
Für den produktiven Einsatz sollte natürlich noch eine Überprüfung der Parameter in FindCheckbox eingebaut werden.
Gruß Hawkeye