Neuer DockedFormEditor

Für Fragen rund um die Ide und zum Debugger
Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Neuer DockedFormEditor

Beitrag von Michl »

Servus,

ich habe einen neuen DockedFormEditor erstellt. Das Package kann unter Lazarus Trunk Hauptmenü -> Package -> Installierte Packages einrichten... dockedformeditor installiert werden. Der Editor kommt mit einem optionalem WYSIWYG Anchor Designer.

Das Package ist ursprünglich von Sparta_DockedFormEditor geklont worden und sein Ersatz für zukünftige Lazarus Versionen. Alle Sparta Packages sind nun als "veraltet" markiert und werden in einem zukünftigen Lazarus Release entfernt.

Für weitergehende Infos, habe ich eine kurze Wiki-Seite geschrieben: https://wiki.lazarus.freepascal.org/DockedFormEditor

Das Package habe ich auf Windows 7 geschrieben and grundlegend auf Windows 10, Linux Mint Cinnamon mit GTK2, QT(4) and QT5 getestet. Es kann als standalone IDE Erweitung oder in Kombination mit AnchorDockingDsgn genutzt werden.

Bis jetzt ist es limitiert auf ein Quelltextfenster. Die Unterstützung mehrerer Quelltextfenster ist in Arbeit.

Jetzt benötige ich eure Unterstützung! Bitte testet das Package, insbesondere wenn jemand bisher Sparta_DockedFormEditor genutzt hat, ob noch offene Fehler vorhanden sind oder Änderungswünsche. Für Fehler benutzt, wenn irgend mörglich, bitte den Bugtracker!

Vielen Dank!

Michl

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1496
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Neuer DockedFormEditor

Beitrag von corpsman »

ich bin ein wenig Verwirrt,

das ist nur ein Editor um die Forms auch so ein zu betten wie den Quellcode, oder ?

Aktuell arbeite ich mit dem AnchordockingDSGN und bin da sehr zufrieden, ich nutze gern mal 3 oder 4 Quelltextfenster gleichzeitig. Dabei dann immer 2 Pro Monitor. Unter Lazarus geht das noch wunderbar. VSCode kriegt das leider nicht hin, denn da kommt man aus dem Docking nicht heraus. Die Forms erreiche ich bequem via F12. Für mich ist das Recht Praktisch, denn die Forms sind somit normalerweise "weg". Mit dem Plugin würden die Forms dann oben in der Statusbar zwischen den Units eingereiht, mich persöhnlich würde das stören. Bewege ich mich doch die meiste Zeit der Entwicklung im Code, das Form gemale ist ja nur am Anfang Kurz..
--
Just try it

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6197
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Neuer DockedFormEditor

Beitrag von af0815 »

Geht der nur mit Trunk oder kann man den auch mit dem aktuellen fixes Zweig verwenden ?

Klauen würde ich mir den schon selbst, nur wenn geänderte IDE Schnittstellen verwendet werden, macht es keinen Sinn.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Neuer DockedFormEditor

Beitrag von Michl »

@corpsman: Ja du sprichst es genau an. Da ich öfter unterwegs bin, nutze ich seit einigen Jahren nur noch meinen Laptop und habe mich damit arrangiert keinen zusätzlichen Monitor zu verwenden. Ich mag auch sehr gern das aufgeräumte Design, was ich per AnchordockingDsgn erhalte. Es war aber erst auf dem Laptop nutzbar, als der Sparta_DockedFormEditor mit zu verwenden war. Ohne diesen war es nicht möglich gleichzeitig den ObjektInspektor und das Formular gleichzeitig zu verwenden, da entweder die gedockte IDE oder das Formular im Vordergrund war (andere gedockte Fenster dito).

Da sich Maciej Izak, der Entwickler der Sparta-Packages seit einiger Zeit nicht mehr aktiv an der Entwicklung dieser beteiligt, habe ihc mich entschlossen dies nun selbst zu tun. Es gibt drei Packages in Sparta, die interessant waren. Der Sparta_DockedFormEditor, was ein für mich unverzichtbares Tool ist, die Sparta_Generics sind zum großen Teil aufgegangen im FPC Code und der Sparta_SmartFormEditor, was ein interessanter Ansatz war, aber nie richtig funktionierte und in den Kinderschuhen stecken geblieben ist. Diese Packages werden aufgrund fehlender Weiterentwicklung von den Lazarus Sourcen entfernt werden - vermutlich in die CCR verschoben.

Ich habe nun allen ungenutzen Code entfernt und den DockedFormEditor debugger- und anwenderfreundlicher gestaltet. Des weiteren habe ich einen AnchorDesigner beigefügt, was denke ich speziell für Neueinsteiger ein hilfreiches Tool ist, um die Komonenten in einem Formular leicht verständlich zu verknüpfen. Wie das Formular sich dann verhält, kann man schnell und problemlos testen, in dem man einfach per Maus das Formular vergrößert/verkleinert. Sollte selbst erklärend sein.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Neuer DockedFormEditor

Beitrag von Michl »

af0815 hat geschrieben:
Mo 15. Feb 2021, 08:14
Geht der nur mit Trunk oder kann man den auch mit dem aktuellen fixes Zweig verwenden ?
Ich denke es geht nur mit Trunk, da die Änderungen der IDE-Schnittstellen (nicht von mir durchgeführt) vermutlich nicht in die Fixes eingeflossen sind. Habe es aber nicht getestet.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

wp_xyz
Beiträge: 4864
Registriert: Fr 8. Apr 2011, 09:01

Re: Neuer DockedFormEditor

Beitrag von wp_xyz »

Der DockedFormEditor enthält einen neuen Anchor-Editor, der geradezu genial einfach zu bedienen ist. Allerdings ist es auch sehr einfach, eine einmal gemachte Verankerung wieder zu lösen, indem man das Control in der Mitte anfasst und zur Seite schiebt. Da ich noch nicht 100% intus habe, die Controls zum verankern immer an den Greifern anzufassen, klicke ich immer wieder ins Innere der Controls und löse zu leicht die Verankerungen. Wäre es nicht sinnvoll, für das Lösen einer Verankerung einen eigenen Shift-State zu nehmen, etwa SHIFT+Linke Maustaste oder einen Doppelklick? Damit wäre das innere der Controls für die Verankerungen wieder belanglos. Dait wäre die Bedienung auf diese drei Funktionen mit den Greifern beschränkt:
- Greifer zum Control ziehen --> verankern
- CTRL + Ziehen am Greifer --> Borderspacing einstellen
- SHIFT + Ziehen am Greifer --> Verankerung lösen, oder meinetwegen auch Doppelklick auf einem Greifer

Weiterhin wäre noch eine Anregung, die Greifer farblich anders darzustellen, je nachdem ob ein Anker aktiv ist oder nicht, z.B. offenes Quadrat = Seite nicht verankert, gefülltes Quadrat = Seite verankert.
Michl hat geschrieben:
So 14. Feb 2021, 21:36
Bis jetzt ist es limitiert auf ein Quelltextfenster. Die Unterstützung mehrerer Quelltextfenster ist in Arbeit.
Wenn ich (mit aktiviertem DockedFormEditor) in meinem Projekt auf einen Editor-Tab rechts-klicke und "Move To" oder "Clone To" wähle um ein zweites Editorfenster zu öffnen, erscheint kein zweites Fenster mehr. Ist es das was du meinst?

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Neuer DockedFormEditor

Beitrag von Michl »

wp_xyz hat geschrieben:
Mo 15. Feb 2021, 10:42
...Da ich noch nicht 100% intus habe, die Controls zum verankern immer an den Greifern anzufassen...
Das mit dem <Shift> und Maus muss ich mir mal durch den Kopf gehen lassen. Bisher finde ich es recht gut, daß man zum verankern und lösen die gleiche Aktion nutzt. Vielleicht sollte eine Verankerung überhaupt nicht per Mitte Control möglich sein, sondern nur, wenn man den entsprechenden Griff wieder nutzt?!

Als Zusatzinfo:
Ursprünglich hatte ich mal in einer Version drin, daß die Seiten so dick waren, wie die vom Fenster. Somit war greifen einer Seite viel besser verständlich. Allerdings war das Control an sich viel unübersichtlicher - der Rahmen sah wie ein Fremdkörper aus - so ist es jetzt besser.
Wenn man versehentlich das Control falsch angefasst hat, kann man die Aktion per <ESC> abbrechen. Das Control sollte in seine ursprüngliche Position/Verankerung zurückversetzt werden. Eine Rückgängig-Methode ist in Arbeit aber z.Zt. nicht implementiert, da ich überlege sie etwas ressourcenschonender zu fassen. Mal sehen.
Auch muss man das Control eine bestimmte Distanz (die selbe, wie zum fangen eine Controls - einstellbar per Option) verschieben, bevor überhaupt die Aktion ausgelöst wird, ähnlich, wie bei Drag&Drop.
Verankern auf dem Formular bzw. lösen der Verankerung kann man auch per PopupMenu.

wp_xyz hat geschrieben:
Mo 15. Feb 2021, 10:42
...die Greifer farblich anders darzustellen...
Die verankerten Seiten sind ja schon jeweils mit seinem entsprechendem Control mit einer farblichen Linie markiert. Findest du das noch nicht ausreichend? (Will nicht, daß es am Ende albern aussieht :wink: )

wp_xyz hat geschrieben:
Mo 15. Feb 2021, 10:42
Wenn ich (mit aktiviertem DockedFormEditor) in meinem Projekt auf einen Editor-Tab rechts-klicke und "Move To" oder "Clone To" wähle um ein zweites Editorfenster zu öffnen, erscheint kein zweites Fenster mehr. Ist es das was du meinst?
Ganz genau. Die prinzipielle Logik ist implementiert, benötigt aber eine Überarbeitung. Nach der Undo-Implementierung, werde ich das in Angriff nehmen.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

wp_xyz
Beiträge: 4864
Registriert: Fr 8. Apr 2011, 09:01

Re: Neuer DockedFormEditor

Beitrag von wp_xyz »

Michl hat geschrieben:
Mo 15. Feb 2021, 14:19
Bisher finde ich es recht gut, daß man zum verankern und lösen die gleiche Aktion nutzt. [...] Vielleicht sollte eine Verankerung überhaupt nicht per Mitte Control möglich sein, sondern nur, wenn man den entsprechenden Griff wieder nutzt?!
Aber genau das ist nicht der Fall. Zum Verankern muss ich den Griff des zu verankernden Controls zum anderen Control ziehen, es "rastet ein" und die Seiten werden rot. Das ist gut so. Aber zum Lösen der Verankerung kann ich das verankerte Control irgendwo in der Mitte anklicken und wegziehen - und das geschieht sehr leicht. Das Nutzen der "gleichen Aktion", von dem du sprichst, verstehe ich so, dass ich das zu lösende Control nochmals am Griff anfasse und von dort wegziehe. Das geht definitiv nicht, denn dann löst sich das Control und schrumpft plötzlich in seiner Größe,
Michl hat geschrieben:
Mo 15. Feb 2021, 14:19
wp_xyz hat geschrieben:
Mo 15. Feb 2021, 10:42
...die Greifer farblich anders darzustellen...
Die verankerten Seiten sind ja schon jeweils mit seinem entsprechendem Control mit einer farblichen Linie markiert. Findest du das noch nicht ausreichend? (Will nicht, daß es am Ende albern aussieht :wink: )
Während des Verankerungsvorgangs ist das gut. Aber wenn man nach der Verankerung irgendwo auf einen freien Bereich des Ankereditors klickt, verschwinden die Griffe und die rote Verankerungslinie, und man weiß gar nicht mehr, welches Control der Anker und welches das Anhängsel ist. Ich ertappe mich immer wieder, dass ich im Anker-Editor die Controls wegziehen will, um die Verankerung zu prüfen, aber damit zerstöre ich gerade die Verankerung.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6197
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Neuer DockedFormEditor

Beitrag von af0815 »

Wie kompatibel ist das zu den vorhandenen lfm Files ? Irgendwas besonderes zu beachten wegen der Kompatibilität zum aktuellen Fixes Zweig ?

Weil aussehen tut es schon steil :-)
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Neuer DockedFormEditor

Beitrag von Michl »

@wp: Ich habe jetzt die Logik geändert (Revision 64587). Beim bewegen des Controls sind nur noch die freien Seiten bewegbar, die verankerten bleiben verankert. Nur durch den Griff oder per PopupMenu kann man die Verankerung einer Seite lösen. Ich glaube auch, das ist besser. Danke für die Anregung!!

Zu der zweiten Anregung verstehe ich immer noch nicht ganz, worauf du hinaus willst. Kannst du es mir nochmal besser erklären? Für mich ist entscheidend, wie sich ein Formular bei einer Größenänderung verhält, das teste ich einfach mit den Größengriffen des Formulars. Ob ein Control richtig verankert ist, sehe ich per Hint - eventuell hast du da eine bessere Idee?

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Neuer DockedFormEditor

Beitrag von Michl »

af0815 hat geschrieben:
Mo 15. Feb 2021, 19:17
Wie kompatibel ist das zu den vorhandenen lfm Files ? Irgendwas besonderes zu beachten wegen der Kompatibilität zum aktuellen Fixes Zweig ?
Leider habe ich da keine Ahnung, ob sich was von Lazarus 2.0 -> 2.1 bei den .lfm verändert hat, habe das nicht mit verfolgt. Der DockedFormDesigner hat auf jeden Fall keinerlei Einfluss. Er ist ein Zusatz für die IDE und hakt sich da einfach ein.

Zum testen des Packages oder überhaupt des Trunks würde ich kein Projekt nehmen, an dem ich gerade aktiv arbeite. Da können sich immer schnell ein paar Veränderungen einschleichen - aber das weißt du ja :wink:

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6197
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Neuer DockedFormEditor

Beitrag von af0815 »

Michl hat geschrieben:
Mo 15. Feb 2021, 20:44
Da können sich immer schnell ein paar Veränderungen einschleichen - aber das weißt du ja :wink:
Ok, also nichts bewustes, maximal das Unterbewusste.

Danke für die viele Arbeit, die dort investierst und noch investieren wirst.

Weil ich habe mich gerade wieder Probleme mit der alten Version vom Designer beim Designen von größeren Frames. Wenn die nach unten zu groß werden, muss man das alte Paket deinstallieren, da es einfach aussteigt und den Designschirm zerstört. Damit will es testen, deswegen die Frage.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

wp_xyz
Beiträge: 4864
Registriert: Fr 8. Apr 2011, 09:01

Re: Neuer DockedFormEditor

Beitrag von wp_xyz »

Michl hat geschrieben:
Mo 15. Feb 2021, 20:37
Zu der zweiten Anregung verstehe ich immer noch nicht ganz, worauf du hinaus willst.
Weißt ich wahrscheinlich selbst nicht...

Ich stehe manchmal vor dem Formular im Anker-Editor und weiß nicht, was ich anfassen darf.

In dem beigefügten Screenshot #1 siehst du zwei Buttons, die miteinander verankert sind, die linke Seite von Button2 hängt an der rechten Seite von Button1. Aber das kann ich nicht erkennen. Der Hinweis mit den Hints ist gut (wusste ich noch nicht), aber die Hints sind nicht auf einen Blick zu verstehen. Also fange ich an herumzuklicken, und das ist gefährlich.

Klicke ich auf Button1 (#2), erscheinen die Griffe, aber ich kann nicht entscheiden ob der Button isoliert ist und nur zufällig an Button2 angrenzt - in diesem fall könnte ich Button1 frei bewegen -, oder ob er mit Button2 verankert ist - wenn ich Button1 horizontal bewege, bewegt sich Button2 mit

Klicke ich auf Button2 (#3), wird es klarer, denn es erscheint die rote Verankerungslinie, und, wenn BorderSpacing > 0 ist auch der schattierte "Sicherheitsabstand".

Vielleicht wäre es klarer, wenn beim Klick auf den Button1 auch die Verankerungslinie erscheint, aber vielleicht in einer anderen Farbe, um zu zeigen, dass das die Gegenstelle zu dem Anker von Button2 ist. Weiß nicht...

Danke für die Änderungen beim Lösen der Anker. Nun gibt es aber ein neues Problem. Nimm die Situation von Screenshot #3, klicke auf Button2 und ziehe den linken verankerten Griff nach rechts. Da verwundert mich, dass der rechte Griff von Button2 stehen bleibt - der ist doch gar nicht verankert - so dass ich zusätzlich auch die Buttonbreite verändere.

Ein anderes Problem hier ist (gehe nochmals zurück zur Situation von Screenshot #3) und fasse nicht am Griff an, sondern in der Mitte. Wenn ich jetzt die Maus nach rechts schiebe, wird der Button immer breiter. Eigentlich klar, denn links ist er verankert und ich will den Butten breiter machen. Aber will ich das? Eigentlich will ich Controls verankern, und nicht die Größe ändern - dafür gibt es ja das Layout-Fenster auf der Lasche "Form".

Wahrscheinlich liegt mein Verständnisproblem darin, dass man im Ankereditor Veränderungen vornehmen kann, für die eigentlich der Formeditor zuständig ist. Eine Idee: Was wäre, wenn man im Ankereditor nur die Griffe bewegen könnte und die Controls folgen je nach Verankerung. Für alle anderen Größen und Positionsveränderungen muss man in den Formulareditor wechseln.

Eine weitere Anregung wäre noch, um auf den 1.Punkt zurückzukommen: Vielleicht könntest du die rote (und wie oben vorgeschlagene blaue) Verankerungslinie, sowie die BorderSpacing-Schattierung als "Mouse-Over"-Effekt für das Control einblenden, über dem sich gerade die Maus befindet? Dann hätte man die in dem Hint-Window enthaltene Information in anschaulicher Weise und ist nicht versucht, irgendwas mit der Maus zu verschieben um die Verankerungen zu prüfen.
Dateianhänge
new_anchoreditor_1.png
new_anchoreditor_1.png (4.06 KiB) 3119 mal betrachtet
new_anchoreditor_2.png
new_anchoreditor_2.png (2.89 KiB) 3119 mal betrachtet
new_anchoreditor_3.png
new_anchoreditor_3.png (2.9 KiB) 3119 mal betrachtet

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Neuer DockedFormEditor

Beitrag von Michl »

@af0815: Danke für die freundlichen Worte!

@wp: Nach eingem Probieren, fühlt sich die derzeitige Version merkwürdig an. Besser fand ich es vor dem letzten Commit.
Aber vermutlich hast du Recht, es sollten gar keine Größenänderungen möglich sein, dafür ist der Form Designer da. Nur wenn ein Anker es verlangt, sollte das geschehen. Ich probiere das mal aus.

So eine richtig gute Idee bezüglich der besseren Sichtbarkeit der verankerten Seiten habe ich noch nicht. Wenn immer alle verankerten Seiten gezeigt werden, wird es vermutlich schnell unübersichtlich. Das mit der Maus darüber bewegen, kann ich ja mal testen.

PS: Danke fürs testen!

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

ErnstVolker
Beiträge: 326
Registriert: Di 17. Feb 2009, 10:44
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Neuer DockedFormEditor

Beitrag von ErnstVolker »

Hallo Zusammen,

ich kämpfe gerade mit den Anchors und es würde mich interessieren wie ich das Anchordockdesign aktiviere. Installiert ist es. Zusammen mit Achordocking. Aber mir fehlen die Reiter für "Code" bzw. "Design", d.h. ich kann nicht zwischen Quelltext und Formular wechseln, muß immer noch "F12" bemühen bzw. jetzt erst Recht bei zusammengeklebter IDE.

Ich bin nämlich dabei ein Formular für eine Datenbankanwendung zu bauen. Das besteht aus u.a. LookupComboboxen über die ich zur Beschriftung Label's setze.
Jetzt habe ich zwar über Anchors alles schön aneinander gehängt, aber die Bedienelemente vergrößern sich nicht entsprechend wenn ich das Formular vergrößere.
Bin dann auf einen Beitrag hier gestoßen wo's um dynamische Formulare ging und habe "ChildSizing" mit vier Text-Edits nachvollzogen. Die Edits vergrößern sich zwar, aber der Text darin nicht wie ist das zu lösen?
Mit Excel-VBA gibt es die Möglichkeit das Formular zu zoomen, sodass sich alles darauf vergrößert/verkleinert. Geht das mit Lazarus auch?

Vielen Dank für Eure Hilfe

Volker

Antworten