Am 29.07.2013 um 22:29 schrieb Christian Dorn <[email protected]>:

> 
> Am 29.07.2013 um 09:40 schrieb Christian Hahn:
> 
>>> Toll, besten Dank.
>>> Ich habe es nun mit einem Array so eingerichtet, dass ich auch während des 
>>> Programm-Laufs weitere Instanzen von Window1 erzeugen kann:
>>> in App: FensterArr() as Window1
>>> Sub NeuesFensterBilden
>>>  FensterArr.Append New Window1
>>>  FensterArr(UBound(FensterArr)).Title = "Fenster: " + 
>>> str(UBound(FensterArr))
>>>  FensterArr(UBound(FensterArr)).MeinePositionImArray = UBound(FensterArr)
>>> 
>>> Wenn das Fenster geschlossen wird, kann mit der fenstereigenen Propertie 
>>> MeinePositioImArray das entsprechende Element in FensterArr() wieder 
>>> entfernt werden.
> 
> 
> Grundsätzlich kannst Du natürlich auch ein Array verwenden. Aber die 
> Eigenschaft ".MeinePositionImArray" kann nicht funktionieren! Stell Dir mal 
> vor, Du hast ein Array mit 5 Elementen (Fenstern). Jetzt schließt Du das 
> zweite Fenster (.MeinePositionImArray = 1). Was passiert dann mit den 
> Fenstern 3-5?
> 
> Deren Eigenschaft "MeinePositionImArray" zeigt dann plötzlich auf ein 
> falsches Element im Array!

Nein, nur weil man das Fenster schliesst heisst das noch lange nicht, dass es 
aus dem Array verschwindet. Das Array kann sehr wohl auch Referenzen auf 
geschlossene Fenster beinhalten. Das Fenster überlebt im Speicher, weil Du eine 
Referenz im Array gespeichert hast und der refcount nicht 0 erreicht. Ist 
natürlich eigentlich wiederum kaum gewollt, deswegen ist der von TT angegebene 
Weg mit der Window()-Funktion richtig.

Maximilian Tyrtania
http://www.contactking.de





Antwort per Email an