Hallo,
nehmen wir an, ich habe 3 Editfelder(edit1, edit2, edit3). Alle Editfelder will ich mit dem String "Text" befüllen.
Anstatt die Editfelder einzeln zu befüllen, sollen die Editfelder über eine for-Schleife initialisiert werden.
Wie bekomme ich das hin?
So sieht aktuell mein Code aus:
Code:
procedure TForm1.Button1Click(Sender: TObject);
var i:Integer;
begin
for i := 1 to 3 do
begin
edit1.Text:='text';
end;
end;
Wie scrat1979 schon geschrieben hat, kannst du das via FindComponent machen.
Ich hab auf die schnelle folgende Routine geschrieben:
Delphi-Quellcode:
procedure TfrmMain.SetEditsText(AText: String; AName: String;
AStartIndex: Integer = 1; AEndIndex: Integer = 1);
var
CurrentIndex: Integer;
CurrentEdit: TEdit;
CurrentComponent: TComponent;
begin
for CurrentIndex := AStartIndex to AEndIndex do
begin
CurrentComponent := FindComponent(AName + IntToStr(CurrentIndex));
if Assigned(CurrentComponent) and (CurrentComponent is TEdit) then
begin
CurrentEdit := TEdit(CurrentComponent);
CurrentEdit.Text := AText;
end;
end;
end;
So wird die Funktion z. B. in einem Button OnClick-Event aufgerufen:
Delphi-Quellcode:
procedure TfrmMain.Button1Click(Sender: TObject);
begin
SetEditsText(
'Neuer Text',
'Edit',
1,
3
);
end;
Mit diesem Aufruf würden die Edits Edit1, Edit2 und Edit3 den Text 'Neuer Text' zugewiesen bekommen.
Im Anhang ist das komplette Demo-Projekt inkl. EXE.