[gelöst] Toolbar zeigt MenuItem "verstümmelt".

Rund um die LCL und andere Komponenten
Antworten
kirchfritz
Beiträge: 227
Registriert: Mo 3. Jan 2011, 13:34
OS, Lazarus, FPC: Win11 (L 3.0 FPC 3.2.2)
CPU-Target: 64Bit
Wohnort: Nürnberg

[gelöst] Toolbar zeigt MenuItem "verstümmelt".

Beitrag von kirchfritz »

Hallo,

Ich möchte in meinem Windows-Programm ein MainMenu durch eine Toolbar ersetzen (u.a. weil Toolbar ein MouseDown, MouseUp, und MouseMove Event kennt, ein MainMenu hat das nicht).
Aus diesem Grunde habe ich ein kleines DemoProgramm zum "Proof of Concept" geschrieben.
1) Neue Anwendung erstellt
2) Ein MainMenu auf der Form angelegt, mit zwei MenüPunkten ("Datei" und "Bearbeiten")
3) Jeder der beiden Menüpunkte hat ein Untermenü mit jeweils einem Menüpunkt, also so:
MainMenü
-- Datei
-----Beenden
--Bearbeiten
----Einfügen
Ein ganz normales MainMenü ebenhalt.
4) Programm kompilieren
5) Alles läuft wie erwartet. Man kann die Menüpunkte anklicken, das jeweilige Untermenü öffnet sich, und die Untermenüs bleiben geöffnet, wenn man den Mousecursor über die Hauptmenüpunkt bewegt.

... und weiter geht's

6) Zusätzlich zum MainMenu lege ich jetzt eine Toolbar auf die Form
7) Der Toolbar verpasse ich jetzt zwei ToolButtons
8) Bei der ToolBar ShowCaptions auf "true" setzen.
9) Dem MenuItem des ersten ToolButton das MenuItem1 des MainMenus zuweisen
10)Dem MenuItem des zweiten ToolButton das MenuItem2 des MainMenus zuweisen.
11) Programm kompilieren
12) Programm läuft, zeigt aber folgendes seltsame Verhalten

Klickt man auf die ToolButtons, öffnet sich das zugehörige Untermenü, wie aus dem MainMenü bekannt.
Nicht ganz "koscher" ist, dass die Untermenüs bei der Toolbar nicht automatisch geöffnet werden, wenn man den Mauscursor über die Toolbuttons bewegt. Damit könnte ich leben, aber nicht damit:
Klickt man mehrmals abwechselnd auf die beiden ToolButtons, dann wird manchmal das Untermenü "verstümmelt" dargestellt.
Kann mir jemand erklären, was da los ist, oder was ich falsch mache?

Siehe ScreenShot + DemoProgramm
Screenshot 2024-10-06 164304.png
Screenshot 2024-10-06 164304.png (13.24 KiB) 1649 mal betrachtet
Dateianhänge
Screenshot 2024-10-06 163945.png
Screenshot 2024-10-06 163945.png (65.79 KiB) 1649 mal betrachtet
testMenuToolbar.zip
(141.32 KiB) 105-mal heruntergeladen
Zuletzt geändert von kirchfritz am Mo 7. Okt 2024, 17:15, insgesamt 1-mal geändert.

Mathias
Beiträge: 6955
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Toolbar zeigt MenuItem "verstümmelt".

Beitrag von Mathias »

Ich habe es mit Linux getestet, sieht einwandfrei aus.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

kirchfritz
Beiträge: 227
Registriert: Mo 3. Jan 2011, 13:34
OS, Lazarus, FPC: Win11 (L 3.0 FPC 3.2.2)
CPU-Target: 64Bit
Wohnort: Nürnberg

Re: Toolbar zeigt MenuItem "verstümmelt".

Beitrag von kirchfritz »

@Mathias: Aussagen, dass es unter Linux funktioniert, helfen mir nicht weiter.

Ich habe es unter Windows 10 mit Delphi 12 probiert.
Wenn ich dort auf einen ToolButton klicke, öffnet sich das dazugehörigen Untermenu, klickt man dann auf den anderen Toolbutton, schließt sich zwar das geöffnete Untermenü, aber das dazugehörige Untermenü öffnet sich nicht.
Wirklich sehr strange!!

Stevie
Beiträge: 173
Registriert: Di 27. Feb 2024, 22:40

Re: Toolbar zeigt MenuItem "verstümmelt".

Beitrag von Stevie »

... ich kenne ja den Use Case nicht, aber wäre es nicht eventuell einfacher, die SpkToolbar zu nutzen, als das alles 'zu Fuß' selbst zu bauen? Ich habe die zwar selbst noch nicht benutzt, sie sieht aber zumindest ganz schick aus: https://wiki.freepascal.org/SpkToolbar . Die SpkToolbar gibt es auch im OPM, ist also wohl ganz simpel einzubauen...

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

Re: Toolbar zeigt MenuItem "verstümmelt".

Beitrag von wp_xyz »

Ich habe mal auf das MainMenu verzichtet und stattdessen für jedes Untermenü ein DropDown-Menü erzeugt, das ich in der DropdownMenu-Property jedes Toolbuttons eingehängt habe (statt bei MenuItem). Damit funktioniert, dass die Menüs wechselseitig geöffnet werden, wenn man auf den jeweiligen zugehörigen ToolButton klickt, das kleine Kästchen beim anderen Menüpunkt (das meinst du mit "verstümmelt"?) tritt nicht auf.

Was zu einem vollwertigen TMainMenu-Ersatz fehlt, ist dass sich das Untermenü schon öffnet, wenn man mit der Maus drüber fährt. Vielleicht kann man das erreichen, wenn man entsprechende Event-Handler programmiert für u.a. TToolButton.OnMouseEnter/OnMouseExit. (PopupMenu.Popup);

Mathias
Beiträge: 6955
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Toolbar zeigt MenuItem "verstümmelt".

Beitrag von Mathias »

Für Delphi gab es eine Komponente, welche dies perfekt beherrschte.
Toolbar2000

https://jrsoftware.org/tb2k.php

Das war noch die Zeit, als MS-Office den Höhepunkt in der Bedienung hatte, bevor es mit jeder Version abwärts ging.
Toolbar2000 war das schönste Widget, das Microsoft je auf dem Märt brachte.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

kirchfritz
Beiträge: 227
Registriert: Mo 3. Jan 2011, 13:34
OS, Lazarus, FPC: Win11 (L 3.0 FPC 3.2.2)
CPU-Target: 64Bit
Wohnort: Nürnberg

Re: Toolbar zeigt MenuItem "verstümmelt".

Beitrag von kirchfritz »

wp_xyz hat geschrieben: Mo 7. Okt 2024, 14:56 Ich habe mal auf das MainMenu verzichtet und stattdessen für jedes Untermenü ein DropDown-Menü erzeugt, das ich in der DropdownMenu-Property jedes Toolbuttons eingehängt habe (statt bei MenuItem). Damit funktioniert, dass die Menüs wechselseitig geöffnet werden, wenn man auf den jeweiligen zugehörigen ToolButton klickt, das kleine Kästchen beim anderen Menüpunkt (das meinst du mit "verstümmelt"?) tritt nicht auf.

Was zu einem vollwertigen TMainMenu-Ersatz fehlt, ist dass sich das Untermenü schon öffnet, wenn man mit der Maus drüber fährt. Vielleicht kann man das erreichen, wenn man entsprechende Event-Handler programmiert für u.a. TToolButton.OnMouseEnter/OnMouseExit. (PopupMenu.Popup);
@wp_xyz: Danke! Ein DropDownMenü anstelle von MenuItem in der Toolbar zu benutzen ist ein sehr guter Lösungsvorschlag, mit dem ich mich zufrieden gebe. Funktioniert, so wie ich mir das vorgestellt hatte. Nochmals vielen Dank!

Antworten