Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Delphi FireMonkey lernen (https://www.delphipraxis.net/170559-firemonkey-lernen.html)

stahli 23. Sep 2012 11:13

FireMonkey lernen
 
Liste der Anhänge anzeigen (Anzahl: 1)
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.

himitsu 23. Sep 2012 15:16

AW: FireMonkey lernen
 
Schau mal, ob dir Delphi-Referenz durchsuchenFmx.Types.TControl.AbsoluteRect ausreicht.

Beim manuellen Umrechnen der Mausposition in Komponenten-Koordinaten mußt du nun auch noch viel mehr beachten.
- ist das Control gedreht, oder eines seiner Parents
- ist das Control gezoomt, oder eines seiner Parents
- bei Mehrerem muß man das miteinander verrechen
- ...

stahli 23. Sep 2012 16:45

AW: FireMonkey lernen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ok, vielleicht sollte man sich weitestmöglich auf die Standard-Arbeitsweisen beschränken.
(In der VCL habe ich da noch einiges geschraubt, bis es nach meinen Wünschen funktionierte.)

Ein anderes Problem: Im Style-Editor habe ich kein Bearbeitungsfenster!?
Kann man das irgendwo einschalten oder ist das ein Bug???

milo 23. Sep 2012 18:07

AW: FireMonkey lernen
 
dazu kannst Du Dir ja einen Style laden, ihn Deinen Wünschen nach anpassen und dann wieder speichern?

Habe aber (noch) kein XE3 hier, sonst würde ich nachsehen.... :wink:

stahli 23. Sep 2012 18:46

AW: FireMonkey lernen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Einen Style habe ich geladen, aber das müsste auch mit einem leeren Form gehen, wenn man ein StyleBook auf das Form zieht und öffnet.
Bei mir fehlt einfach der rechte Bereich mit den Einstellmöglichkeiten.

Auch nach einer Reparaturinstallation sowie De- und Neuinstallation der Trial besteht das Problem noch...

MEissing 23. Sep 2012 21:13

AW: FireMonkey lernen
 
Das ist normal.... man hat die Strukturansicht für die verschiedenen Styles in die klassische Struktuaransicht bei XE3 gelegt.

http://docwiki.embarcadero.com/RADSt...-Stil-Designer

in der englischen Hilfe sieht's man dann:
http://docwiki.embarcadero.com/RADSt...Style_Designer

stahli 23. Sep 2012 22:22

AW: FireMonkey lernen
 
Ok, ich komme aber dennoch nicht klar damit.
Hier mal ein kurzes Video dazu...

Kannst Du mal zeigen, wie das korrekt und fluffig läuft?

MEissing 24. Sep 2012 09:24

AW: FireMonkey lernen
 
Im Prinzip genauso wie in FM bei XE2:
http://www.youtube.com/watch?v=pDwg4wG-n2Y

stahli 24. Sep 2012 11:31

AW: FireMonkey lernen
 
Hmm, im Prinzip hilft mir nicht weiter.
Im meinem Video habe ich ja gezeigt, womit ich nicht zurecht kam.

Die Videos von Marco kenne ich im übrigen. Dort ist ja noch der extra Designer für die Styles verfügbar.

Möglicherweise war es ein Fehler, diesen einzusparen.
Es kann natürlich auch sein, dass der Fehler in meiner Installation oder direkt bei mir liegt.

Wie auch immer, ich werde wohl mal lieber auf XE4 warten und in der Zwischenzeit die Entwicklunmg beobachten.


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