Ich habe mir jetzt mal einiges zum FM(2) angesehen und hätte durchaus Lust, damit zu arbeiten.
Die Benutzung der Styles (die sind fast so etwas wie Frames, man baut sich wie mit einem Baukasten eigene Komponenten zusammen) wirkt sehr reizvoll.
Allerdings ergeben sich auch Fragen, z.B.: Wie reagieren die "SubControls" auf Drag&Drop und wie komfortabel lassen sich Datenbindungen in der Praxis realisieren?
Letztlich muss man sich nahezu komplett von der Arbeitsweise der
VCL verabschieden - was aber eigentlich auch mal Zeit wird.
Als ersten Versuch wollte ich nun ein Panel verschiebbar machen und habe mich dazu an dem Beispiel LotOfRects orientiert.
Man kann dort ein Rechteck über eine Scrollbox schieben.
Oups!? Kein Code dazu im Projekt???
Schaut man sich den Projektaufbau etwas näher an (dazu habe ich natürlich einiges am Projekt geschraubt), stellt man fest, dass das farbige Rechteck in einem TSeletion liegt und mit HitTest=False die Mausbehandlung einfach durch lässt.
Das TSelection seinerseits bietet bereits die komplette Möglichkeit, sich verschieben und in der Größe ändern zu lassen.
Soweit nicht schlecht - aber ich möchte durch ein Verschieben meines Controls Änderungen in einer Datenbank (oder erst mal Objekteigenschaften) veranlassen und meine Objekte auch auf andere Controls ziehen können.
Also habe ich mir mal Drag&Drop angesehen.
Die Standardfunktionalität ist optisch ansprechend gelöst. Zieht man ein Control über ein anderes wird dieses mit einem Rahmen hervorgehoben.
Nun will ich zunächst mein Panel mit Drag&Drop verschieben, solange sich die Maus über ihm selbst bewegt.
In der
VCL hätte ich bei Klick X und Y der Maus ermittelt, beim DragOver mit ClientToParent die Mausposition im Parent ermittelt und dazu relativ das Control neu positioniert.
ClientToParent gibt es jedoch im FM nicht.
Ok, man wird schon eine Lösung finden, aber findet man auch die beste Lösung?
Es ist nahezu ein Beginn bei Null, was die
GUI betrifft.
Wozu nun soviel Text?
Ich denke, es wäre ein eigenes FireMonkey-Unterforum sinnvoll, in dem FM-spezifische Fragen geklärt werden können.
"Cross-Plattform-Entwicklung" passt irgendwie nicht recht, finde ich. Mir reicht es z.B. zunächst wenn mein Projekt unter Windows anständig läuft. Das FM-Konzept scheint aber dennoch interessant. "CrossPlattform" könnte dann z.B. behandeln, wie man ein Projekt auf einem Mac o.ä. testen will.
FM mit der
VCL in einem Bereich zu behandeln, finde ich auch nicht sinnvoll. Man wird da sehr schnell durcheinander kommen.
Besser wären m.E. getrennte Bereiche:
*
GUI-Design mit
VCL
*
GUI Design mit FM
Wer sich mit FM befasst, wird wohl an vielen kleinen Dingen hängen bleiben, die man zuvor gar nicht vermutet.
Bekannte Lösungen aus der
VCL kann man wohl oft nicht identisch umsetzen. Eine zentrale Sammlung von Tutorials wäre sicher auch hilfreich.
Wie man Controls auf die Form setzt, diese an Daten bindet und einen fliegen lässt
ist genug gezeigt. Ich bin mal auf die Feinheiten gespannt...
So z.B. Drag&Drop, das über den Standard hinaus geht oder eine komplette Eingabevalidierung bei der fehlerhafte Eingaben abgewiesen und z.B. mit einem roten Rahmen um das Edit angezeigt werden.