![]() |
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 |
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 |
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... :?
|
Re: Delphi-Menu-Klasse + ModifyMenu
*push* kann nicht glauben dass da niemandem was dazu einfällt! ;)
|
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 |
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...
|
Re: Delphi-Menu-Klasse + ModifyMenu
Zitat:
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 10:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz