Die vorgeschlagenen Varianten als Realisierungsvorschlag:
Delphi-Quellcode:
type
TForm1 = class(TForm)
Groupbox: TGroupbox;
Trackbar1: TTrackbar;
Trackbar2: TTrackbar;
{...}
private
function GetTrackbar(AIndex: Integer): Trackbar;
{...}
public
property Trackbar[AIndex: Integer]: TTrackbar read GetTrackbar;
{...}
end;
implementation
function TForm1.GetTrackbar(AIndex: Integer): Trackbar;
{Variante 1: über den Namen suchen}
begin
Result := FindComponent('Trackbar' + IntToStr(AIndex));
end;
{Variante 2: über den Tag suchen, der Tag muss im Objektinspektor zugewiesen sein}
var
i: Integer;
begin
with Groupbox do
begin
for i := 0 to Controls.Count - 1 do
begin
if (Controls[i] is TTrackbar) and (Controls[i].Tag = AIndex) then
begin
Result := TTrackbar(Controls[i]);
Exit;
end;
end;
end;
Result := nil;
end;
Delphi-Quellcode:
{Variante 3: über initialisiertes Array zugreifen}
type
TForm1 = class(TForm)
Groupbox: TGroupbox;
Trackbar1: TTrackbar;
Trackbar2: TTrackbar;
{...}
procedure FormCreate(Sender: TObject); // <- muss im Objektinspektor zugewiesen sein
private
FTrackbar: array[1..8] of TTrackBar;
function GetTrackbar(AIndex: Integer): Trackbar;
{...}
public
property Trackbar[AIndex: Integer]: TTrackbar read GetTrackbar;
{...}
end;
implementation
procedure TForm1.FormCreate(Sender: TObject);
begin
FTrackbar[1] := Trackbar1;
FTrackbar[2] := Trackbar2;
{...}
end;
function TForm1.GetTrackbar(AIndex: Integer): Trackbar;
begin
Result := FTrackbar[AIndex];
end;