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?