![]() |
Mehrere Editfelder gleichzeitig initialisieren
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; |
AW: Mehrere Editfelder gleichzeitig initialisieren
Das wurde schon 1000mal gefragt und 1001mal beantwortet. Bitte bemühe doch mal die Suche im Forum oder einer Suchmaschine
|
AW: Mehrere Editfelder gleichzeitig initialisieren
FindComponent ist dein Freund :)
|
AW: Mehrere Editfelder gleichzeitig initialisieren
Zitat:
Gruß K-H |
AW: Mehrere Editfelder gleichzeitig initialisieren
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Ich hab auf die schnelle folgende Routine geschrieben:
Delphi-Quellcode:
So wird die Funktion z. B. in einem Button OnClick-Event aufgerufen:
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;
Delphi-Quellcode:
Mit diesem Aufruf würden die Edits Edit1, Edit2 und Edit3 den Text 'Neuer Text' zugewiesen bekommen.
procedure TfrmMain.Button1Click(Sender: TObject);
begin SetEditsText( 'Neuer Text', 'Edit', 1, 3 ); end; Im Anhang ist das komplette Demo-Projekt inkl. EXE. |
AW: Mehrere Editfelder gleichzeitig initialisieren
Zitat:
Delphi-Quellcode:
Aufgerufen aus einer Methode des Forms z. B. mit
procedure FillEditcontrols(const aText:string; const A: array of TCustomedit);
var i: integer; begin for i:= Low(A) to High(A) do A[i].Text := aText; end;
Delphi-Quellcode:
Der Vorteil ist hier, dass dieses Verfahren auch funktioniert, wenn die Controls sprechende Namen haben und nicht diese nutzlosen automatisch erzeugten Namen, und es funktioniert auch mit beliebig vielen Controls.
FillEditcontrols(String.empty,[edit1, edit2, edit3, memo1]);
|
AW: Mehrere Editfelder gleichzeitig initialisieren
Beispiel für beliebig viele Controls, z.B. TEdits, die auf einem Panel liegen:
Delphi-Quellcode:
for i:= 0 to Panel_Filter.ControlCount-1 do begin
if Panel_Filter.Controls[i] is TLabel then (Panel_Filter.Controls[i] as TLabel).Font.Style:= [] else if Panel_Filter.Controls[i] is TEdit then (Panel_Filter.Controls[i] as TEdit).Text:= '' else if Panel_Filter.Controls[i] is TMaskEdit then (Panel_Filter.Controls[i] as TMaskEdit).Text:= '' else if Panel_Filter.Controls[i] is TCheckBox then (Panel_Filter.Controls[i] as TCheckBox).Checked:= false else if Panel_Filter.Controls[i] is TComboBox then (Panel_Filter.Controls[i] as TComboBox).ItemIndex:= 0; end; |
AW: Mehrere Editfelder gleichzeitig initialisieren
Vielleicht ist
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz