AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ParentForm soll ChildForm nicht löschen

Ein Thema von CGEu · begonnen am 15. Feb 2011 · letzter Beitrag vom 15. Feb 2011
Antwort Antwort
CGEu

Registriert seit: 20. Mai 2010
Ort: Bayern
14 Beiträge
 
Delphi 10.3 Rio
 
#1

AW: ParentForm soll ChildForm nicht löschen

  Alt 15. Feb 2011, 15:09
@TBx: das mit Parent auf nil setzen mach ich schon, hat aber nichts mit dem Problem zu tun.

@Bernhard: das ChildForm hat die MainForm als Owner (da automatisch bei Progammstart erzeugt von Delphi)

Ok, zur Verdeutlichung mal etwas ausführlicher. Wenn ich auf der MainForm auf einen Button klicke, wird das ParentForm erzeugt. Dieses wiederrum soll unter anderem das ChildForm beinhalten / anzeigen. Das ChildForm wird aber nicht wie das ParentForm mit .Create() erzeugt, sondern ist schon vorhanden.

Delphi-Quellcode:
procedure TfrmMain.ButtonShowClick()
begin
  frmParent := TfrmParent.Create(Self);
  frmParent.Parent := Self;
  ...
  frmParent.Show;
end;

procedure TfrmMain.ButtonCloseClick()
begin
  frmParent.Close;
  frmParent.Release;
  frmParent := nil;
end;

var
  FChild : TfrmChild;

procedure TfrmParent.FormShow()
begin
  FChild := frmChild;
  FChild.Parent := Self;
  FChild.Align := alClient;
  FChild.BorderStyle =: bsNone;
  FChild.Show;
end;

procedure TfrmParent.FormDestroy()
begin
  FChild := nil;
end;
  Mit Zitat antworten Zitat
WM_CLOSE

Registriert seit: 12. Mai 2010
Ort: königsbronn
398 Beiträge
 
RAD-Studio 2009 Pro
 
#2

AW: ParentForm soll ChildForm nicht löschen

  Alt 15. Feb 2011, 15:16
Vielleicht mal anstatt OnDestroy OnBeforeDestroy verwenden. Vielleicht klappt es dann.

Oder vielleicht OnClose, denn schließlich schiebst du das frmChild im OnShow auf das parentForm

[edit]
Ich sehe gerade es gibt kein OnBeforeClose
Dann eben doch OnClose
[/edit]

Grund: TComponent (von dem ist TForm abgeleitet) zerstör alle childControls, bevor OnDestroy aufgerufen wird.

Geändert von WM_CLOSE (15. Feb 2011 um 15:23 Uhr)
  Mit Zitat antworten Zitat
blauweiss

Registriert seit: 19. Jun 2007
142 Beiträge
 
#3

AW: ParentForm soll ChildForm nicht löschen

  Alt 15. Feb 2011, 15:34
@TBx: das mit Parent auf nil setzen mach ich schon, hat aber nichts mit dem Problem zu tun.
Hallo CGEu,

und wann bzw. wo machst Du das ? In Deinem Code steht nichts davon, oder habe ich's übersehen...?
Fehlt da nicht etwas in der Art:
Delphi-Quellcode:
procedure TfrmParent.FormDestroy()
begin
  FChild.Parent := nil;
// FChild := nil; <- wozu das ??
end;
Gruß
blauweiss
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#4

AW: ParentForm soll ChildForm nicht löschen

  Alt 15. Feb 2011, 15:46
Den Create-Aufruf den Child würde ich gerne mal sehen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
David Martens

Registriert seit: 29. Sep 2003
205 Beiträge
 
Delphi XE Enterprise
 
#5

AW: ParentForm soll ChildForm nicht löschen

  Alt 15. Feb 2011, 15:55
Wie schon gesagt dann erstelle doch die "ChildForm" im MainForm mit owner und parent = MainForm.

Jetzt kannst du:
1. die ChildForm anzeigen und verstecken wie du willst, ohne ParentForm
oder
2. ParentForm erstellen owner und parent auf ParentForm setzen und anzeigen und dann VOR den ParentForm.destroy wieder auf MainForm setzen.


Allerdings finde ich Variante 1 viel besser. Du brauchst doch die ParentForm garnicht.

Gruß David
  Mit Zitat antworten Zitat
CGEu

Registriert seit: 20. Mai 2010
Ort: Bayern
14 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: ParentForm soll ChildForm nicht löschen

  Alt 15. Feb 2011, 15:51


@blausweis & TBX: Danke das ihr so hartnäckig mit dem NIL gewesen seid.

Natürlich muss es FChild.Parent := nil sein, und nicht FChild := nil !!!

Kaum macht man´s richtig, ...

@DeddyH: Es gibt keinen Create Aufruf von mir, da ja Delphi die ChildForm automatisch erzeugt.

Thx
Christian
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:06 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