Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Edit-Felder durchnummerieren (https://www.delphipraxis.net/54262-edit-felder-durchnummerieren.html)

KaMpfGn0m 30. Sep 2005 19:45


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:
If edit_xy_!!NUMMER!![2] = 'G' then
...
Mein Informatiklehrer konnte mir da auch net helfen (...naja...), vielen Dank schon ma im Vorraus,
Gnom

marabu 30. Sep 2005 20:05

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:
function TDeineForm.GetEdit(nummer: integer): TEdit;
begin
  Result := TEdit(EditList[Pred(nummer)]);
end;
Nutzen kannst du diese Lösung dann so:

Delphi-Quellcode:
procedure TDeineForm.TestButtonClick(Sender: TObject);
begin
  ShowMessage(GetEdit(3).Text);
end;
Grüße vom marabu

Sharky 30. Sep 2005 20:08

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:
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;
Edit, das ganze noch als richtige Funktion *g*
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;

ManuMF 30. Sep 2005 20:09

Re: Edit-Felder durchnummerieren
 
Auch eine Möglichkeit:

Delphi-Quellcode:
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
    ...
Gruß,
ManuMF

[edit]Code aufgebessert[/edit]

alzaimar 30. Sep 2005 20:57

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...

KaMpfGn0m 12. Okt 2005 14:07

Re: Edit-Felder durchnummerieren
 
Danke schön XD hat mir sehr geholfen!


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:51 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