AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi MenuItem neu zeichnen ohne ganzes Menü neu zu zeichnen

MenuItem neu zeichnen ohne ganzes Menü neu zu zeichnen

Ein Thema von StephanR · begonnen am 1. Mai 2018 · letzter Beitrag vom 2. Mai 2018
Antwort Antwort
Seite 2 von 2     12
StephanR

Registriert seit: 1. Mai 2018
6 Beiträge
 
#11

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

  Alt 2. Mai 2018, 11:07
Sollte selbst erklärend sein.

  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
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#12

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

  Alt 2. Mai 2018, 11:12
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
  Mit Zitat antworten Zitat
freejay

Registriert seit: 26. Mai 2004
Ort: Nürnberg
237 Beiträge
 
Delphi 10.4 Sydney
 
#13

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

  Alt 2. Mai 2018, 17:05
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.
[Delphi 10.4.1 Sydney Enterprise; Win10; MySQL; VCL]
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf