AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi Mehrere Editfelder gleichzeitig initialisieren
Thema durchsuchen
Ansicht
Themen-Optionen

Mehrere Editfelder gleichzeitig initialisieren

Ein Thema von delphicoder123 · begonnen am 27. Feb 2019 · letzter Beitrag vom 1. Mär 2019
Antwort Antwort
delphicoder123

Registriert seit: 14. Feb 2019
102 Beiträge
 
#1

Mehrere Editfelder gleichzeitig initialisieren

  Alt 27. Feb 2019, 23:08
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;
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#2

AW: Mehrere Editfelder gleichzeitig initialisieren

  Alt 27. Feb 2019, 23:12
Das wurde schon 1000mal gefragt und 1001mal beantwortet. Bitte bemühe doch mal die Suche im Forum oder einer Suchmaschine
  Mit Zitat antworten Zitat
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.028 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Mehrere Editfelder gleichzeitig initialisieren

  Alt 27. Feb 2019, 23:28
FindComponent ist dein Freund
Michael Kübler
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Mehrere Editfelder gleichzeitig initialisieren

  Alt 27. Feb 2019, 23:48
Das wurde schon 1000mal gefragt und 1001mal beantwortet. Bitte bemühe doch mal die Suche im Forum oder einer Suchmaschine
Nichts für ungut, wer lang genug dabei ist, wird schon danach suchen, bzw.eine ungefähre Vorstellung davon haben wonach er suchen muß. Er als Frischling darf mM nach schonmal fragen.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
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, 11: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 11:15 Uhr)
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
701 Beiträge
 
Delphi 12 Athens
 
#6

AW: Mehrere Editfelder gleichzeitig initialisieren

  Alt 28. Feb 2019, 11:59
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;
Ich benutze für sowas meist eine Funktion wie die hier:
Delphi-Quellcode:
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;
Aufgerufen aus einer Methode des Forms z. B. mit

  FillEditcontrols(String.empty,[edit1, edit2, edit3, memo1]); 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.
Peter Below
  Mit Zitat antworten Zitat
Pfaffe

Registriert seit: 29. Jan 2009
297 Beiträge
 
Delphi 12 Athens
 
#7

AW: Mehrere Editfelder gleichzeitig initialisieren

  Alt 28. Feb 2019, 13:45
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;
  Mit Zitat antworten Zitat
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.205 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Mehrere Editfelder gleichzeitig initialisieren

  Alt 1. Mär 2019, 08:36
Vielleicht ist DuckTyping da ein gutes Stichwort.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz