AGB  ·  Datenschutz  ·  Impressum  







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

MDI bei Firemonkey?

Ein Thema von sko1 · begonnen am 28. Apr 2017 · letzter Beitrag vom 28. Apr 2017
Antwort Antwort
sko1

Registriert seit: 27. Jan 2017
577 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

MDI bei Firemonkey?

  Alt 28. Apr 2017, 08:18
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
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: MDI bei Firemonkey?

  Alt 28. Apr 2017, 08:27
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.
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
577 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#3

AW: MDI bei Firemonkey?

  Alt 28. Apr 2017, 08:29
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
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: MDI bei Firemonkey?

  Alt 28. Apr 2017, 09:07
Mal auf die Schnelle in fünf Minuten zusammengebastelt:
Angehängte Dateien
Dateityp: zip EmbeddedFmx_2017-04-28_10-06-27.zip (6,1 KB, 15x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.126 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: MDI bei Firemonkey?

  Alt 28. Apr 2017, 09:29
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
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
577 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

AW: MDI bei Firemonkey?

  Alt 28. Apr 2017, 10:11
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

Geändert von sko1 (28. Apr 2017 um 12:13 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.479 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: MDI bei Firemonkey?

  Alt 28. Apr 2017, 15:21
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.
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
577 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#8

AW: MDI bei Firemonkey?

  Alt 28. Apr 2017, 15:58
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

Geändert von sko1 (28. Apr 2017 um 16:25 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
662 Beiträge
 
#9

AW: MDI bei Firemonkey?

  Alt 28. Apr 2017, 16:46
Du könntest auch folgendes probieren:

- anstatt .Free .Release aufrufen

oder

- .Close aufrufen und im OnClose des Formulars Action := caFree setzen
  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 03:36 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