Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   MDI bei Firemonkey? (https://www.delphipraxis.net/192542-mdi-bei-firemonkey.html)

sko1 28. Apr 2017 08:18

MDI bei Firemonkey?
 
Hallo,

ich habe ein bestehendes Projekt, welches aus 'zig Formularen besteht.
MainForm ruft Form2, diese Form3 usw. auf, das jeweils aufrufende Formular wird dabei unsichtbar gemacht, es ist also nur das aufgerufene Formular sichtbar.

Bei Andriod passen sich ja alle Formulare der Bildschirmgröße an, unter Windows habe ich dann sehr unschöne verschieden große Formulare.

Meine Idee war als erstes alle Unterformulare in Frames umzubauen, dabei habe ich aber feststellen müssen, dass das mit seehr viel Arbeit verbunden ist!

Nächste Idee war MDI-Anwendung, geht aber scheinbar mit Firemonken Windows/Android-Anwendung nicht.

Dritte Variante Unterformular erzeugen und Parent auf Hauptform setzen, das gibt zwar keine Compilerfehler, funktioniert aber nicht, es wird ein neues, von Mainform unabhängiges Formular angezeigt!

Hat jemand eine Idee wie ich das bestehende Projekt so umstellen kann, dass für den Anwender nur ein Mainform besteht dessen Inhalt in Unterform1, Unterform2, ... wechselt?

Danke

Ciao
Stefan

TiGü 28. Apr 2017 08:27

AW: MDI bei Firemonkey?
 
Eine Möglichkeit wäre die Unterformulare ins Hauptformular einzubetten.
So hast du das Hauptformular immer als Überrahmen/Container und die einzelnen Unterformulare sind Unterelemente davon.

sko1 28. Apr 2017 08:29

AW: MDI bei Firemonkey?
 
Zitat:

Eine Möglichkeit wäre die Unterformulare ins Hauptformular einzubetten.
Ja und wie mach ich das?

Createn und Mainform als Parent zuweisen funktioniert ja nicht!

Ciao
Stefan

TiGü 28. Apr 2017 09:07

AW: MDI bei Firemonkey?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Mal auf die Schnelle in fünf Minuten zusammengebastelt:

Mavarik 28. Apr 2017 09:29

AW: MDI bei Firemonkey?
 
Zitat:

Zitat von sko1 (Beitrag 1369349)
Hat jemand eine Idee wie ich das bestehende Projekt so umstellen kann, dass für den Anwender nur ein Mainform besteht dessen Inhalt in Unterform1, Unterform2, ... wechselt?

Also ich mache das seit dem 1. Tag mit Firemonkey so, weil wie Du richtig sagst, Formulare auf iOS & Android Fullscreen sind auf Windows nicht...

Ich habe mir einen kleinen Window-Handler geschrieben. Jedes Form hat als erstes ein TLayout drauf und wenn ich das Fenster in einem Container (MainForm) darstellen will, dann erhalt dieses: TLayout.Parent := MainForm.Layout. GGF. Muss ich - falls da schon ein Form liegt, natürlich diesen Parent erst auf NIL setzen.

So kann ich auch ganz einfach Forms ausdocken(Windows). Einfach ein Dockfenster erzeugen und den Parent setzen, fertig.

Mavarik

sko1 28. Apr 2017 10:11

AW: MDI bei Firemonkey?
 
Zitat:

Zitat von TiGü (Beitrag 1369352)
Mal auf die Schnelle in fünf Minuten zusammengebastelt:

Nach Entpacken hagelt es Fehlermeldungen, pas Dateien nicht gefunden!

Ciao
Stefan

Nachtrag:
Projekt umgestellt, läuft, aber:

Ich möchte die Unterformulare jedes mal Createn (unter verfügbare Formulare im Projekt), das funktioniert, jedoch wenn ich im Unterformular einen Button mit Self.Free einbaue, verschwindet das Unterformular aber das Hauptfenster und das Programm lässt sich nicht mehr mit "X" schließen!

Edit2:
Auf der Unterform habe ich einen Button der diese Free'd.

Danach sind die Minimieren/Maximieren/Schließen Buttons von FormMain inaktiv, warum?
Ein Button auf FormMain mit Close beendet das Programm ohne Probleme.

Ciao
Stefan

Harry Stahl 28. Apr 2017 15:21

AW: MDI bei Firemonkey?
 
Wenn der Button Teil des Unterformulars ist und der Button-Click das Formular zerstört, dann wird er auch alle darin liegenden Objekte zerstören, also auch den Button.

Das System hat dann keinen Rückspringpunkt mehr für das Button-Event und hängt dann (teilweise).

Du musst das Schließen innerhalb des Unterformulars entweder mit Botschaften regeln oder von außerhalb des zu zerstörenden Formulars antriggern.

sko1 28. Apr 2017 15:58

AW: MDI bei Firemonkey?
 
Danke für den Hinweis!

Ich dachte das das keine Probleme bereiten könnte, denn bisher (mit den getrennten Formularen) zerstöre ich ja auch innerhalb des Formulars durch einen auf dem Formular liegenden Button.

Also ala

FreeAndNil(UnterForm)
Hauptform.Activate

Dann muss ich mir mal was ausdenken, wie ich dem aufrufenden Form mitteilen kann dass es sein Unterformular aus den Layout entfernen und zerstören kann.

Ciao
Stefan

Olli73 28. Apr 2017 16:46

AW: MDI bei Firemonkey?
 
Du könntest auch folgendes probieren:

- anstatt
Delphi-Quellcode:
.Free
Delphi-Quellcode:
.Release
aufrufen

oder

-
Delphi-Quellcode:
.Close
aufrufen und im OnClose des Formulars
Delphi-Quellcode:
Action := caFree
setzen


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