Einzelnen Beitrag anzeigen

Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#33

Re: Edit-Felder während der Laufzeit erstellen... wie?

  Alt 22. Jan 2008, 13:24
(Ich hoffe ich sehe, das richtig, dass du bei iengabe von z.B. 5 -> 5x6 Edit-Felder hast)
(Hattest du eigentlich lines und rows eingefügt und ich habe es übernommen --> besser rows und columns )

Also es gibt ja für ein Konzept ganz viele Möglichkeiten.
In deiner EditList sind ja alle Felder gespeichert. Die kannst du dir mit Editlist[x] rausholen. Die sind da auch der Reihe nach reingerutscht. Also müsste man die mit EditList[(zeile-1)*(n+1)+spalte-1] bekommen.
Das geht am schnellsten. Da wir aber auch die Edits bei dem Formular als owner angemeldet haben, können wir sie auch über das Formular und den Namen der Edits finden:
findcomponent(e+inttostr(Zeile)+inttostr(spalte)) Das kann allerdings etwas länger dauern (aber keinesfalls merklich länger)

Egal welchen Ausdruck du wählst. Du machst darum eine Klammer und setzt TEdit davor:
TEdit(EditList[(zeile-1)*(n+1)+spalte-1]) Und den Wert kannst du jetzt in einer Variable speichern, in With verwenden oder direkt nutzen:
Delphi-Quellcode:
//3 Beispiele
//1.
TEdit(EditList[(zeile-1)*(n+1)+spalte-1]).text:='Hallo';
TEdit(EditList[(zeile-1)*(n+1)+spalte-1]).visible:=false;
...

//2.
with TEdit(EditList[(zeile-1)*(n+1)+spalte-1]) do
begin
  text:=' ':
  visible:=false;
  ...
end;

//3.
var Edit:TEdit;
begin
  Edit:=TEdit(EditList[(zeile-1)*(n+1)+spalte-1]);
  Edit.text:='';
  Edit.visible:=true;
  ...
end;

Und nur um dir die Möglichkeiten aufzuzeigen, die es beim Programmieren so gibt. In deinem Fall könnte man das Konzept mit der Liste auch übern Haufen werfen und:
1. Ohne die Liste die Edits nach wie vor bei dem Formular anmelden (das führt ja auch eine Liste) und über FindComponent suchen. Da geht dann das Löschen nicht so einfach. Könnte man aber auch über FindComponent und dann x.free machen. Da spart man sich die Liste. Aber ein einfaches Clear aufzurufen anstatt mit einer Schleife alle Edits zu suchen ist etwas comfortabler.
2. Die Liste in einem Array speichern (Array of Array of TEdit). Die größe des Arrays der Matrix anpassen und jedes Element bekommt ein Objekt (create)
3....
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat