2013-07-16 13 views
7

Ich habe einen Stil auf eine VCL-Anwendung in Delphi XE2 angewendet, aber es funktioniert OK, aber es scheint, dass das Hauptmenü den Stil ignoriert hat. Siehe angehängtes Bild. Ist das ein normales Verhalten? enter image description hereDelphi XE2 Stil: Hauptmenü Ignoriert

Irgendwelche Ratschläge, wie man Stil auf das Hauptmenü anwendet?

+3

See [ 'dieser Comment'] (http://theroadtodelphi.wordpress.com/2012/03/06/adding-vcl-styles-support-to-a-tpopupmenu-in-2- Zeilen-Code/# Kommentar-1756). Rodrigo schlägt vor, dort TActionMainMenuBar anstelle von TMainMenu zu verwenden. Aber er wird bald oder später hier mit der Antwort sein, würde ich sagen :-) – TLama

Antwort

10

Dies ist eine Einschränkung des Vcl Style Hooks TMainMenuBarStyleHook. Der normale Ansatz, um diese Art von Problem zu beheben, ist erstellen und registrieren neue Style-Hook, aber leider diese Vcl-Stil-Hook wird intern von der TFormStyleHook (die vcl-Stil-Hook der Formulare), so dass Sie benötigen, die Sie ein neues Formular erstellen Stil Haken und das bedeutet eine Menge Arbeit.

Also mein Vorschlag ist das Ersetzen der TMainMenu für eine TActionMainMenuBar Komponente, die sehr gut mit den vcl-Stilen funktioniert.

enter image description here

+0

vielleicht können Sie In-Memory-Patching verwenden, anstatt den Formular-Hook von Grund auf neu zu erstellen? –

+1

In diesem speziellen Fall erfordert das Patchen der Methode im Speicher mithilfe einer Umleitung einen ähnlichen Aufwand als das Schreiben des Vcl-Style-Hooks von Grund auf. – RRUZ