AGB  ·  Datenschutz  ·  Impressum  







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

Zählvariable für labels/editfelder, etc

Ein Thema von TM4rkuS · begonnen am 1. Feb 2010 · letzter Beitrag vom 3. Feb 2010
Antwort Antwort
TM4rkuS

Registriert seit: 26. Jul 2009
22 Beiträge
 
#1

Zählvariable für labels/editfelder, etc

  Alt 1. Feb 2010, 17:45
Ich habe bisher ein Programm, dass per Klick auf einen Button, Label, was man auf nehmen will, durch eine Funktion eine weitere Zeile hinzufügt. Eine "Zeile" sind in diesem Fall 1 Label, 1 Edit-Feld, 1 Panel, 2 Edit-Felder, 1 Label, 1 Edit-Feld.
Am Anfang habe ich 5 Zeilen, die so aufgebaut sind. (Versteht man noch, oder?)
Bis da kann ich ja die Edit-Felder einfach zählen, also ich kann sagen edit12.text:='Hallo';
Wenn ich jetzt aber über meine 20 edits hinausgehe, indem ich einmal diese Funktion aufrufe, kriege ich ja insgesamt weitere 4 Edits (Namen sind dann bei Edit21, Edit22, etc.) Wie kann ich da jetzt weitermachen? Also ich kann jetzt immer noch sagen edit22.text:='Hallo', aber ich habe keine Lust 22 mal zu schreiben,
edit1.text:='...';
edit2.text:='...';
außerdem ist das ja beliebig erweiterbar, also man kann beliebig viele Zeilen hinzufügen... Ist es möglich eine Zählvariable in diesen edit-Namen einzubringen? Also quasi edit[x].text:='Hallo'; ?? Jetzt nicht in der Form, aber ist das generell möglich?
  Mit Zitat antworten Zitat
Spezi

Registriert seit: 14. Feb 2009
Ort: Deutschland ;-)
65 Beiträge
 
Delphi 2005 Personal
 
#2

Re: Zählvariable für labels/editfelder, etc

  Alt 1. Feb 2010, 17:48
Es gibt die Funktion: FindComponent
Delphi-Quellcode:
var a:TObject; i:Integer;
for i:=0 to 22 do begin
a:=FindComponent('Edit'+inttostr(i));
(a as TEdit).Text:='Hallo';
end;
Habe ihn nicht getestet, aber müsste so in etwa funktionieren
Wer Rechtschreibfehler findet darf Sie behalten
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Zählvariable für labels/editfelder, etc

  Alt 1. Feb 2010, 17:49
Hallo,

was ich schreibe bezieht sich auf Delphi. Ob das so unter Lazarus geht, weiß ich nicht, denke aber schon.

Du kannst die Edits in einem "array of TEdit" verwalten und dieses in einer Schleife durchgehen:

Delphi-Quellcode:
var EdtArray: array of TEdit;

SetLength(EdtArray, 22);

for i := 0 to Length(EdtArray) - 1 do
  EdtArray[i].Text := 'Hallo';
Du kannst jedoch auch Delphi-Referenz durchsuchenFindComponent verwenden:

Delphi-Quellcode:
for i := 1 to 22 do
  (FindComponent('Edit' + IntToStr(i)) as TEdit).Text := 'Hallo';
Oder so ähnlich.

Grüße, Matze
  Mit Zitat antworten Zitat
Benutzerbild von markus5766h
markus5766h

Registriert seit: 5. Mär 2009
Ort: Hamburg
569 Beiträge
 
Delphi XE8 Professional
 
#4

Re: Zählvariable für labels/editfelder, etc

  Alt 1. Feb 2010, 21:04
Hallo,

Delphi-Quellcode:
var
 EditArray : array of TEdit;
 n : Integer;

...

n := 22; // für 22 TEdit-Componenten

...
procedure Form1.FormCreate(....
var
 i : Integer;
begin
 SetLength(EditArray, n); // n = Anzahl der verwendeten TEdits
 for i := 0 to n-1 do
  EditArray[i] := FindComponent(Format('Edit%d', [i])) as TEdit;
end;
jetzt kannst Du per Schleife und EditArray[i] auf alle Eigenschaften Deiner Edits zugreifen.
Dies gilt natürlich auch für alle anderen Componenten., die Du entsprechend behandelst.
z.B.
Delphi-Quellcode:
var
 i : Integer;
begin
 for i := 0 to n-1 do
  begin
   if i mod 2 = 0
    then EditArray[i].Font.Color := clRed // alle geradzahligen TEdits : Schriftfarbe Rot
     else EditArray[i].Font.Color := clBlack; // alle ungeradzahligen TEdits : Schriftfarbe Schwarz
   EditArray[i].Text := ....... // Textzuweisung
  end;
end;
Markus H.
  Mit Zitat antworten Zitat
TM4rkuS

Registriert seit: 26. Jul 2009
22 Beiträge
 
#5

Re: Zählvariable für labels/editfelder, etc

  Alt 3. Feb 2010, 20:25
Mhm, ich kann mit der Methode keine neu erstellten Edits finden. Sobald ich ein Edit neu erstelle, ist es total egal, wie es heißt, es wird nicht mit findcomponent gefunden und er bricht mit 'ner Exception ab. Er springt im "control.inc" Quelltext zur Zeile if TMethod(@Self.GetTextBuf).Code = Pointer(@TControl.GetTextBuf) und färbt die grau ein...
  Mit Zitat antworten Zitat
Benutzerbild von markus5766h
markus5766h

Registriert seit: 5. Mär 2009
Ort: Hamburg
569 Beiträge
 
Delphi XE8 Professional
 
#6

Re: Zählvariable für labels/editfelder, etc

  Alt 3. Feb 2010, 20:45
Hallo,
in den Tutorials ist eine kleine Anweisung zum Umgang mit Controls per Array.
Buttons per Array verwalten / erstellen

ein Demo ist auch dabei.
Markus H.
  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 11:44 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