Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   SDI - Child Forms (https://www.delphipraxis.net/203932-sdi-child-forms.html)

Edelfix 8. Apr 2020 10:25

SDI - Child Forms
 
Hallo,

hat jemand ein Beispiel zum Thema SDI?
Wie aktiviere und deaktiviere ich Child Formen?

himitsu 8. Apr 2020 10:52

AW: SDI - Child Forms
 
Was meinst du mit aktivieren/deaktivieren
und was sind für dich ChildForms? (eingebettet in einer Anderen?)

Delphi-Quellcode:
EineForm.SetFocus;

Edelfix 9. Apr 2020 09:52

AW: SDI - Child Forms
 
Ich meine eine anwendung mit einer Main Form und alle anderen sind Child Formen.
Bedeutet das sie die Main Form als Parent haben. Zum Beispiel:

aForm := TDBAngeboteForm.Create(self);
aForm.BorderStyle := bsNone;
aForm.Parent := MainForm;
aForm.Align := alClient;
aForm.Show;

Wenn ich die Child Formen so starte dann wird onActivate der Child Formen nich ausgelöst. OnDeactivate auch nicht.
Beim switchen zwischen den Formen benötige ich aber die beiden Events.
Wie kann ich das manuell machen?

Edelfix 9. Apr 2020 10:13

AW: SDI - Child Forms
 
Update.

OnActivate feuert doch wenn ich die Child Form in Objektinspektor auf Visible True stelle.

Dafür feuert onShow zwei mal. Erste mal bei aForm := aForm := TCustomForm.Create(self); und das zweite mal bei aForm.Show.

Bin gerade ratlos.

Uwe Raabe 9. Apr 2020 12:11

AW: SDI - Child Forms
 
Zitat:

Zitat von Edelfix (Beitrag 1461692)
Ich meine eine anwendung mit einer Main Form und alle anderen sind Child Formen.
Bedeutet das sie die Main Form als Parent haben.

Ich denke, das ist schon vom Ansatz her falsch. Ein Form hat in der Regel keinen Parent, denn nur dann kann es als Form reagieren. Sobald ein (Child-)Form ein anderes (Main-)Form als Parent hat, ist es kein Top-Level Window mehr, mit all den damit verbundenen Konsequenzen. Es wird dann quasi zu einem Pseudo-Frame degradiert.

Du versuchst offenbar das MDI-Konzept mit nicht-MDI Forms nachzubilden. Das wird nicht funktionieren. Wenn du dein grundlegendes Bedienkonzept nicht von MDI lösen kannst oder willst, dann musst du eben bei MDI Forms bleiben und die dann geltenden Einschränkungen in Kauf nehmen.

Edelfix 9. Apr 2020 14:25

AW: SDI - Child Forms
 
Das ist eine Zwickmühle. MDI kann es nicht bleiben da es Ärger mit dem neuen „Theme“ macht.

Wie macht es „Word“?
Es war früher wohl auch ein MDI und das neue „Word“ nicht mehr.

Uwe Raabe 9. Apr 2020 14:57

AW: SDI - Child Forms
 
Word erzeugt für jedes Dokument ein eigenes, unabhängiges Form.

himitsu 10. Apr 2020 00:22

AW: SDI - Child Forms
 
Nein, OnActivate hat nichts mit Visible zu tun.
Rate mal, wofür OnShow sein könnte.

Wenn die Form "aktiv" wird, wird OnActivate ausgelöst, aber wenn sie so eingebettet ist, kann sie nie aktiv werten, da die Form dann ähnlich wie ein TPanel arbeitet.
Nur eine TopLevel-Form kann aktiv werden.


Lösung: Arbeite mit Frames und vergiss den Mist mit den eingebetteten Forms.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:11 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