![]() |
Delphi-Version: 7
Dynamisch erstellte Formulare wieder freigeben
Hallo Wissende,
mit folgendem Code erstelle ich dynamisch SubForms auf einer Scrollbox.
Delphi-Quellcode:
Bisher habe ich auf dem Panel, welches schon fertig exitsiert, nur eben zur Laufzeit mehrfach auf der Scrollbox erzeugt werden muss, immer mit
procedure TForm1.list_playersDblClick(Sender: TObject);
var dt_pan : Tdt_panel; begin if list_players.ItemIndex >= 0 then with list_players.Items.Objects[list_players.ItemIndex] as TPlayerData do begin dt_pan := Tdt_panel.Create(form1); dt_panel.PlayerId := Id; dt_pan.Parent := sc_box; dt_pan.Align := alTop; dt_pan.Visible := true; dt_pan.parseXMl_2_DataPanel(Name, XML_EV_Players.ChildNodes[1].ChildNodes,Idx); end; end;
Delphi-Quellcode:
freigegeben. Der Button, der diesen Code aufruft, liegt auf dem Form selbst.
Self.close;
Nun muss ich aber das jeweilige Form zerstören. Wenn ich Self.Free aufrufe, passiert entweder gar nix, oder aber ich erhalte eine Exception mit div. SpeicherAdressen, die mir nicht weiterhelfen. Liegt es daran, dass der Button den Tod seines Parents aufruft und sich der Code selbst dabei überholt? Wenn ich das Form vom MainForm aus freigebe, ist alles supi. Deshalb habe ich versucht, diese Routine (des MainForms) vom SubForm aus aufzurufen. Ich glaube aber, aufgrund weiterer Fehlermeldungen, dass das noch nicht des Rätsels Lösung ist. Was ist Ursache für dieses Problem und wie kann ich es fixen? |
AW: Dynamisch erstellte Formulare wieder freigeben
Du musst durch die Components-Collection steppen und überprüfen, ob die Objekte vom entsprechende Typ ist und diese dann Freigeben
|
AW: Dynamisch erstellte Formulare wieder freigeben
Eine Form wird mit Form.Release freigegeben.
|
AW: Dynamisch erstellte Formulare wieder freigeben
Zitat:
Du könntest beim Klick auf den Schließen-Button (der Teil der Klasse Tdt_panel ist, nehme ich an) lediglich ein Flag setzen (KannGeloeschtWerden:=true) und das MainForm mit SendMessage benachrichtigen dass ein Panel gelöscht werden soll. Das MainForm geht dann die Panels durch und löscht die mit dem Flag. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:17 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