Zitat von
DJ-SPM:
wundert euch nicht, wenn ich momentan nix schreibe. Ich blicke garnicht mehr durch....
Habe oben den Code gepostet, wie ich ein Wort auf mehrere Dynamische Labels (Variable Buchstabe:TLabel) aufteile. Nur wie greife ich zu... keine Ahnung
Hast du dich nicht gewundert, wie das Form wissen kann, was es für Labels besitzt?
Das wird über den Owner gelöst.
Deshalb musst du das Formular, Panel, ... welches deine Labels besitzen soll auch im Constructor angeben.
Und wenn dich die zehntausend Stringvergleiche stören.
Hier eine simple TLabel-Ableitung:
Delphi-Quellcode:
TDynLabel = class(TLabel)
private
fIndex: Integer;
procedure setIndex(const aValue: Integer);
public
constructor Create(aOwner: TWinControl; aIndex: Integer); overload; virtual;
published
property Index: Integer read fIndex write setIndex;
end;
Delphi-Quellcode:
constructor TDynLabel.Create(aOwner: TWinControl; aIndex: Integer);
begin
inherited Create(aOwner);
Parent := aOwner;
Index := aIndex;
end;
procedure TDynLabel.setIndex(const aValue: Integer);
begin
fIndex := aValue;
Name := 'DynLabel' + IntToStr(Index);
end;
Jetzt kannst du deine Erzeugung der labels damit ersetzen:
Delphi-Quellcode:
for i := 1 to BuchstabenLabel.GetTextLen do
with TDynLabel.Create(Self, i) do
begin
j := j + 20;
Caption := Wort[i];
Left := j;
Top := 176;
end;
Der Zugriff wäre damit ganz easy (schließlich weißt du ja, dass alle TDynLabels deine dyn. Labels sind
):
Delphi-Quellcode:
for i := 0 to ControlCount - 1 do
begin
if Controls[i] is TDynLabel then
with TDynLabel(Controls[i]) do
begin
if Index = 1 then
ShowMessage('Ja');
end;
end;