Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi probleme mit dem ausladen von frames (https://www.delphipraxis.net/97434-probleme-mit-dem-ausladen-von-frames.html)

agm65 10. Aug 2007 12:40


probleme mit dem ausladen von frames
 
moin, ich nochmal kurz. wie kann ich denn alle frames ausladen. also ich lade die frames nach und nach in meine scrollbox ein, wenn ich jetzt aber eins eigenladen haben und nicht wieder auf nil setzte, dann überlappen die frames...gibt es einen globalen befehl alles frames auf nil zu setzten oder muss ich das dann machen wie folgt:

if frame1.parent <> nil then frame1.parent := nil
else if if frame2.parent <> nil then frame2.parent := nil


usw ?

Muetze1 10. Aug 2007 12:44

Re: probleme mit dem ausladen von frames
 
Nil setzen gibt die Frame nicht frei und somit ist sie auch nicht zerstört sondern weiterhin sichtbar, nur mit dem Unterschied, dass du keinen direkten Zugriff mehr hast (da du die Referenz weggeworfen hast).

Was willst du erreichen? Soll die Frame komplett weg? dann:
Delphi-Quellcode:
FreeAndNil(Frame1);

agm65 10. Aug 2007 12:56

Re: probleme mit dem ausladen von frames
 
nein das frame soll nicht komplett weg, sondern nur nicht mehr in der scrollbox angezeigt werden ..ich denke wenn ich sie freeundnil raushaue muss ich sie ja dann auch wieder createn ? oder ist das sinnvoll ?

also ich sage:

Delphi-Quellcode:
frame1.Parent := frmMain.SBFrameContainer; //läd mir mein frame in die scrollbox
wenn ich jetzt aber ein anderes einlade:

Delphi-Quellcode:
frame2.Parent := frmMain.SBFrameContainer; //läd mir mein frame in die scrollbox

bleiben reste des ersten frames bestehen
jetzt gehe ich vor wie folgt:

Delphi-Quellcode:
if frame1.parent <> nil then frame1.parent := nil
frame2.Parent := frmMain.SBFrameContainer;
damit sind dann die reste verschwunden ..aber wenn ich jetzt 100 frames habe darf ich 100 if abfragen machen das nervt.

shmia 10. Aug 2007 13:02

Re: probleme mit dem ausladen von frames
 
Die If-Abfragen kannst du dir doch schenken:
Delphi-Quellcode:
 frame1.Parent := nil;
 frame2.Parent := nil;
Aber es geht noch eleganter:
Delphi-Quellcode:
procedure RemoveChildControls(c: TWinControl);
begin
   while c.ControlCount > 0 do
   begin
      c.Controls[0].Parent := nil;
   end;
end;

// Alles, was auf Scrollbox1 liegt entfernen
// Die Childs selber werden aber nicht freigegeben
RemoveChildControls(Scrollbox1);

agm65 10. Aug 2007 13:04

Re: probleme mit dem ausladen von frames
 
shmia, sau geil...genau danach habe ich gesucht ....vieln vielen dank !


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz