Einzelnen Beitrag anzeigen

Peter1999

Registriert seit: 13. Dez 2007
Ort: Dresden
88 Beiträge
 
Delphi XE2 Professional
 
#4

AW: Dynamisch erzeugte Komponente soll sich selbst löschen...

  Alt 20. Nov 2010, 09:40
Ja, du hast Recht, eine Komponente kann sich nicht selbst löschen.
Einen Timer zu missbrauchen, halte ich aber für ziemlichen Pfusch .
Eine ebenfalls unschöne aber bessere Lösung sieht folgendes vor:
Jedes Panel bekommt eine ID, z.B in dessen Tag.
Beim Klick auf den Button (auf dem Panel) bekommt ein beliebiges anderes Control (z.B. deine Combobox, nicht auf dem Panel!) den Focus zugewiesen und übernimmt in seinem Tag den Tag des Panels.
In der Methode OnGetFocus des anderen Controls löschst du dann (wenn eigener Tag > 0) das Panel und alles was dazu gehört und setzt den Tag wieder auf -1 .
Somit wird das Panel nicht von sich selbst freigegeben und es läuft nirgends ein unnützer Timer.

Achtung, falls du wirklich noch mit D7 arbeitest, da hat scheinbar der Speichermanager ein Problem.
Jedenfalls habe ich FastMM mit einbinden müssen. Ab D2006 ist das ja standard.

Beispiel findest du im Anhang.

Viele Grüße,
Peter
Angehängte Dateien
Dateityp: zip SelbstLoeschendeControls.zip (319,8 KB, 6x aufgerufen)
  Mit Zitat antworten Zitat