Delphi-PRAXiS

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 TJvPopupMenu und OwnerDraw (https://www.delphipraxis.net/110714-tjvpopupmenu-und-ownerdraw.html)

StYxXx 23. Mär 2008 03:24


TJvPopupMenu und OwnerDraw
 
Ich möchte in den OnDraw-Ereignissen eines Jedi-PopupMenus diverse Aktionen ausführen (u.a. halt das Aussehen des menüs manipulieren).

Das Menü und die jeweiligen Items kennen die Ereignisse "OnDrawItem" (Items zusätzlich noch "OnAdvancedDrawItem"), welche ausgelöst werden sollten, wenn JvPopupMenu.OwnerDraw = true ist.
Allerdings funktioniert das nicht. Die Eigenschaft "OwnerDraw" ist im Komponenteninspektor erst gar nicht vorhanden, daher muss ich den Wert per Quellcode setzen, was auch funktioniert (Prüfung zeigt, dass "true"). Die onDraw-Ereignisse werden jedoch niemals ausgelöst. :?

Weiß jemand warum? Ich habe nur altes gefunden, wonach es einmal ein paar Fehler bei den Komponenten und der Ereignisbehandlung gab, die eigentlich repariert wurden. Es wirkt allerdings, als hätte man die Eigenschaft OwnerDraw nachträglich versteckt. :gruebel:

Aus der JvMenus-Unit:
Delphi-Quellcode:
property OwnerDraw stored False;

marabu 23. Mär 2008 08:30

Re: TJvPopupMenu und OwnerDraw
 
Moin,

welchen ItemPainter verwendest du denn?

Frohe Ostern

StYxXx 23. Mär 2008 18:25

Re: TJvPopupMenu und OwnerDraw
 
Hi,

nutze gerade diesen XpMenuItemPainter.
Ich hab ihn aber gerade entfernt und mit dem Style-Wert gespielt. Ändert auch nichts. Nichtmal bei Style=msOwnerDraw wird das Ereignis ausgelöst. Dafür hat man dann auch kein wirkliches Menü mehr ;)

Danke und gleichfalls frohe Ostern

toms 23. Mär 2008 19:07

Re: TJvPopupMenu und OwnerDraw
 
Hallo, das OnMenuDrawItem Ereignis von TJvPopupMenu wird aber schon ausgelöst? Bei mir zumindest.

StYxXx 23. Mär 2008 19:27

Re: TJvPopupMenu und OwnerDraw
 
Zitat:

Zitat von toms
Hallo, das OnMenuDrawItem Ereignis von TJvPopupMenu wird aber schon ausgelöst? Bei mir zumindest.

Habe gerade nochmal rumprobiert. Es wird nur ausgelöst, wenn JvPopupMenu.Style = msOwnerDraw ist. Allerdings auch dann nur das DrawItem-Ereignis des Menüs, nicht die Ereignisse der einzelnen Items.
Ist ein anderer Stil oder Painter gesetzt gechieht gar nichts.

Und ich wollte ja nicht das gesamte Menü selbst zeichnen, sondern nur bei einem Eintrag das Aussehen anpassen ;) Bei den normalen Menü-Komponenten ist das auch kein Problem (dafür hat man dann nicht den schicken XP- oder Office-Look).

toms 23. Mär 2008 19:36

Re: TJvPopupMenu und OwnerDraw
 
Zitat:

Und ich wollte ja nicht das gesamte Menü selbst zeichnen, sondern nur bei einem Eintrag das Aussehen anpassen ;)
Es wird ja das Item + Rect übergeben:
Delphi-Quellcode:
Item: TMenuItem; Rect: TRect;

StYxXx 23. Mär 2008 20:02

Re: TJvPopupMenu und OwnerDraw
 
Zitat:

Zitat von toms
Zitat:

Und ich wollte ja nicht das gesamte Menü selbst zeichnen, sondern nur bei einem Eintrag das Aussehen anpassen ;)
Es wird ja das Item + Rect übergeben:
Delphi-Quellcode:
Item: TMenuItem; Rect: TRect;

Dafür kein Canvas ;)
Aber ist auch egal (auch wenn ich es mir jetzt irgendwo herhole), weil bei ja zb bei den XP-Stil-Menüs auch das Ereignis nicht ausgelöst wird. Fange ich es bei msOwnerDraw ab habe ich gar keine Menüeinträge, müsste also alle selbst zeichnen, inkl. dem Stil-Design. Und dann kann ich auf die Jedi-Komponenten auch verzichten, da ich so mehr Arbeit hätte, also ohne. Ich finde es nur seltsam, dass die Ereignisse nicht ausgelöst werden, obwohl man es erwarten würde.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:55 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