AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Edit-Felder durchnummerieren

Ein Thema von KaMpfGn0m · begonnen am 30. Sep 2005 · letzter Beitrag vom 12. Okt 2005
Antwort Antwort
KaMpfGn0m

Registriert seit: 30. Sep 2005
2 Beiträge
 
#1

Edit-Felder durchnummerieren

  Alt 30. Sep 2005, 19:45
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] = 'Gthen
...
Mein Informatiklehrer konnte mir da auch net helfen (...naja...), vielen Dank schon ma im Vorraus,
Gnom
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Edit-Felder durchnummerieren

  Alt 30. Sep 2005, 20:05
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
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Edit-Felder durchnummerieren

  Alt 30. Sep 2005, 20:08
Hai KaMpfGn0m,

ersteinmal: "Herzlich Willkommen in der Delphi-PRAXiS".

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 = 'Gthen ShowMessage('blubb'); // Wenn das Edit auf der Form liegt
  if GetEdit(2,Panel1).Text = 'Gthen ShowMessage('blubb'); // Wenn das Edit z.B. auf Panel1 liegt.
end;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von ManuMF
ManuMF

Registriert seit: 11. Jul 2005
1.016 Beiträge
 
Delphi 6 Personal
 
#4

Re: Edit-Felder durchnummerieren

  Alt 30. Sep 2005, 20:09
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]
Gruß,
ManuMF

Endlich hab ich was Positives an Vista entdeckt: Das mitgelieferte Mahjongg
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: Edit-Felder durchnummerieren

  Alt 30. Sep 2005, 20:57
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...
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
KaMpfGn0m

Registriert seit: 30. Sep 2005
2 Beiträge
 
#6

Re: Edit-Felder durchnummerieren

  Alt 12. Okt 2005, 14:07
Danke schön XD hat mir sehr geholfen!
  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 01:13 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