![]() |
Edit-Felder durchnummerieren
Hallo erstmal, dies ist mein 1. Post hier, also nicht gleich fertig machen XD
(Die SuFu habe ich auch schon bemüt, aber nichts entsprechendes gefunden) Nun zu meinem Problem ich habe 10 Edit-Felder, die die Namen edit_xy_1- edit_xy_10 tragen, nun gibt es eine Variable, die die Nummer des Feldes beinhaltet (also z.B. runde:=3;). Wie kann ich nun das Edit-Feld mit der entsprechenden Nummer z.B. in einer If-Abfrage ansprechen
Delphi-Quellcode:
Mein Informatiklehrer konnte mir da auch net helfen (...naja...), vielen Dank schon ma im Vorraus,
If edit_xy_!!NUMMER!![2] = 'G' then
... Gnom |
Re: Edit-Felder durchnummerieren
Hallo und herzlich willkommen in der Delphi-PRAXiS.
Es gibt viele Wege um dein Problem zu lösen. Ein Vorschlag: Spendiere deiner Form eine private variable EditList vom Typ TList, erzeuge die Liste im OnCreate-Ereignis der Form und füge deine Edit-Felder mit EditList.Add(Edit_XY_1) in der richtigen Reihenfolge hinzu. Im destructor gibst du den Speicher der EditList einfach wieder mit EditList.Free frei. Immer wenn du jetzt auf die FeldNummer 1 bis 10 zugreifen willst, kannst du folgendes machen:
Delphi-Quellcode:
Nutzen kannst du diese Lösung dann so:
function TDeineForm.GetEdit(nummer: integer): TEdit;
begin Result := TEdit(EditList[Pred(nummer)]); end;
Delphi-Quellcode:
Grüße vom marabu
procedure TDeineForm.TestButtonClick(Sender: TObject);
begin ShowMessage(GetEdit(3).Text); end; |
Re: Edit-Felder durchnummerieren
Hai KaMpfGn0m,
ersteinmal: "Herzlich Willkommen in der Delphi-PRAXiS". :hi: Du musst in diesem Fall alle Controls des Edits durchlaufen und prüfen ob es: a) Ein Editfeld ist und b) Ob der Name des Edits mit deinen Vorgaben übereinstimmt. Das ganze kann zum Beispiel so aussehen:
Delphi-Quellcode:
Edit, das ganze noch als richtige Funktion *g*
procedure TForm1.btn_EditTestClick(Sender: TObject);
var ndx: integer; nummer: integer; begin nummer := 3; for ndx := 0 to Pred(controlcount) do // Alle Controls durchlaufen begin if (Controls[ndx] is TEdit) and // Wenn das Control ein Edit ist und (Controls[ndx].Name = 'edt_Edit' + IntToStr(nummer)) then // den Namen 'edt_Edit' + nummer hat begin if ((Controls[ndx] as TEdit).Text = 'G') then // Wenn in dem Control ein G steht dann begin ShowMessage('blubb'); end; Break; end; end; end;
Delphi-Quellcode:
function GetEdit(const aNumber: integer; const aParent: TWinControl): TEdit;
var ndx: integer; begin result := nil; with aParent do begin for ndx := 0 to Pred(controlcount) do // Alle Controls durchlaufen begin if (Controls[ndx] is TEdit) and // Wenn das Control ein Edit ist und (Controls[ndx].Name = 'edt_Edit' + IntToStr(aNumber)) then begin Result := (Controls[ndx] as TEdit); end; end; end; end; procedure TForm1.btn_Button1Click(Sender: TObject); begin if GetEdit(3,self).Text = 'G' then ShowMessage('blubb'); // Wenn das Edit auf der Form liegt if GetEdit(2,Panel1).Text = 'G' then ShowMessage('blubb'); // Wenn das Edit z.B. auf Panel1 liegt. end; |
Re: Edit-Felder durchnummerieren
Auch eine Möglichkeit:
Delphi-Quellcode:
Gruß,
var
Felder : Array[1..10] of TEdit; // [Startnummer..Endnummer] // Beim Erstellen der Form klären, welches Editfeld welche Nummer hat procedure TForm1.FormCreate(Sender: TObject); begin Felder[1] := Edit1; ... // Hier wird natürlich der Rest auch definiert, ich war nur zu faul ;-) Felder[10] := Edit10; end; // In der Ausführung: Felder[Runde].Text := 'G'; // oder if (Felder[Runde].text = 'G') then ... ManuMF [edit]Code aufgebessert[/edit] |
Re: Edit-Felder durchnummerieren
Such mal nach 'FindComponent' in der Online Hilfe von Delphi. Ich würde aber zu einer Lösung mit Listen tendieren, weil das Suchen der Edit-Felder über den Komponentennamen unsicher ist. Nämlich dann, wenn irgendjemand auf die Idee kommt, den Komponenten 'hübschere' Namen zu geben, was in einem Code-Review schonmal vorkommt...
|
Re: Edit-Felder durchnummerieren
Danke schön XD hat mir sehr geholfen!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:51 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