Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   TMS FNC vs. FMX (https://www.delphipraxis.net/194151-tms-fnc-vs-fmx.html)

Rollo62 23. Okt 2017 07:14

TMS FNC vs. FMX
 
Hallo zusammen,

da ich die meiste Zeit mit UI-Problemen verbringe statt sich um Sinnvolleres zu kümmern
habe ich mir das FNC mal näher angeschaut, und frage mich ob es Sinn macht dahin zu wechseln ?

Vorteile:
- womöglich besserer, einheitlicher Zugriff
- größere "Nähe" zu VCL
- womöglich fehlerfreier und besser gepflegt als FMX
- auf Colors, Styles, Bitmaps "kann" man zugreifen und diese wie gewohnt benutzen
- läuft wirklich überall (auch Lazarus)
- zusätzlicher Support von Dritthersteller
- scheint stark an VCL-Desktop orientiert zu sein (Vorteil wenn man Desktop Apps baut)
- deckt einen größeren, sinnvolleren Bereich ab als FMX (RichView, Planner, Spreadsheet, etc.)

Nachteile:
- FNC scheint ein kompletter "rewrite" der FMX Funktionen zu sein, wird FMX also kaum verwenden (also eine "Parallelwelt"))
- ich denke nur wenig von FMX-Controls ist damit zusammen integriert
- Integration in das FMX-Style-System ist wohl nicht vorgesehen
- auf Colors, Styles, Bitmaps "muss" man zugreifen und muss diese auch separat einstellen (keine Styles)
- weitere Abhängigkeit von Dritthersteller
- scheint stark an VCL-Desktop orientiert zu sein (Nachteil wenn man iOS/Android Apps baut)
- Unklar ob die Komponenten in der Praxis vollständig sind (z.B. RichView hat nur einige Funktionen)

Also meine Einschätzung wäre: Wenn ich VCL-Desktop ähnliche Apps machen will, dann ist das eine Überlegung Wert.
Wenn ich auch mobile Plattformen gehe wäre die Darstellung vieler Komponenten nicht so sinnvoll (Spreadsheet, ...).

Hat das vielleicht schon jemand im praktischen Einsatz bei etwas größeren Projekten und kann dazu raten (oder davon abraten) für Desktop und Mobile ?

Rollo

Sherlock 23. Okt 2017 07:47

AW: TMS FNC vs. FMX
 
Die FNC decken nicht alle FMX oder VCL Komponenten ab. Der Vorteil von FNC ist "lediglich", daß sie sowohl in VCL als auch FMX zur Verfügung stehen. Es ist somit keine Entweder FNC oder FMX Entscheidung, sondern eher eine Entscheidung, ob man dafür Geld ausgeben möchte oder nicht.

Sherlock

Rollo62 23. Okt 2017 08:25

AW: TMS FNC vs. FMX
 
Hallo Sherlok,

dankesehr für deine Einschätzung.
Mit geht es mehr darum ob die Basis-Komponenten sauber funktionieren, und das ist bei FMX nihct immer def Fall.

Z.B. solche Dine wie TAlignLayout.Client zentriert nicht immer mittig, TLine.Stroke.Thickness sieht auf allen Platformen anders aus, Probleme mit Styles, Probleme mit Memo/Edit bei Eingaben, Probleme mit TImages/Grafik, Skalierungen, usw. usw.
Ich kann mich auf FMX nicht sehr gut verlassen was die Standard-Darstellungen, die Standard-Messages, das Standard-Verhalten betrifft, und ich erlebe immer wieder ungeplante Überraschungen auch bei simplen Primitiven.

Deshalb denke ich ein rewrite parallel zu FMX könnte eine Verbesserung darstellen, wenn es denn gut gemacht ist.
Ich kann von der Basis her ja auch eigene Komponenten anlegen (Ok, kann ich mit FMX auch, aber ist durch den PresentationProxyLayer wohl etwas aufwendiger.

Das ich dann RichView, Planner, etc. oben drauf bekomme, auch wenn ich es vielleicht im ersten Schritt gar nicht nutzen würde nehme ich gerne mit.
(Und gab es da nicht auch DB-Komponenten, um sich vor LiveBindings zu drücken ?)

Mir geht es hauptsächlich um die Stabilität (insbesondere vom Unterbau her), ist da FNC besser als FMX ?

Zusätzlich geld ausgeben:
ja das ist immer blöd, aber 150 EUR wären auch nicht so das Problem.
Eher stört mich schon die weitere Abhängigkeit, die man irgendwann mal schlecht wieder rausbekommt.

Rollo

Sherlock 23. Okt 2017 08:32

AW: TMS FNC vs. FMX
 
Vielleicht habe ich mich falsch ausgedrückt. FNC ist nach dem was ich bisher gelesen habe kein FMX Ersatz. Es ist lediglich eine weitere Komponenten-Sammlung. Wenn Du also aktuell ein ShowMessage Problem hast, wird das nach Installation von FNC nicht anders sein.

Sherlock

Rollo62 23. Okt 2017 08:34

AW: TMS FNC vs. FMX
 
Ja das ist Richtig.
Aber es bietet eben anscheinend auch ein "paralleles" Grafiksystem, Bitmapsystem, Messagingsystem, etc an, um das unter allen Platfoemen (inkl. VCL) kompatibel zu machen.

FMX ist natürlich nach wie vor da.

mensch72 23. Okt 2017 09:59

AW: TMS FNC vs. FMX
 
FNC ersetzt FMX nur da, wo es kein FMX gibt, also bei allen FreePascal Zielen.

Unter Delphi ist VCL oder FMX primär, TMS bietet per FNC also keine eigene Delphi GUI Löung für Linux. (Dafür gibt es ja auch schon LinuxFMX & CrossVCL)

Da ich zumindest für Desktop und Mobile stets getrennte GUI's, habe ich keinen direkten Bedarf an "SharedFrom's" per FNC Komponenten. Ich habe TMS AllAcsess und somit auch die FNC Sachen, aber ausser für ne TMS like TestGUI auf nem RasberryPI habe ich damit noch nix sinnvolles gemacht.

Bei VCL Desktopanwendungen(die ich eigenlich am liebsten nicht alle "echt" auf FMX portieren will) hoffe ich aktuell sehr auf "CrossVCL", denn damit kann man "alte" WinVCL GUI Anwendungen für Linux und Mac
übersetzen. Wenn das die GDI/GDI+ Engine fertig ist, laufen wohl auch alle ja intern stets sehr grafiklastigen TMS-VCL-Componenten da direkt. Man sieht an der vorab angepasseten Virtual-Treeview Version, was die an ihrer VCL Version für "aktuelles Beta CrossVCL" ändern mussten.

Ich mag FNC als "Aufsatz" auf dem "Aufsatz" nicht. Lieber nur ein "Aufsatz", also VCL oder FMX oder CrossVCL oder ev. UniGUI(aber da bleibe ich aktuell doch bei IntraWeb).

Rollo62 23. Okt 2017 12:38

AW: TMS FNC vs. FMX
 
Dankesehr für die Info.

Ich habe mir schon gedacht das FNC wohl selten im produktiven Einsatz ist, das wäre für mich auch so ein KO Kriterium ...

Aufsatz auf dem Aufsatz ist schön formuliert :-D
Ich hatte ja noch Hoffnung das es die Löcher vom ersten Aufsatz stopfen könnte.

Rollo

Harry Stahl 25. Okt 2017 22:49

AW: TMS FNC vs. FMX
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe mir das FNC-UIPack vor ein paar Monaten gekauft (neben FMX, habe ich weiterhin) und schon in einigen Programmen eingebaut, bzw. bin dabei es einzubauen (in meinem E-Mail-Programm Safer Mail wird der FNC-RichEditor in der kommenden Version 8 für die Mac- und Linux-Plattform Verwendung finden, ob ich unter Windows TRichviewEdit beibehalte, habe ich noch nicht entschieden (arbeite da mit Interfaces, kann ich also leicht auswechseln)).

Bislang bin ich sehr zufrieden. Der Support von TMS ist gut, Anfragen werden schnell beantwortet und Probleme zügig behoben.

Ich finde FNC genial, weil ich es mit gleichem Source-Code sowohl in Delphi unter VCL und FMX und mit Lazarus für alle 3 Desktop-Plattformen nutzen kann. Das vereinfacht die Entwicklung doch sehr. Habe ich einmal eine PDF-Datei-Erstellung unter der VCL gemacht, kann ich das gleiche Konstrukt direkt unter FMX oder in Lazarus verwenden.

FNC hat leider noch nicht den vollen Umfang wie FMX, aber das entwickelt sich noch, FMXLinux wird auch erst nur zum Teil unterstützt, aber ich gehe davon aus, dass sich auch dort noch was tut.

TMS hat zu FNC hier auch eine Video-Serie in deutscher Sprache gemacht, hier mal zwei Links für eine Einführung und das zweite Video eine kleine technische Erläuterung.

https://www.youtube.com/watch?v=QmJptn9Zr-4
https://www.youtube.com/watch?v=0T08OleVezs

Mit Freude habe ich heute festgestellt, dass TMS seinen Subscription-Manager (edit: für Komponenten-Bundles) aufgebohrt hat, der kann jetzt Backups und somit bei Bedarf auch Rollbacks zu Vorversionen der Komponenten.

Auch hat man von dem nun direkt einen Zugriff auch die Dokumentation und zu einem eigenen moderierten Forum für das Framework, sowie auf einen YouTube-Channel. Aus meiner Sicht vorbildhaft.

TigerLilly 26. Okt 2017 12:07

AW: TMS FNC vs. FMX
 
Ich finde das FNC sehr cool. Harry hat die wichtigsten Punkte schon gesagt, was oft untergeht ist, dass das FNC ohne Altlasten auskommt, weil neu geschrieben.

Ich bin hier sehr zufrieden. FNC+Aurelius ist schon eine Kombi, bei der man sich gut fühlt. :-)

Mavarik 26. Okt 2017 12:55

AW: TMS FNC vs. FMX
 
Nutzt FNC nicht die Basis-Routine von FMX und bietet "nur" eine einheitliche Ansteuerung von unter VCL/FMX?

Glaube kaum das hier das ganze Framework für die mobilen Plattformen neu Programmiert wurde, oder?

Hab mich damit noch nicht beschäftigt...

Mavarik

PS.: @Harry: Vielleicht eine Einführung am Sa.

Rollo62 26. Okt 2017 13:34

AW: TMS FNC vs. FMX
 
Das wäre ja genau der Vorteil von FNC:
Wenn FNC "nur" die Basisroutinen nutzt, primitive Shapes und Text, und komplexere Controls "fehlerfreier" daraus erzeugt, und nicht von den Buggy-FMX-Control ableitet.
Dann wäre das die Art stabilere Basis die ich meine.

Natürlich wird es noch hier und da FMX Controls geben, aber genu die Verbindung FNC - FMX sehe ich als kritisch.
Denn das wäre doppelter Code, und wie Mensch72 schön sagte: Der Aufsatz auf dem Aufsatz.

Ausserdem sind wohl die Styles auf der Strecke geblieben, was ich Schade finde, was aber womöglich auch zur gesamten Stabilität beitragen könnte.

Die grundsätzliche Frage ist handelt man sich damit mehr oder wniger Probleme ein.

Prinzipiell finde ich die FNC-Idee auch super, aber ob FMX + Lazarus wirklich gut unter einen Hut zu bekommen sind weiss ich nicht (Namespaces, anonyme Prozeduren, etc.).

Rollo

Harry Stahl 26. Okt 2017 20:51

AW: TMS FNC vs. FMX
 
Zitat:

Zitat von Mavarik (Beitrag 1384230)
Nutzt FNC nicht die Basis-Routine von FMX und bietet "nur" eine einheitliche Ansteuerung von unter VCL/FMX?

Glaube kaum das hier das ganze Framework für die mobilen Plattformen neu Programmiert wurde, oder?

Ja, das siehst Du grundsätzlich richtig so. Aber in dem Zusammenhang gibt es auch eigne Klassen, einheitliche Events, einheitliche Bezeichner usw., die dann auf allen Plattformen gleich sind. Das wird dann natürlich in der Hauptsache verwendet, um die eigenen TMS-FNC-Komponenten auf allen Plattformen und Compilern einheitlich anzusprechen. Aber man kann das auch nutzen, um eigene Komponenten auf der Grundlage des FNC-Systems zu entwickeln. Dazu kann ich nicht viel sagen, da ich selber keine Komponenten entwickle ("nur" Anwendungen), aber in dem 2. Video-Link den ich oben genannt habe, wird, wie ich finde, sehr verständlich beschrieben, wie man eine plattform-übergreifende FNC-Komponente entwickelt.

Zitat:

Zitat von Mavarik (Beitrag 1384230)
PS.: @Harry: Vielleicht eine Einführung am Sa.

Leider kann ich diesmal nicht zum Delphi-Frühstück kommen. Aber die o.g. Videos können wirklich schon sehr gut vermitteln, worum es geht.

Harry Stahl 26. Okt 2017 21:30

AW: TMS FNC vs. FMX
 
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:

Zitat von Rollo62 (Beitrag 1384235)
Das wäre ja genau der Vorteil von FNC:
Wenn FNC "nur" die Basisroutinen nutzt, primitive Shapes und Text, und komplexere Controls "fehlerfreier" daraus erzeugt, und nicht von den Buggy-FMX-Control ableitet.
Dann wäre das die Art stabilere Basis die ich meine.

Hierzu ein Hinweis: Die FMX-Primitives, hier also auch die von Dir genannten TShape und TText sind bereits abgleitet von TControl. Ich denke, da wird man auch nicht drum herum kommen.

Zitat:

Zitat von Rollo62 (Beitrag 1384235)
Natürlich wird es noch hier und da FMX Controls geben, aber genu die Verbindung FNC - FMX sehe ich als kritisch.
Denn das wäre doppelter Code, und wie Mensch72 schön sagte: Der Aufsatz auf dem Aufsatz.

Allerdings erleichtert mir das als Entwickler die Sache enorm. Ich muss mir nicht überlegen, wie ich unter der VCL oder FMX das Grid verwende und das auch nicht, wenn ich mit Lazarus, statt Delphi arbeite. Den Source-Code, den ich einmal für eine beliebige Plattform mit Delphi oder Lazarus entwickelt habe, kann ich auf einer anderen beliebigen Plattform mit Delphi oder Lazarus verwenden.

Ich kann "im Notfall" auch wunderbar Delphi und Lazarus-Programme miteinander koppeln. Mal als Beispiel: habe ja nun mein PC-Database von VCL auf FMX portiert und für Windows, MAC und Linux entwickelt. Leider unterstützt FNC das FMXLinux noch nicht vollständig, u.a. den Excel-Import und Export. Allerdings werden alle FNC-Komponenten vollständig unter Lazarus für alle Desktop-Plattformen unterstützt (Anm.: Dafür war FNC - als "Framework Neutral Component" auch gedacht. FMXLinux kam erst sehr viel später).

Daher habe ich mit Lazarus ein kleines simples Linux-Progrämmchen geschrieben, das ich vom Delphi-Hauptprogramm aufrufe, die zu importierende Excel-Datei übergebe und dann in das Lazarus-Grid importiere und anschließend als Datei speichere und dann im Delphi-Programm wieder im FNC-Grid einlese (30 Minuten Entwicklungsarbeit), siehe anliegende Screenshots.

Die FNC-Komponenten sind also auch Datenkompatibel unter den verschiedenen Compilern (und Plattformen). Über den Umweg mit FNC über Lazarus, kann ich also auch unter Linux die volle Programmfunktionalität anbieten, wie unter Windows und MAC. Das bietet mir einfach zusätzliche Optionen, meine Ziele zu erreichen, das ist doch super! Wenn TMS dann später auch FMXLinux bei der ExelIO-Komponente voll unterstützt, brauch ich den Umweg nicht mehr und muss nur in meinem Delphi-Hautprogramm ein IFDEF rausnehmen und 4 Zeilen löschen. So easy!

Zitat:

Zitat von Rollo62 (Beitrag 1384235)
Ausserdem sind wohl die Styles auf der Strecke geblieben, was ich Schade finde, was aber womöglich auch zur gesamten Stabilität beitragen könnte.

Die grundsätzliche Frage ist handelt man sich damit mehr oder weniger Probleme ein.
Rollo

Styles sind nicht auf der Strecke geblieben, denn die Compos haben auch eine Ableitung von TStyledControl. Wenn Du für die jeweilige Komponente die Eigenschaft "AdaptToStyle" auf True setzt, passt sich die Komponente dem VCL- oder FMX-Style entsprechend an.

Falls Du den FMX-Styles nicht traust, die FNC-Kompos haben sehr umfangreiche Möglichkeiten, sich farblich nach Wunsch darstellen zu lassen, da ist man schon sehr flexibel mit. Aber ich habe hier bei den FMX-Styles wieder etwas mehr Hoffnung bekommen, da KSDEV ja nun auch Delphi-Styles für FMX und VCL anbieten (http://delphistyles.com/) und hier auch Fixes für Styles (FM UIPlus) liefern (habe ich mir gestern gezogen).


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