Einzelnen Beitrag anzeigen

torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#1

Dynamisch erstellte Formulare wieder freigeben

  Alt 16. Jun 2011, 19:25
Delphi-Version: 7
Hallo Wissende,

mit folgendem Code erstelle ich dynamisch SubForms auf einer Scrollbox.

Delphi-Quellcode:
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;
Bisher habe ich auf dem Panel, welches schon fertig exitsiert, nur eben zur Laufzeit mehrfach auf der Scrollbox erzeugt werden muss, immer mit

Self.close; freigegeben. Der Button, der diesen Code aufruft, liegt auf dem Form selbst.

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?
Danke
Tom
  Mit Zitat antworten Zitat