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
Thema durchsuchen
Ansicht
Themen-Optionen

MenuItem neu zeichnen ohne ganzes Menü neu zu zeichnen

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

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

MenuItem neu zeichnen ohne ganzes Menü neu zu zeichnen

  Alt 1. Mai 2018, 10:51
Hallo DPler,

in meinem aktuellen Projekt muss ich während ein PopUpMenü bereits geöffnet ist und dargestellt wird den Caption mehrerer MenuItems ändern.
Die Änderung selbst ist weiters unproblematisch, allerdings löst das Ändern der Caption das Kommando MenuChanged(true) aus, welches dann das
ganze Menü neuzeichnet. Dabei wird aber bei jeder Änderung das PopUp geschlossen und neu geöffnet, was ganz nervig "flackert".
Ich habe daraufhin eine Childklasse erstellt (ThackedMenuItem) und darin die SetCaption-Funktion so überschrieben, dass ich MenuChanged blockieren kann.

Leider habe ich bislang keinen Weg gefunden, trotzdem das Neuzeichnen des jeweiligen MenuItem auszulösen (und nur dieses). Erst wenn der Nutzer mit der Maus darüberfährt wird über das Hover-Ereignis der Menüeintrag neu gezeichnet.

Gibt es irgend einen anderen Weg, das Neuzeichnen auch ohne Mausereignis auszulösen? Invalidate etc. gibt es ja leider nicht, da TMenuItem kein zeichenbares Control ist... Kann man Hover oder Mouseleave an ein MenuItem senden, so dass dann neu gezeichnet wird?

Alternativ habe ich versucht, in der SetCaption-Funktion die Routine DrawItem aufzurufen (ist OwnerDraw). Dabei habe ich es aber bislang nicht geschafft den dazugehörigen Canvas des Menüfensters zu ermitteln. Somit klappt das neu selber darüber zeichnen bislang nicht.

Es wäre toll, wenn Ihr für eine der beiden Varianten eine Lösung kennen solltet und diese hier posten könntet.

Vielen Dank
Stephan
  Mit Zitat antworten Zitat
 

 

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 01:48 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