Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Parent wird bei Form2.Create gelöscht (https://www.delphipraxis.net/206076-parent-wird-bei-form2-create-geloescht.html)

ernschd 17. Nov 2020 10:52

Parent wird bei Form2.Create gelöscht
 
Hallo,

seit einer Layout-Änderung hat mein Programm einen merkwürdigen Fehler. Ich habe ein Panel in Form2 hinzugefügt und dort vorhandene Komponenten reingezogen. Auf Form1 öffne ich in einem OnEnter-Event eine Kalender-Komponente (Parent dieser Komponente ist TScrollBox).

Das ganze funktioniert auch wie gewünscht, bis ich Form2 aufrufe:
Delphi-Quellcode:
if NOT Assigned(Form2) then
  Form2 := TForm2.Create(Self);
Form2.Show;
Form2.WindowState := wsNormal;
Sobald ich mit dem Debugger dort rein gehe, ist Form1.Kalender.Parent leer - zumindest die Eigenschaft Name - und mein Kalender wird danach nicht mehr angezeigt (Form1.Kalender.Showing ist false). FormCreate ist die Standard-Methode, keine überladene oder eigene.

Mein Workaround funktioniert auch nicht:
Delphi-Quellcode:
if (Kalender.Parent <> ScrollBox1) then begin
  RemoveControl(Kalender);
  ScrollBox1.InsertControl(Kalender);
end;
Form1.Kalender.Showing ist dann zwar nicht mehr false, aber der Kalender ist nicht sichtbar.
Die Positionsangaben setze ich zur Sicherheit ebenfalls neu.

Hat irgendjemand eine Idee, woran es liegen könnte? Der Aufruf anderer Formulare funktioniert wie gewohnt.

Ich bedanke mich im Voraus.

dataspider 17. Nov 2020 11:33

AW: Parent wird bei Form2.Create gelöscht
 
Zitat:

Zitat von ernschd (Beitrag 1477396)
Ich habe ein Panel in Form2 hinzugefügt und dort vorhandene Komponenten reingezogen.

Mit der Maus? Das geht nicht... Strg+X, Strg+V

Frank

ernschd 17. Nov 2020 11:36

AW: Parent wird bei Form2.Create gelöscht
 
Nein, schon mit STRG+X und STRG+V.

dataspider 17. Nov 2020 12:32

AW: Parent wird bei Form2.Create gelöscht
 
Und wenn du das Panel bewegst, bewegen sich die Komponenten mit, das hast du sicher getestet.

Dann wäre ein Einblick in die pas + dfm hilfreich.
Kannst du die anhängen?

Frank

ernschd 17. Nov 2020 13:51

AW: Parent wird bei Form2.Create gelöscht
 
Die Komponenten sind sicher in dem Panel, das ist auch in der Strukturansicht zu sehen.
Leider kann ich keinen Code aus dem Programm hier posten (Geschäftsrichtlinie).

In einem Beispielprogramm mit identischen Komponenten funktioniert es natürlich.

hoika 17. Nov 2020 14:41

AW: Parent wird bei Form2.Create gelöscht
 
Hallo,
Delphi-Quellcode:
Form2.Show;
Form2.WindowState := wsNormal;
Das darfst du nicht machen.
Das Ändern des WindowState erzeugt intern ein neues (Windows-) Fenster-Handle (so war das zumindestens früher).

Warum nicht so?
Delphi-Quellcode:
Form2.WindowState := wsNormal;
Form2.Show;

himitsu 17. Nov 2020 21:41

AW: Parent wird bei Form2.Create gelöscht
 
Außerdem in der DFM (Properties) der TForm2 darf Visible nicht auf True stehen.

Früher (vor über 15 Jahren) war das standardmäßig mal auf True ... also bei alten Units/Forms eventuell immernoch.

ernschd 19. Nov 2020 10:40

AW: Parent wird bei Form2.Create gelöscht
 
Hab den Fehler gefunden: ich habe einem TileBarItem-Control von Devexpress mein Kalender-Control als Detail-Control zugewiesen (nicht absichtlich).

Manchmal macht man vielleicht Blödsinn... :stupid:

Danke an alle für die Vorschläge.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:27 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz