Ist das ´ne alte Gurke ... Nee, nicht du, Das S, sondern der Beitrag!
Da musste ich doch tatsächlich in meinem Archiv kramen. Um deine Frage zu beantworten, ich habe das in meinem Programm an drei verschiedenen Stellen aufgerufen. Es handelt sich dabei um eine Funktion, die nur die Aufgabe hatte, die Farben im Programm neu einzustellen. Darunter eben auch die Menüfarben. Und diese Funktion habe ich aufgerufen:
1. Beim Programmstart. Logisch.
2. Beim Bearbeiten der Nachricht WM_SYSCOLORCHANGED. Das bedeutet, der Anwender hat irgendwie die eingestellten Systemfarben verändert, und daher lädt das Menü die Farben neu.
3. Bei der speziellen XP-Nachricht WM_THEMECHANGED, was bedeutet, dass der User das Theme von Windows geändert hat, wobei sich ebenfalls die Farben ändern können.
Ich habe aber schon ewig nichts mehr mit diesem Menüdesign gemacht. Mittlerweile ist mir die Funktionalität wichtiger. Hast du es schon mal mit der
XPMenu-Komponente versucht? Soweit ich weiß enthalten die aktuellen Delphi-Versionen ab 7 auch solche ActionMenu-Komponenten (oder wie auch immer die heißen
), die man ebenfalls an den XP-Stil anpassen kann. Delphi benutzt ja selbst dieses Design für seine Menüs.