ToolBar nachbauen

Für Fragen von Einsteigern und Programmieranfängern...
Benutzeravatar
theo
Beiträge: 10468
Registriert: Mo 11. Sep 2006, 19:01

Re: ToolBar nachbauen

Beitrag von theo »

HobbyProgrammer hat geschrieben:
Mo 9. Jan 2023, 20:58
So wie ich das von Dir gelesen habe sollte generell mit dem Gtk2 Widgetset arbeiten?
Ja, das ist immer noch die beste Wahl.
Qt (5,6) funktioniert auch gut, benötigt aber noch eine interface Library.
https://wiki.lazarus.freepascal.org/Qt5_Interface

HobbyProgrammer
Beiträge: 166
Registriert: Di 29. Okt 2019, 12:51
Wohnort: Deutschland , Baden-Württemberg

Re: ToolBar nachbauen

Beitrag von HobbyProgrammer »

Zu meiner Schande muß ich gestehen das ich nicht mehr weis wie ich auf Gtk3 gekommen bin. :shock: :?
Ich habs heut früh kurz in meiner Linux Programming VM nachgeschaut und Lazarus jungfreulich (Konfigurationsordner .lazarus gelöscht) gestartet. Dann wird per default Gtk2 eingestellt und auch die Lazarus IDE wird ja mir Gtk2 kompiliert.
Ich werd also meine Projekte daraufhin prüfen und nötigenfalls auf Gtk2 einstellen.
Bin dann mal gespannt auf die ToolBar ...
Host: Core i7-12700H, NVIDIA RTX3050 6GB, 32GB Ram, 1TB NVME SSD mit KUbuntu 22.04LTS 64bit , VM KUbuntu 22.04 LTS 64bit mit Lazarus 2.2.6 und Cross-Platform Compiler für Linux 32/64bit und Windows 32/64bit. Wine für erste Tests der Windows Binarys.

Benutzeravatar
theo
Beiträge: 10468
Registriert: Mo 11. Sep 2006, 19:01

Re: ToolBar nachbauen

Beitrag von theo »

HobbyProgrammer hat geschrieben:
Di 10. Jan 2023, 09:29
Zu meiner Schande muß ich gestehen das ich nicht mehr weis wie ich auf Gtk3 gekommen bin. :shock: :?
Deshalb habe ich die Anzeige des Entwicklungsstands bei den Widget Types kürzlich eingebracht:
https://gitlab.com/freepascal.org/lazar ... sues/40040

So hättest du nämlich gesehen, dass bei GTK3 "alpha" steht und die Finger davon gelassen. :wink:

HobbyProgrammer
Beiträge: 166
Registriert: Di 29. Okt 2019, 12:51
Wohnort: Deutschland , Baden-Württemberg

Re: ToolBar nachbauen

Beitrag von HobbyProgrammer »

Ich werd auf jeden Fall wie schon geschrieben als nächstes meine Projekte durchsehen und dann auch die Lazarus Grundkonfiguration nochmal in Augenschein nehmen. :)
Host: Core i7-12700H, NVIDIA RTX3050 6GB, 32GB Ram, 1TB NVME SSD mit KUbuntu 22.04LTS 64bit , VM KUbuntu 22.04 LTS 64bit mit Lazarus 2.2.6 und Cross-Platform Compiler für Linux 32/64bit und Windows 32/64bit. Wine für erste Tests der Windows Binarys.

HobbyProgrammer
Beiträge: 166
Registriert: Di 29. Okt 2019, 12:51
Wohnort: Deutschland , Baden-Württemberg

Re: ToolBar nachbauen

Beitrag von HobbyProgrammer »

Ich habe jetzt alle Projekte auf Gtk2 umgestellt. Auch habe ich die Lazarus Konfiguration gelöscht und komplett neu eingerichtet, mit Gtk2.
Und siehe da, nun schaut auch bei mir die Toolbar so aus wie es ein soll. :D

Was jetzt noch nicht so richtig funktioniert ist, das wenn ich eine ToolBar verschieben will und damit aus der CoolBar herausziehe, wird aus der ToolBar ein kleines extra Fensterchen mit den ToolButtons drin, welches ich aber nichtmehr in die CoolBar hineinziehen kann.

Auch kann ich die ToolBars welche sich in einer Reihe befinden teilweise übereinander drüberschieben und ich kann diese in der Reihenfolge nicht tauschen.
Host: Core i7-12700H, NVIDIA RTX3050 6GB, 32GB Ram, 1TB NVME SSD mit KUbuntu 22.04LTS 64bit , VM KUbuntu 22.04 LTS 64bit mit Lazarus 2.2.6 und Cross-Platform Compiler für Linux 32/64bit und Windows 32/64bit. Wine für erste Tests der Windows Binarys.

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

Re: ToolBar nachbauen

Beitrag von wp_xyz »

Ja, das sind ziemliche Biester.

Um die Reihenfolge der Bands ändern zu können, solltest du Fixedsize bei jedem CoolBand auf true setzen. Allerdings bekommt man kein visuelles Feedback, wo das aktuell gezogene Band hingeschoben wird...

Um das Herausziehen einer Toolbar aus dem Coolbar-Container zu verhindern, musst du das DockKind der Toolbar auf dkDrag zurücksetzen, in deinem Demo-Programm steht das auf dkDock.

Falls du das trotzdem willst, musst du wahrscheinlich die Docking-Maschinerie anwerfen, um ein floatendes Fenster mit Toolbar wieder in den Container zurückzubringen.

Wenn, wie in deinem Beispiel, anfangs 4 Zeilen mit Cool-Bands vorhanden sind, und man hat eine Toolbar in eine andere Zeile verschoben, reduziert sich die Anzahl der Zeilen auf 3. Wie man aber wieder auf 4 Zeilen kommt, weiß ich nicht.
Zuletzt geändert von wp_xyz am Fr 13. Jan 2023, 12:17, insgesamt 1-mal geändert.

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1432
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: ToolBar nachbauen

Beitrag von fliegermichl »

Also ich habe da jetzt auch mal einige Zeit mit rumgespielt.
Aber außer, daß sich der Anwender mit einiger Sicherheit sein Layout unumkehrbar zerschiesst, kann ich dem CoolBar nicht viel abgewinnen.

charlytango
Beiträge: 843
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: ToolBar nachbauen

Beitrag von charlytango »

fliegermichl hat geschrieben:
Fr 13. Jan 2023, 06:52
Aber außer, daß sich der Anwender mit einiger Sicherheit sein Layout unumkehrbar zerschiesst, kann ich dem CoolBar nicht viel abgewinnen.
sehe ich dzt auch so. Das war schon zu Delphi7 Zeiten kein Hit. Deswegen haben wir damals die Komponenten von DevExpress benutzt die optisch und funktional ziemlich toll waren. Nur haben die nur für WIN funktioniert und sind mehr und mehr in die .NET Richtung abgeglitten.

Schade dass es für Lazarus nix vergleichbares gibt, der DB-Grid war genial und die ToolBar/Coolbar und Ribbon Umsetzung auch.
Ich vermisse auch den ReportBuilder ... heul :cry:

HobbyProgrammer
Beiträge: 166
Registriert: Di 29. Okt 2019, 12:51
Wohnort: Deutschland , Baden-Württemberg

Re: ToolBar nachbauen

Beitrag von HobbyProgrammer »

Da bin ich jetzt mal froh das es nicht an meinem Aufbau der Toolbars liegt das sich das alles so komisch anfühlt. :| :lol:
wp_xyz hat geschrieben:
Mi 11. Jan 2023, 22:38
Um das Herausziehen einer Toolbar aus dem Coolbar-Container zu verhindern, musst du das DockKind der Toolbar auf dkDrag zurücksetzen, in deinem Demo-Programm steht das auf dkDock.
Diese Einstellung hatte ich einfach von dem damaligen Delphi Projekt übernommen.


Ich hatte das ganze ja auch schon mit einer Controlbar versucht, so wie es in dem Delphi Projekt auch gemacht wurde, aber damit bin ich noch viel weniger glücklich gewesen.

Ich werde mich wohl erstmal auf die Funktionalität des Projekts konzentrieren. Da ich das GUI-Design sowieso etwas anders gestalten will als im Original, werd ich mir dann später etwas überlegen. Evtl. nur eine Toolbar unterhalb des Mainmenüs, welches dann mit bevorzugten Toolbuttons gefüllt werden kann.
Host: Core i7-12700H, NVIDIA RTX3050 6GB, 32GB Ram, 1TB NVME SSD mit KUbuntu 22.04LTS 64bit , VM KUbuntu 22.04 LTS 64bit mit Lazarus 2.2.6 und Cross-Platform Compiler für Linux 32/64bit und Windows 32/64bit. Wine für erste Tests der Windows Binarys.

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

Re: ToolBar nachbauen

Beitrag von wp_xyz »

Wenn du auf das Hinundher-Verschieben verzichten kannst, aber mehrere Toolbars hast, von denen je nach Kontext einige ausgeschaltet werden sollen, könntest du diese auch in ein Panel setzen, ihr Align auf alNone zurücksetzen und sie mit dem Anker-Editor nebeneinander verankern. Nun kannst du das Visible jeder Toolbar auf true/false setzen und die folgenden rutschen automatisch nach. Siehe beigefügtes Projekt.
Dateianhänge
toolbars_in_panel.zip
(8.15 KiB) 34-mal heruntergeladen

HobbyProgrammer
Beiträge: 166
Registriert: Di 29. Okt 2019, 12:51
Wohnort: Deutschland , Baden-Württemberg

Re: ToolBar nachbauen

Beitrag von HobbyProgrammer »

:) An so etwas ähnliches hatte ich auch gedacht.
In meinem Z180SoftSystem habe ich auch unterhalb des Mainmenüs ein Panel mit Align Top und darin dann wiederum Panels mit Speedbuttons.
War zwar statisch, konnte als zur Laufzeit nicht geändert werden, aber hat mit der Width des Fensters schön mitskaliert.
Und es hat recht Schick ausgesehen. :)

Dein Vorschlag gefällt auf jeden Fall auch sehr.
Host: Core i7-12700H, NVIDIA RTX3050 6GB, 32GB Ram, 1TB NVME SSD mit KUbuntu 22.04LTS 64bit , VM KUbuntu 22.04 LTS 64bit mit Lazarus 2.2.6 und Cross-Platform Compiler für Linux 32/64bit und Windows 32/64bit. Wine für erste Tests der Windows Binarys.

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

Re: ToolBar nachbauen

Beitrag von wp_xyz »

Dasselbe Projekt von oben nun mit einem Coolbar-Container. Mit diesen Einstellungen verhält sich die Coolbar einigermaßen zahm. Man kann
- in derselben Zeile die Reihenfolge ändern, indem man am Griff anfasst und über eine andere Toolbar oder den Freiraum rechts zieht. Den Cursor beachten: Überall wo der Drag-Cursor erscheint, kann man loslassen.
- eine Toolbar in eine andere Reihe ziehen
- eine neue Zeile für die aktuell gezogene Toolbar erzeugen, indem man ein paar Pixel aus der gesamten Coolbar nach unten zieht, aber nicht zu weit, so dass nicht der "Ablegen verboten"-Cursor erscheint. In diesem Fall müsste man loslassen und den Greifer neu anfassen.
- Toolbars sichtbar und unsichtbar schalten (mit den Checkboxes)
- die aktuelle Konfiguration in einer ini-Datei speichern und beim nächsten Start wieder restaurieren.

Erklärung:
Wenn man die Reihenfolge der Toolbars verändert, bleibt die Reihenfolge der Bands erhalten, also CoolBar.Bands[0] ist immer oben, Coolbar.Bands[1] unmittelbar darunter, usw, aber, je nachdem wieviel man herumgezogen hat, mit jeweils anderen Controls bestückt. Zur Unterscheidung, welche Control in welchem Band steckt, wird beim Erzeugen eine fortlaufende ID vergeben: Coolbar.Bands[0].ID = 0 für die erste Toolbar, die auf der Coolbar abgelegt wurde usw.

Die nächste Schlüsseleigenschaft ist Coolbar.Bands[ i ].Break. Wenn das auf true gesetzt ist, kommt das Band in eine neue Zeile.

Die Eigenschaft Coolbar.Bands[ i ].FixedSize ist immer auf true gesetzt - damit kann man die Länge der Bands nicht verändern. Das ist nicht zwingend notwenig, aber ich finde so ist Coolbar einfacher zu bedienen. Mit FixedSize=false ist der Punkt auf/hinter dem Greifer, der entscheidet, ob das Band gezogen oder die Länge des vorigen Bands verändert wird, ziemlich schwer zu treffen.

Und schließlich gibt es noch Coolbar.Bands[ i ].Visible. - Klar: damit kann man das band mit seinem Control sichtbar/unsichtbar schalten.

ID, Break und Visible werden in der Ini-Datei für alle Bands abgelegt. Beim Lesen der ini-Datei wird die Position der Bands in der Coolbar.Bands-Collection so verändert, dass jedes Control im richtigen Band sitzt. Danach werden Break und Visible gesetzt.

Docking wird in dem Beispiel nicht unterstützt (DragKind bleibt auf dgDrag).

[EDIT]
Hab' angefangen, den mickrigen wiki-Artikel zu erweitern: https://wiki.freepascal.org/TCoolBar
Dateianhänge
toolbars_in_coolbar.zip
(9.14 KiB) 38-mal heruntergeladen

HobbyProgrammer
Beiträge: 166
Registriert: Di 29. Okt 2019, 12:51
Wohnort: Deutschland , Baden-Württemberg

Re: ToolBar nachbauen

Beitrag von HobbyProgrammer »

Wow, das liest sich sehr sehr interessant. Werde ich mir auf jeden Fall sehr genau ansehen. :D
Vielen Dank schonmal an dieser Stelle für die perfekte Hilfe. :D :D :D
Host: Core i7-12700H, NVIDIA RTX3050 6GB, 32GB Ram, 1TB NVME SSD mit KUbuntu 22.04LTS 64bit , VM KUbuntu 22.04 LTS 64bit mit Lazarus 2.2.6 und Cross-Platform Compiler für Linux 32/64bit und Windows 32/64bit. Wine für erste Tests der Windows Binarys.

Antworten