Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Delphi-Menu-Klasse + ModifyMenu (https://www.delphipraxis.net/66511-delphi-menu-klasse-modifymenu.html)

Motzi 30. Mär 2006 16:17


Delphi-Menu-Klasse + ModifyMenu
 
Hi,

ich möchte in einem Menü (egal ob MainMenu oder PopupMenu - bei beiden ist dasselbe Problem) einen einzigen Menüpunkt selbst zeichnen (ein kleines Logo), alle anderen Menüpunkte sollen aber normal bleiben. Wenn ich die Eigenschaft "Ownerdraw" auf true setze kann ich den einen Menüpunkt selbst zeichen und die Menüpunkte ohne zugewiesenes OnDraw-Event sollten normal gezeichnet werden. Leider werden dann aber bei den normalen Menüpunkte keine Haken (checked/unchecked) mehr angezeigt.
Daher hab ich mir gedacht ich mach es "zu Fuß" per ModifyMenu-API. Gesagt getan, aber es kommen weder WM_MEASUREITEM noch WM_DRAWITEM Nachrichten an. Hab mal gesucht und hab auch in einem Buch (Win32-Lösungen) und im Internet (ältere) Beispiel-Codes gefunden die im Prinzip genauso aussehen wie meiner - diese funktionieren aber auch nicht.

Der Code aus dem Buch ist für Delphi3, ich verwende Delphi6. Wurde die VCL dazwischen derartig geändert? Hat jemand ähnliche Erfahrungen und vielleicht eine Idee wie man das Problem lösen kann?

Gruß, Motzi

marabu 30. Mär 2006 19:00

Re: Delphi-Menu-Klasse + ModifyMenu
 
Hallo Manuel,

setze OwnerDraw des Menu auf false, verbinde die Menu Komponente mit einer ImageList - falls du das nicht sowieso schon getan hast - und pinsele dein Logo im Ereignis OnAdvancedDrawItem().

Grüße vom marabu

Motzi 31. Mär 2006 09:35

Re: Delphi-Menu-Klasse + ModifyMenu
 
Hm.. wäre eine Möglichkeit.. das Logo ist allerdings ein bisschen höher als die normalen Menüpunkte, ich bräuchte also auch WM_MEASUREITEM bzw. OnMeasureItem... :?

Motzi 2. Apr 2006 00:00

Re: Delphi-Menu-Klasse + ModifyMenu
 
*push* kann nicht glauben dass da niemandem was dazu einfällt! ;)

Hawkeye219 2. Apr 2006 00:19

Re: Delphi-Menu-Klasse + ModifyMenu
 
Hi,

wenn Du dem OwnerDraw-Menü eine ImageList zuordnest (die auch leer sein darf), werden die Haken wieder gezeichnet!
Frage mich bitte nicht, warum das so ist...

Gruß Hawkeye

Muetze1 2. Apr 2006 02:24

Re: Delphi-Menu-Klasse + ModifyMenu
 
Na super - sowas erfährt man jetzt - und ich habe mir die ganze Mühe gemacht und male alle Einträge selber...

Motzi 2. Apr 2006 11:24

Re: Delphi-Menu-Klasse + ModifyMenu
 
Zitat:

Zitat von Muetze1
Na super - sowas erfährt man jetzt - und ich habe mir die ganze Mühe gemacht und male alle Einträge selber...

Deswegen frag ich lieber vorher mal hier..! ;)
Außerdem - bevor ich mir da alle Einträge selber zeichne mach ich das lieber per nonVCL - Menü-Resource anlegen, per LoadMenu laden und die entsprechenden WM_COMMAND-Messages zu behandeln ist da sicher weniger Arbeit..! ;)

Edit: @Hawkeye219: grad ausprobiert - funktioniert wunderbar! Danke!


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:51 Uhr.

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