![]() |
Keine Frames unter Firemonkey
Im Firemonkey-Sammelthread wurde es kurz angesprochen (Ja, ich habe die Suche verwendet), aber ich finde dieses Thema so Elementar, daß ich daraus einen eigenen Thread mache.
In Firemonkey gibt es keine Frames! Für mich, der Firemonkey klasse findet, ein herber Rückschlag. Ich verwende extensiv Frames. Nun wollte ich testweise ein VCL-Programm auf FMX umstellen, und nun das. Wird es für FMX irgendwann Frames geben? Wenn nein, dann wird von mir FMX bis auf weiteres ausgesetzt. |
AW: Keine Frames unter Firemonkey
Wieso sollte das Fehlen von Frames ein Problem sein?
Firemonkey basiert auf Composition, das heisst Du kannst im Prinzip alles was Du als Frame machen würdest als eigenes Control zusammenstellen. |
AW: Keine Frames unter Firemonkey
Zitat:
|
AW: Keine Frames unter Firemonkey
In vielen anderen Frameworks gibt es auch keine Frames, und man kommt dort auch zurecht.
Wieso? Weil man es auch gleich als Control realisieren kann. Du baust dir nen Custom Control und erstellst darauf, was du benötigst, wie bei 'nem Frame auch. Da ich XE2 nicht habe, kann ich allerdings wenig dazu sagen, inwiefern dir der Formdesigner bei der Gestaltung der Controls hilft. Aber hinterher das Draufpacken aufs Form dürfte unproblematisch sein. |
AW: Keine Frames unter Firemonkey
Zitat:
Problematisch wird es dann in der Praxis: Kann ich im Code die Elemente eines Styles noch per BindingName ansprechen, wird es spätestens beim Keyboard-Handling etwas ... unhandlich. |
AW: Keine Frames unter Firemonkey
Zitat:
Zitat:
Kommt noch erschwerend hinzu, daß es einfach keine Designer-Unterstützung für solche zusammengebastelten Controls gibt. Alles in allem ist das bei Weitem kein Ersatz für Frames. Wie es aussieht, kann man sich in XE2 mit FireMonkey von einem modularen Aufbau eines Forms in seiner bisherigen Inkarnation durch Frames wohl verabschieden. Bleibt nur (ohne es getestet zu haben), die "Frames" in eigenen FMX-Forms in einem Layout zu designen und dann das Layout zur Laufzeit in das Zielform zu transferieren. Eine eher halbherzige Lösung. Warten wir mal auf XE3. Übrigens: das mit den Styles habe ich nicht so richtig verstanden. Vielleicht könnte ja mal jemand ein konkretes Beispiel zeigen: Wie portiert man ein VCL-Frame, das eine Addresse mittels mehrerer Labels und Edits inklusive Eingabehilfen und Plausibilitätsprüfung bereitstellt nach FMX, so daß ich a) in einem Form mehrere Adressen bearbeiten kann (= mehrere "FMX-Frame"-Instanzen) b) in mehreren Forms dieses "FMX-Frame" verwenden kann Würde mich wirklich interessieren, wie man sowas macht. |
AW: Keine Frames unter Firemonkey
Ich besitze zwar Firemonkey nicht (XE2 getestet und für mich als noch nicht produktiv einsatzfähig befunden), aber sollte es nicht wie bei Delphi möglich sein, Forms in Forms einzubetten?
Ich weiss nicht mehr ob es Delphi5 war, als Frames eingeführt worden sind, jedenfalls waren Frames damals noch unbrauchbar, so dass ich vollständig auf den Einsatz von Frames verzichtet habe und stattdessen jeweils Forms in Panels, Pagecontrols, ... einbinde. Vermutlich funktionieren heute Frames in Delphi problemlos, doch mit meinem Ansatz von Form in Forms bin ich bis heute so gut gefahren, dass ich keinen Grund sehe Frames einzusetzen. |
AW: Keine Frames unter Firemonkey
Zitat:
|
AW: Keine Frames unter Firemonkey
Zitat:
|
AW: Keine Frames unter Firemonkey
OK. Bevor ich jedem einzeln antworte, mach ich das mal in einem Beitrag.
Weis nicht, ob ihr wirklich das Potential von Frames ausgenutzt habt. Wahrscheinlich kommen daher so aussagen wie "Braucht man nicht, in anderen Frameworks gibt's das ja auch nicht". Es geht nicht darum, ein Label und ein Edit auf ein Frame zu setzen und damit ein neues Control zu erzeugen. Es geht darum, komplexe Forms mit mehreren (Page-Control"-Seiten in logische Einheiten aufzuteilen und diese Einheiten dann zur Desingzeit in ein Form zusammen zu führen. Ich habe lieber 5 mittlere Units als eine Monsterunit. (Bitte jetzt nicht mit dem Argument kommen, ich solle mein Design mal überdenken). Weis nicht, ob das Form in Form zur Designzeit geht. Mit Frames geht das wunderbar. |
AW: Keine Frames unter Firemonkey
Zitat:
|
AW: Keine Frames unter Firemonkey
Zitat:
Mit den Styles allerdings bekommen wir Entwickler ein Konzept in die Hand, mit dem wir mehr als nur Farbe und Font eines Controls beeinflussen können: Im Prinzip ist es sogar egal, wie das Ausgangs-Control aussieht. Man kann über ein TLabel per Styles 10 Edit-Boxen bereit stellen und ein Memo-Feld lediglich zum Darstellen einer Grafik umstylen. Abseits dieser sinnfreien Verwendung habe ich z.B. in einer Zelle des StringGrids 2 Edit-Controls untergebracht. Hier musste ich allerdings vgScene beim Keyboard-Handling und beim Hittest in die Sourcen greifen, aber es funktioniert. Da Styles ja DFM-like nur Text-Definitionen sind, lässt sich das leicht übertragen. Nur mit DesignTime-Support ist da nichts, das passiert (bei mir) alles im Code (insbesondere das Lesen/Setzen der Syle-Controls via BindingName). Allerdings kann man ja Style-Dateien auch in der IDE nachladen, so dass einem die selbst-designten Control-Styles im Projekt und Formdesigner visuell zur Verfügung stehen. |
AW: Keine Frames unter Firemonkey
Moin,
ich habe auch immer überlegt, lieber Frames oder eine Form. Ich bin dazu übergegangen, lieber die Form mit ManualDock an eine PageControl zu heften. Das ist im Prinzip das gleiche Ergebnis wie bernau es oben beschrieben hat. Vor allem die Trennung in mehrere Units habe ich damit ebenfalls. Und mir bleibt noch die Möglichkeit, aus dem gedockten Form ganz schnell eine eigenständige zu machen... Ok, geht ja auch mit Frames, aber dann brauche ich doch wieder eine "Träger"-Form. VG Pixfreak |
AW: Keine Frames unter Firemonkey
Ich glaube dass wirlich 90% hier Frames mit Panels verwechseln. Richtig eingesetzt spart es einem irrsinnig Arbeit und hat nur sekundär etwas mit Layout zu tun.
|
AW: Keine Frames unter Firemonkey
Zitat:
|
AW: Keine Frames unter Firemonkey
Zitat:
|
AW: Keine Frames unter Firemonkey
Zitat:
|
AW: Keine Frames unter Firemonkey
Zitat:
Zitat:
|
AW: Keine Frames unter Firemonkey
Ich hoffe, dass ich nicht zu den 90% gezählt werde, die Frames mit Panels verwechseln.
Trotzdem stellt sich mir hier die Frage, welche Vorteile bieten Frames gegenüber Forms? So wie ich das beurteile: Vorteile Frames: - Einbettung zur Designzeit - Einfachere Kommunikation zwischen Form und Frame Nachteile Frames: - funktioniert nicht in Firemonkey - Keine Events wie OnCreate, OnDestroy, OnShow, OnHide, OnActivate, OnDeactivate oder OnKey... Vorteile Form: - Alle Events der Form vorhanden - Jederzeit einsetzbar Nachteile Form: - Kommunikation zwischen ParentForm und eingebetteter Form muss evtl über Interfaces gelöst werden - Einbettung erfolgt per Code Fazit für mich: ich verwende Forms in Forms |
AW: Keine Frames unter Firemonkey
Zitat:
|
AW: Keine Frames unter Firemonkey
Zitat:
Zitat:
|
AW: Keine Frames unter Firemonkey
Zitat:
Einfaches Beispiel: Meine Software kann man in einem großen Konfigurationsdialog alle Parameter des Programms einstellen. Dazu gibt es eine Form mit einem Pagecontrol. Auf jeder Page sitzt ein Frame. Auf jedem Frame werden die Eigenschaften eines Programmteils eingestellt. Ich habe aber auch die Möglichkeit aus jedem Programmteil den zuständigen Konfigurationsdialog mit einem Fenster und dem einen eingebettetetn, bereits in der Hauptkonfiguration verwendeten Frame aufzurufen. Damit kann der anwender genau den Programmbereich einstellen, in dem er sich befindet, ohne von den Einstelungsmöglichkeiten anderer Programmteile verwirrt zu werden. Ob nun großer Konfigurationsdialog oder kleiner Konfigurationsdialog, die OK/Abbruchbuttons sind auf der Trägerform. Würde ich keine Trägerform verwenden, dann müssten diese Buttons auf dem Frame (bzw. bei dir auf der Form) in der großen Konfiguration ausgeblendet werden. |
AW: Keine Frames unter Firemonkey
Zitat:
Wenn man eine Form hat, auf dem viele Controlls sind, diese auch gegenseitige Abhängigkeiten haben, dann muss die Logik leider auf das Form. Ist ja nicht so, daß wir alle nur Adressverwaltungen programmieren, bei dem einige DBEdit auf dem Form sitzen und einfach mit der Datenbank verknüpft werden. |
AW: Keine Frames unter Firemonkey
Zitat:
|
AW: Keine Frames unter Firemonkey
Zitat:
Fazit für mich: Die Vorteile von Frames überwiegen. ;-) |
AW: Keine Frames unter Firemonkey
Zitat:
Folgende Vorgabe: Ich habe eine Combobox. Je nachdem welcher Wert in dieser CB ausgewählt wird, wird eine zweite CB mit Daten gefüllt. Aus dieser wird wieder ein Eintrag ausgewählt. Je nach Wert wird eine dritte CB gefüllt und ggf. 3 weitere Edits eingeblendet. Diese Edits dürfen nur mit Zahlen gefüllt werden, di, je nachdem welcher Eintrag in der CB ausgewählt wurde, einen bestimmten Werteberreich nicht überschreiten darf. Das ist jetzt eine recht simple Vorgabe. Aber wo, wenn nicht innerhalb der Form soll diese Logik untergebracht werden. Ich lerne immer wieder gerne dazu. Erkläre es mir. |
AW: Keine Frames unter Firemonkey
Zitat:
90% von 7 = 6,3 Alle bis auf einen = 6 30% von einem = 0,3 6 + 0,3 = 6,3 An dem Wahrheitsgehalt dieser Größe wage ich allerdings zu zweifeln. |
AW: Keine Frames unter Firemonkey
Zitat:
![]() |
AW: Keine Frames unter Firemonkey
Zitat:
Das Schlimmste, was ich mal gesehen habe, waren Form- bzw. Control-Events, die in den Datenklassen implementiert und zur Laufzeit verdrahtet wurden. Wenn dort dann so Sachen wie CheckBoxClick oder EditChange auftauchen, läuft etwas so richtig verkehrt. |
AW: Keine Frames unter Firemonkey
Es kommt halt immer drauf an ob sich der Aufwand lohnt.
Bei einem Suchdialog von mir hab ich z.B. auch das MVC benutzt. Dort konnte man immer bestimmte Suchfilter einstellen, wobei die Views sich noch um Validierung gekümmert haben und die Daten danach per Controller an die Models übergeben wurden. Wobei ich dort manche Ereignisse noch über das Befehls-Pattern geregelt habe, weil ich dort z.B. über den Delete-Button vom View den View und das Model freigeben wollte. Damit es da aber keine Zugriffsverletzung gab, musste ich dafür sorgen das der Befehl erst ausgeführt wird, wenn der Zugriff auf dem View beendet wurde. Die Anwendungslogik selbst, also z.B. das Generieren des SQL-Befehls aus den Filtern, wurde dann nur mit den Models durchgeführt und fand völlig unabhägig von den Views statt. Also auch soweit wie möglich und soweit wie nötig alles voneinander getrennt :) MfG Alaitoc |
AW: Keine Frames unter Firemonkey
Zitat:
Zitat:
|
AW: Keine Frames unter Firemonkey
Zitat:
|
AW: Keine Frames unter Firemonkey
Zitat:
|
AW: Keine Frames unter Firemonkey
Zitat:
|
AW: Keine Frames unter Firemonkey
Also ich denke, statt jetzt in FMX Frames einzuführen, sollte Emba lieber Custom Controls vereinfachen :gruebel:
So einige Posts in diesem Thread sagen mir, dass es dafür immer noch keinen vernünftigen Support vom Formdesigner gibt. Aus dem Visual Studio kenne ich es, dass dort a) Man beim Erstellen des Controls selbst bereits den Designer nutzen kann (wie in D bei Frames) b) Erstellte Controls gleich in der Liste verfügbar sind (wie in D bei Frames) und deshalb braucht man dort keine Frames. Eben weil sich alles mit Custom Controls realisieren lässt. Ich habe Delphi nach der Turbo verlassen und weiß nicht, wie es mit dem Designer dort aussieht, aber ich bin einfach davon ausgegangen, dass der auch verbessert wurde :shock: Und nein, ich verwechsle Frames nicht mit Panels. Eine Designerverbesserung würde Frames gänzlich überflüssig machen. |
AW: Keine Frames unter Firemonkey
Zitat:
|
AW: Keine Frames unter Firemonkey
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:
Im Anhang befinden sich die Quellen, sowie eine Exe. DSharp muss man nicht in der IDE installieren, wenn die Units im Suchpfad liegen. |
AW: Keine Frames unter Firemonkey
Zitat:
Versteh mich nicht falsch. Mit reinen Delphi-Bordmitteln würde ich auch niemals so etwas umsetzen können. Aber die vorhandenen Frameworks bringen die anerkannten Design-Patterns halt auch in unsere Programmierwelt. Und - um mit strahlenden Siegern zu sprechen - das ist gut so. |
AW: Keine Frames unter Firemonkey
Zitat:
Theorie: Eingabelogik resp. Validierung ist doch immer ein Teil der Anwendungslogik. Praxis: genau eine GUI, eine Plattform, keine Unit-Tests, keine abstrakte Modularisierung und Programmierung nach RAD-Ansatz Motivation zur Änderung der Praxis: - testbarer Code, dann kommt der Rest von ganz allein (frei nach N.Hodge) |
AW: Keine Frames unter Firemonkey
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz