Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TMainMenu auf TCard platzieren? (https://www.delphipraxis.net/208242-tmainmenu-auf-tcard-platzieren.html)

PeterPanino 1. Jul 2021 14:02

TMainMenu auf TCard platzieren?
 
Delphi 10.4.2 VCL Application: Leider scheint es keine Möglichkeit zu geben, ein MenuBar (z.B. TMainMenu) auf einem TCard zu platzieren, wenn man z.B. jedem Panel eines CardPanel ein eigenes Menü spendieren möchte.

Man könnte zwar ein TActionMainMenuBar erstellen. Aber das ist viel zu umständlich, da man dafür extra einen ActionManager und für diesen wiederum eine oder mehrere ActionLists erstellen muss. Viel einfacher wäre es, wenn man ganz einfach eine MenuBar auf einem Panel platzieren könnte.

Oder kennt jemand einen Workaround dafür?

Uwe Raabe 1. Jul 2021 15:10

AW: TMainMenu auf TCard platzieren?
 
Nur so 'ne Idee: Auf jedem TCard ein eigenes TMainMenu platzieren und dieses beim Aktivieren der Card dem Form.MainMenu zuweisen.

PeterPanino 1. Jul 2021 15:34

AW: TMainMenu auf TCard platzieren?
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1491740)
Nur so 'ne Idee: Auf jedem TCard ein eigenes TMainMenu platzieren

Gute Idee. Leider kann man auf einem TCard kein TMainMenu platzieren.

PeterPanino 1. Jul 2021 15:39

AW: TMainMenu auf TCard platzieren?
 
Leider hat Embarcadero dem VCL TMainMenu die unsinnige EINSCHRÄNKUNG mit gegeben, dass man TMainMenu nur auf einer TForm platzieren kann. Re-Parenting funktioniert leider auch nicht!

Oder anders ausgedrückt: In der VCL fehlt eine MENUBAR Komponente, die auf jedem Container-Control platziert werden kann!

Uwe Raabe 1. Jul 2021 16:11

AW: TMainMenu auf TCard platzieren?
 
Zitat:

Zitat von PeterPanino (Beitrag 1491742)
Leider hat Embarcadero dem VCL TMainMenu die unsinnige EINSCHRÄNKUNG mit gegeben, dass man TMainMenu nur auf einer TForm platzieren kann.

Na ja, ein
Delphi-Quellcode:
TMainMenu
ist (obwohl am Ende was Sichtbares rauskommt) erstmal kein
Delphi-Quellcode:
TControl
, sondern eine Non-Visible Component und kann somit (genau wie ein
Delphi-Quellcode:
TPopupMenu
) auf einem
Delphi-Quellcode:
TForm
,
Delphi-Quellcode:
TFrame
oder
Delphi-Quellcode:
TDataModule
platziert werden. Man kann aber beliebig viele
Delphi-Quellcode:
TMainMenu
innerhalb eines solchen Containers platzieren und beim Wechsel der
Delphi-Quellcode:
TCard
dann das entsprechende dem MainMenu-Property des Forms zuweisen.

Insofern war meine Formulierung Auf jedem TCard ein eigenes TMainMenu platzieren vielleicht etwas missverständlich, sorry.

PeterPanino 1. Jul 2021 16:40

AW: TMainMenu auf TCard platzieren?
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1491743)
... Man kann aber beliebig viele
Delphi-Quellcode:
TMainMenu
innerhalb eines solchen Containers platzieren und beim Wechsel der
Delphi-Quellcode:
TCard
dann das entsprechende dem MainMenu-Property des Forms zuweisen.

Das wäre nur dann sinnvoll, wenn das MainMenu visuell direkt an das Container-Control angrenzt. Wenn aber das Container-Control visuell vom TMainMenu abgesetzt ist bzw. sich noch andere Controls zwischen dem MainMenu und dem Container-Control befinden, dann kann der Benutzer den logischen Zusammenhang zwischen dem MainMenu (das sich ja an der oberen Seite der TForm befindet) und dem Inhalt des Container-Controls, auf das sich das MainMenu bezieht, nicht herstellen. Denn der Sinn und Zweck einer MenuBar in einem Container-Control ist genau der, dass für den Benutzer ein visueller Zusammenhang zwischen dem Container-Menü und dem Inhalt des Container-Controls besteht.

Uwe Raabe 1. Jul 2021 17:01

AW: TMainMenu auf TCard platzieren?
 
Zitat:

Zitat von PeterPanino (Beitrag 1491745)
Das wäre nur dann sinnvoll, wenn das MainMenu visuell direkt an das Container-Control angrenzt.

Dann bist du aber nicht auf der Suche nach einem TMainMenu, denn das ist kein Control, sondern ein Teil des Formulars - ähnlich wie der Titel oder der Fenster-Rahmen. Das TMainMenu wird ja (außer bei Verwendung von VCL-Styles) nicht von der VCL gezeichnet, sondern intern von Windows.

Außerdem geht ein TMainMenu nur für das Form und nicht für dessen Child-Controls: https://docs.microsoft.com/en-us/win...etmenu#remarks
Zitat:

A menu can be assigned to any window that is not a child window.


Zitat:

Zitat von PeterPanino (Beitrag 1491742)
Leider hat Embarcadero dem VCL TMainMenu die unsinnige EINSCHRÄNKUNG mit gegeben, dass man TMainMenu nur auf einer TForm platzieren kann.

Es handelt sich eben gerade nicht um eine Einschränkung seitens Embarcadero - das war ganz allein Microsoft!

PeterPanino 1. Jul 2021 18:08

AW: TMainMenu auf TCard platzieren?
 
Schade, dass es
Delphi-Quellcode:
TMenuBar
nur in
Delphi-Quellcode:
FMX
gibt und nicht in der
Delphi-Quellcode:
VCL
:

https://i.imgur.com/ux6ocS1.png

TiGü 2. Jul 2021 07:32

AW: TMainMenu auf TCard platzieren?
 
Ich verstehe das Argument mit dem Aufwand nicht.
Ich habe gerade in drei Minuten ein Cardpanel, zwei Cards mit jeweils einer ActionMainMenuBar und einem gemeinsamen ActionManager mit vier Actions zusammengeklickt.

Wo ist denn da der Aufwand?
Da hat es doch länger gedauert, den Eröffnungspost zu schreiben?! :glaskugel:

PeterPanino 2. Jul 2021 08:39

AW: TMainMenu auf TCard platzieren?
 
Zitat:

Zitat von TiGü (Beitrag 1491758)
Ich verstehe das Argument mit dem Aufwand nicht.
Ich habe gerade in drei Minuten ein Cardpanel, zwei Cards mit jeweils einer ActionMainMenuBar und einem gemeinsamen ActionManager mit vier Actions zusammengeklickt.

Ob du's glaubst oder nicht - Programmieren besteht nun mal nicht nur aus "Zusammenklicken" ...


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:31 Uhr.
Seite 1 von 2  1 2      

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