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/)
-   -   Delphi FMX Formular in VCL-Anwendung einbetten (https://www.delphipraxis.net/202456-fmx-formular-vcl-anwendung-einbetten.html)

Andreas L. 6. Nov 2019 11:54

FMX Formular in VCL-Anwendung einbetten
 
Hallo,
ich habe das Control TFireMonkeyContainer im Internet gefunden. Damit ist es möglich ein Firemonkey-Formular oder Frame in einem VCL-Formular einzubetten. Das FMX-Formular und dessen Controls können nach belieben gestylt werden und lässt sich auch via Code ganz normal steuern und verwenden. Das funktioniert scheinbar ziemlich gut.

Jetzt wollte ich wissen: Ist das eine gute Idee, schlechtes App-Design, Fehleranfällig, ein totales No-Go... Was meint ihr dazu?

Andreas L. 6. Nov 2019 12:21

AW: FMX Formular in VCL-Anwendung einbetten
 
Ich habe es so eben geschafft ein VCL-Form in ein FMX-Projekt ein zu binden. Das Form lies sich problemlos via Form.Show; aufrufen.

Selbe Frage wie im ersten Post: Ist das sinnvoll oder fehleranfällig?

Der schöne Günther 6. Nov 2019 12:26

AW: FMX Formular in VCL-Anwendung einbetten
 
Das kann man glaube ich nur beantworten wenn du mehr Infos über das Wie gibst.

Andreas L. 6. Nov 2019 13:14

AW: FMX Formular in VCL-Anwendung einbetten
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1450844)
Das kann man glaube ich nur beantworten wenn du mehr Infos über das Wie gibst.

Ich hab erst ein ganz normales VCL-Form erstellt. Danach ein FMX-Anwendung. Im Projekt-Explorer habe ich dann via Rechtsklick->Hinzufügen... das VCL-Form dem FMX-Projekt hinzugefügt. Delphi zeigt dann eine Warnung an das das Modul nicht geeignet wäre und das vielleicht Fehler auftreten können. Die Meldung habe ich mit OK bestätigt. Jetzt war das Form im Projekt und ich konnte es in einem FMX-Formular via Uses einbinden und dann in einem Button-Click-Event einfach Form2.Show; aufrufen. Ganz einfach...

Harry Stahl 6. Nov 2019 22:12

AW: FMX Formular in VCL-Anwendung einbetten
 
Also diese Mixerei ist nicht ganz so einfach, früher oder später wirst Du da mal auf irgendwelche Probleme stoßen...

Wenn Du es unbedingt machen willst, würde ich das Hydra-Framework nutzen, das habe ich mal eine zeitlang verwendet, weil es Anfangs noch keine PDF-Anzeige Möglichkeit für FMX gab. Das FrameWork hat recht zuverlässig funktioniert, kostet aber und ist auch nicht ganz so einfach:

https://hydra.remobjects.com/hydra/tour.aspx

Dazu hatte ich mal ein kurzes Video gedreht: https://www.youtube.com/watch?v=0K8mEzDmlaM

Besser fände ich aber eine eigene FMX-DLL zu machen und die benötigte Funktionalität aus der DLL aufzurufen.
Dazu habe ich in meinem Blog mal was geschrieben (Beitrag 7 : https://www.devpage.de/blog/firemonkey.htm) und auch ein kurzes Video dazu gedreht: https://www.youtube.com/watch?v=MnqPmX3yJBM

Noch ne Variante, die auch zuverlässig funktioniert, ist eine ganze FMX.Exe in das eigene VCL-Programm einzubetten, auch dazu gibts ein Video (https://www.youtube.com/watch?v=kqOnZn_sHUI) und einen Blogbeitrag (Nr. 14) mit dem Source.

Inzwischen finde ich aber die allerbeste Lösung ist, ALLES mit FMX zu machen, neue Projekte fange ich nur noch mit FMX an, eine Reihe von VCL-Projekte habe ich nach FMX konvertiert (ist aber viel Arbeit), einige führe ich weiter (um nicht ganz aus der Übung zu kommen...:wink:).

Andreas L. 9. Nov 2019 13:14

AW: FMX Formular in VCL-Anwendung einbetten
 
Hi Harry,
danke für deine Antwort.

Zitat:

Zitat von Harry Stahl (Beitrag 1450880)
Also diese Mixerei ist nicht ganz so einfach, früher oder später wirst Du da mal auf irgendwelche Probleme stoßen...

Welche Probleme könnten da z. B. auftreten?

Zitat:

Wenn Du es unbedingt machen willst, würde ich das Hydra-Framework nutzen, das habe ich mal eine zeitlang verwendet, weil es Anfangs noch keine PDF-Anzeige Möglichkeit für FMX gab. Das FrameWork hat recht zuverlässig funktioniert, kostet aber und ist auch nicht ganz so einfach:

https://hydra.remobjects.com/hydra/tour.aspx

Dazu hatte ich mal ein kurzes Video gedreht: https://www.youtube.com/watch?v=0K8mEzDmlaM
Das Hydra-Framework macht einen guten Eindruck. Leider kann ich es mir nicht leisten.

Zitat:

Besser fände ich aber eine eigene FMX-DLL zu machen und die benötigte Funktionalität aus der DLL aufzurufen.
Dazu habe ich in meinem Blog mal was geschrieben (Beitrag 7 : https://www.devpage.de/blog/firemonkey.htm) und auch ein kurzes Video dazu gedreht: https://www.youtube.com/watch?v=MnqPmX3yJBM
Also sozusagen eine DLL die ein FMX-Form enthält das dann zur Laufzeit in das VCL-Programm geladen wird?

Zitat:

Noch ne Variante, die auch zuverlässig funktioniert, ist eine ganze FMX.Exe in das eigene VCL-Programm einzubetten, auch dazu gibts ein Video (https://www.youtube.com/watch?v=kqOnZn_sHUI) und einen Blogbeitrag (Nr. 14) mit dem Source.

Das Firemonkey-Form hat ein Handle das ich nutzen kann um das ganze Form in eine VCL-Anwendung einzubetten. Z. B. auf einer ScrollBox. Damit habe ich schon experimentiert. Leider haben die Controls auf der Form kein Handle. Aber der umgekehrte Weg wäre für mich viel besser: Ein VCL-Control in eine Firemonkey-App einbetten. Leider kann ich das VCL-Form oder Control nur auf das FMX-Form platzieren und nicht auf anderen FMX-Controls weil wie gesagt diese kein Handle haben. Hast du noch eine Idee wie das klappen könnte? Also VCL-Form/-Control in einem FMX-Control z. B. Panel einbinden? Mir fällt nur ein das VCL-Form ohne Border anzuzeigen und via Koordinaten über das FMX-Form/-Control zu platzieren. Aber das scheint mir sehr unsauber...

Zitat:

Inzwischen finde ich aber die allerbeste Lösung ist, ALLES mit FMX zu machen, neue Projekte fange ich nur noch mit FMX an, eine Reihe von VCL-Projekte habe ich nach FMX konvertiert (ist aber viel Arbeit), einige führe ich weiter (um nicht ganz aus der Übung zu kommen...:wink:).
Ich möchte auch neue Projekte mit Firemonkey beginnen. Es bietet einfach viel mehr Möglichkeiten eine Anwendung zu designen. Aber ich brauche in meinem Projekt unbedingt eine Code-Editor-Komponente wie SynEdit (siehe meine anderen Post). Du kennst nicht zufällig so ein Control oder hast eine andere Idee dazu?

Harry Stahl 9. Nov 2019 20:13

AW: FMX Formular in VCL-Anwendung einbetten
 
Zitat:

Zitat von Andreas L. (Beitrag 1451055)
Hi Harry,
danke für deine Antwort.

1- Welche Probleme könnten da z. B. auftreten?
2- Also sozusagen eine DLL die ein FMX-Form enthält das dann zur Laufzeit in das VCL-Programm geladen wird?
3- Aber das scheint mir sehr unsauber...
4- ich brauche in meinem Projekt unbedingt eine Code-Editor-Komponente wie SynEdit

1- Mal abgesehen von Konflikten mit gleichen Variablen-Namen, Unterschiede, ob zuerst Windows-Units oder FMX-Units irgendwo eingebunden sind, zusätzlicher Speicherbedarf, insgesamt unsicheres Gesamtverhalten.

2- Ja, genau

3- Das sehe ich auch so...

4- SnyEdit ist natürlich schon sehr mächtig. Brauchst Du davon wirklich alles? Ansonsten könnte evlt. das hier reichen?

https://www.tmssoftware.com/site/tms...xmemo#features


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