Delphi-PRAXiS
Seite 2 von 2     12   

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 MenuItem neu zeichnen ohne ganzes Menü neu zu zeichnen (https://www.delphipraxis.net/196205-menuitem-neu-zeichnen-ohne-ganzes-menue-neu-zu-zeichnen.html)

StephanR 2. Mai 2018 10:07

AW: MenuItem neu zeichnen ohne ganzes Menü neu zu zeichnen
 
Zitat:

Zitat von EWeiss (Beitrag 1401040)
Sollte selbst erklärend sein.

Delphi-Quellcode:
  PDis: PDrawItemStruct absolute lP;
Initialisierung..

Delphi-Quellcode:
    WM_DRAWITEM:
      begin
        PDis := Pointer(lP);
        case PDis^.CtlType of
          ODT_MENU: // 1 Ownerdrawn menu item
            begin
              hMenuWnd := WindowFromDC(PDis.HDC);

gruss

Hallo MWeiss,

ich habs immer noch nicht kapiert...
Für mich sieht dies so aus, als setzt Du voraus, es gäbe bereits eine Message WM_DRAWITEM, die ich gerade empfangen und analysieren kann.

So wie ich das sehe, muss ich aber diese Message selber zusammenstellen wenn ich eine MenuItem-Caption geändert habe (es wird ja beim Ändern der Caption eines MenuItem keine solche Message ausgelöst, sonst hätte ich ja das ganze Problem nicht).
Woher bekomme ich denn dann die ganzen Infos über den DeviceContext etc., die mir die empfangene Message einfach so schenken würde, damit ich die Message auslösen kann?

Viele Grüße
Stephan

EWeiss 2. Mai 2018 10:12

AW: MenuItem neu zeichnen ohne ganzes Menü neu zu zeichnen
 
Wenn du ein Menu erstellst wird WM_DRAWITEM immer aufgerufen unabhängig davon ob es ein OwnerDraw Menu ist oder nicht.
Wenn du mit VCL arbeitest musst du diese Message natürlich überschreiben wenn du damit arbeiten möchtest.

such mal im Forum da wird sich bestimmt was finden..
Ein Beispiel hier.

https://www.delphipraxis.net/186217-...usfuehren.html

gruss

freejay 2. Mai 2018 16:05

AW: MenuItem neu zeichnen ohne ganzes Menü neu zu zeichnen
 
Mir scheint ja, dass Du zwar mit einem TPopUpMenu arbeitest, aber eigentlich ja tabellarische Informationen anzeigst. Dann könnte man auch ein Grid oder eine Listbox verwenden. Dann müsstest Du dem - für Deinen speziellen Anwendungsfall - zickigen PopUpMenü keine Manieren beibringen, sondern könntest mit einem sehr genügsamen Grid oder einer ListBox arbeiten. :wink:


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:49 Uhr.
Seite 2 von 2     12   

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