Vielen Dank, Christian und Thomas, für die genaue Beratung. Man wird immer
schlauer (die Funktion IndexOf war bisher echt an mir vorbeigegangen).
Also: Dachte ich es mir doch, dass man an die programm-eigene Enumeration
der Fenster herankommt.
Aber ein eigenes Array FensterArr() brauche ich wohl doch. Ich weiß sonst
nicht, wie ich während des Programmlaufs per Code ein neues Fenster erzeugen
kann. Christian Dorn hat ganz Recht: Als Identifier meines neuen Fensters
dürfte ich natürlich nicht die Index-Position im Array nehmen, weil sich die
ja bei jedem Löschvorgang verändert. Also müsste man hier eine Art unique ID
verwenden, wie in einer Datenbank.
Aber auch dieser Identifier ist wohl kaum nötig, denn das einzelne Fenster
arbeitet ja weitgehend autonom und muss von außen eigentlich nicht
angesprochen werden. Wenn das Fenster selbst etwas von außen braucht (z.B.
gemeinsamer Code in einem Modul), kann man das als Funktion mit Rückgabewert
erledigen.
Falls ich noch 'was übersehen habe, bitte mich zu verbessern.
besten Dank und besten Gruß, Christian Hahn.
----- Original Message -----
From: "Thomas Tempelmann" <[email protected]>
To: "Realbasic NUG German" <[email protected]>
Sent: Tuesday, July 30, 2013 9:17 AM
Subject: Re: Window1 mehrfach instanziieren
2013/7/30 Maximilian Tyrtania <[email protected]>:
Das Fenster überlebt im Speicher, weil Du eine Referenz im Array
gespeichert hast und der refcount nicht 0 erreicht
Ich glaube, daß jemand aber schon schrieb, daß man die Einträge aus
dem Array entfernen soll, sobald des Fenster's Close-Event aufgerufen
wird.
Man kann es stattdessen aber auch mit WeakRefs ins Array lösen.
Also statt:
FensterArr.Append New Window1
Eher so:
dim w as New Window1
FensterArr.Append new WeakRef(w)
Beim Abfrage des Arrays würde man dann so vorgehen:
dim ref as WeakRef = FensterArr(idx)
if ref.Value = 0 then
// Fenster wurde durch "Close" geschlossen
FensterArr.Remove idx // aus Array entfernen
else
dim w as Window1 = Window1(ref.Value)
… jetzt haben wir das Fenster
end
Oder so.
Dennoch, meine vorige Lösung ist imer noch die bessere.
--
Thomas Tempelmann, http://www.tempel.org/
Follow me on Twitter: http://twitter.com/#!/tempelorg