Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi dynamisches array mit label und textboxen zerstören ? (https://www.delphipraxis.net/106461-dynamisches-array-mit-label-und-textboxen-zerstoeren.html)

agm65 11. Jan 2008 08:31


dynamisches array mit label und textboxen zerstören ?
 
moin freunde..mal eine frage: also ich erstelle mir ein array mit label und textboxen wie folgt:
Delphi-Quellcode:
  frmParams.Label1Array[i]:= tedit.create(frmParams.Panel1);
  frmParams.Text1Array[i] := tedit.Create(frmParams.Panel2);

  frmParams.Label1Array[i].parent := frmParams.Panel1;
  frmParams.Text1Array[i].parent := frmParams.Panel2;

  frmParams.Label1Array[i].text   := slAll12.Names[i] ;
  frmParams.Text1Array[i].Text    := slAll12.ValueFromIndex[i];
wie zerstöre ich diese jetzt damit ich sie neu erstellen kann ? also wenn ich den form schließe sollen alle zerstört werden und beim neu öffnen wieder erstellt werden. weil die anzahl immer unterschieldich ist.. danke euch !

s-off 11. Jan 2008 08:33

Re: dynamisches array mit label und textboxen zerstören ?
 
Hallo,

die Objekte, die Du innerhalb des Arrays erzeugt hast, musst Du auch selber wieder zerstören.
Dazu gehst Du das Array von Low bis High durch.

Anschliessend setzt Du die Länge des Arrays auf 0.

sirius 11. Jan 2008 08:36

Re: dynamisches array mit label und textboxen zerstören ?
 
Wenn du die beiden Panels zerstörst sind auch die Edits weg.

agm65 11. Jan 2008 08:38

Re: dynamisches array mit label und textboxen zerstören ?
 
hab es mit panel1.free probiert, dann bekomme ich beim wieder öffnen einen fehler.

mkinzler 11. Jan 2008 08:39

Re: dynamisches array mit label und textboxen zerstören ?
 
Zitat:

hab es mit panel1.free probiert, dann bekomme ich beim wieder öffnen einen fehler.
Was meinst du mit Wiederöffnen?

sirius 11. Jan 2008 08:40

Re: dynamisches array mit label und textboxen zerstören ?
 
Das war ja nur eine Möglichkeit. Wir kennen ja den Aufbau deines Programmes nicht. s-off hat die am wahrscheinlichsten funktionierende Lösung gegeben.

agm65 11. Jan 2008 08:42

Re: dynamisches array mit label und textboxen zerstören ?
 
ich dachte das ich die panels im formclosequery mit .free behandel wenn ich dann wieder form.show mache bekomme ich den fehler. was läuft falsch ?

das geht auch nicht:

Delphi-Quellcode:
 for i := 0 to length(frmParams.Label1Array) - 1 do
   begin
     frmParams.Label1Array[i]:= nil;
     frmParams.Text1Array[i] := nil;
   end;
  setlength(frmParams.Label1Array,0);
  setlength(frmParams.Text1Array,0);

s-off 11. Jan 2008 08:47

Re: dynamisches array mit label und textboxen zerstören ?
 
Du kannst zwar das Item an Index x innerhalb Deines Arrays auf 'nil' setzen -> dadurch ist das eigentliche Objekt aber noch immer existent ;)

Edit: desweiteren solltest Du Dir angewöhnen, ein Array nicht von 0 bis Length - 1 durchzugehen, sondern von Low bis High.
Irgendwann erzeugst Du vielleicht mal ein Array[1..3] of irgendwas und schon hast Du ein Problem.

sirius 11. Jan 2008 08:48

Re: dynamisches array mit label und textboxen zerstören ?
 
Du erstellst das Formular nicht erst beim Anzeigen sondern es existiert im Speicher während deiner gesamten Anwendung und du hast es nur macnhmal sichtbar. Wenn du dein Panel zerstörst wird es nicht wieder erstellt. show holt das Formular nur aus dem usichtbaren in den sichtbaren Bereich.

Du solltest dir vielleicht generell überlegen, so ein Formular nur bei Benutzung zu erstellen (kann aber nicht sagen, ob das in dein Konzept passt.

z.B. so:
Delphi-Quellcode:
procedure showDialog;
var Formx:Tformx
begin
  Formx:=Tformx.create(nil);
  try
    Formx.feld1:=5; //Beispiel
    Formx.showmodal;
    editresult.text:=formx.irgendetwas; //Beispiel
  finally
    Formx.free;
  end;
end;
Edit: Und natürlich Formular Formx im Menu Projekt>Optionen>Formulare aus "auomatisch erzeugen" herausnehmen.

agm65 11. Jan 2008 08:53

Re: dynamisches array mit label und textboxen zerstören ?
 
okay ich setzte jetzt einfach die parent eigenschaft der arrays auf nil, dann gehts....

wie sieht die synatx mit der for schleife von low bis high aus ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:02 Uhr.
Seite 1 von 3  1 23      

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