Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Programmoberfläche dynamisch erzeugen (https://www.delphipraxis.net/99128-programmoberflaeche-dynamisch-erzeugen.html)

meisteralex 7. Sep 2007 09:32

Re: Programmoberfläche dynamisch erzeugen
 
wie würde ich denn nun am besten z.b. eine tabelle dynamisch erstellen lassen ?

SirThornberry 7. Sep 2007 09:34

Re: Programmoberfläche dynamisch erzeugen
 
mit welcher Komponente würdest du denn eine Tabelle darstellen wenn du es nicht dynamich machst? mit genau der gleichen solltest du es auch machen wenn es dynmich erzeugt wird.

bernau 7. Sep 2007 11:05

Re: Programmoberfläche dynamisch erzeugen
 
Zitat:

Zitat von SirThornberry
psst! Jemandem der damit anfängt Objekte zu erzeugen sollte gar nicht erst auf die Idee kommen etwas nicht frei zu geben.
Und es schadet ja nicht wenn er es frei gibt.

Ich stimme dir in dieser Beziehung vollkommen zu.

Ich wollte damit nur angeben, daß es möglich ist, daß das Objekt (TButton) an einer anderen Stelle freigegeben werden "kann" und man sich schon überlegen muss, wann man mit deiner Variante die Buttons freigibt. Sollte die andere Stelle "schneller" mit der Freigabe sein als du, dann läufst du mit deiner Variante in eine Exception. Wie gesagt, dein array bekommt einfach nicht mit, wenn die Buttens von einer anderen Stelle freigegeben werden. Wenn schon, dann solltes du bei der Freigabe dich überzeugen, daß der Zeiger in deinem array tatsächlich auf eine noch gültige instanz zeigt. (Einfach mit components und componentcount prüfen)

Teilweise ist es ja auch gewünscht, daß ein anderes Objekt sich um die Freigabe meiner manuell erzeugen Objekte kümmert. Siehe TObjectList mit "ownsobjects:=true". Würdest du dich dort auch um die Freigabe deiner erzeugten Objekte kümmern? Die gleiche Ausnahme sehe ich in Objekten vom Type TComponent. Wenn ich einen Owner angebe, dann weiss ich, dass ich die Kontrolle abgeben kann.



Gerd

bernau 7. Sep 2007 11:09

Re: Programmoberfläche dynamisch erzeugen
 
Zitat:

Zitat von mkinzler
Dann aber FreeAndNil()

Das ist im Falle von SirThornberry code eingendlich egal. Mit FreeAndNil wird lediglich der Zeiger im Array auf nil gesetzt. Das Array setzt er aber mit setlength auf die Größe 0, nachdem er alle objekte freigegeben hat.

Gerd


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:35 Uhr.
Seite 2 von 2     12   

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