Einzelnen Beitrag anzeigen

Andreas L.

Registriert seit: 23. Mai 2011
Ort: Furth im Wald
308 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Mehrere Editfelder gleichzeitig initialisieren

  Alt 28. Feb 2019, 10:11
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.
Angehängte Dateien
Dateityp: zip edits ändern findcomponent.zip (269,2 KB, 4x aufgerufen)
Andreas Lauß
Blog

Geändert von Andreas L. (28. Feb 2019 um 10:15 Uhr)
  Mit Zitat antworten Zitat