AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi TMenuItem OnMeasureItem/WM_MEASUREITEM zur Laufzeit auslösen
Thema durchsuchen
Ansicht
Themen-Optionen

TMenuItem OnMeasureItem/WM_MEASUREITEM zur Laufzeit auslösen

Ein Thema von Meta777 · begonnen am 29. Jun 2007 · letzter Beitrag vom 16. Sep 2009
Antwort Antwort
Meta777

Registriert seit: 8. Sep 2004
Ort: Magdeburg
248 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

TMenuItem OnMeasureItem/WM_MEASUREITEM zur Laufzeit auslösen

  Alt 29. Jun 2007, 10:56
huhuhuhu...

ich weise zur Laufzeit (normalerweise im FormCreate) die OnMeasureItem und OnAdvancedDrawItem von TMenu-Kompos zu. Aber ich habe gerade feststellen müssen das OnMeasureItem bei TMainMenu.Components wohl nur direkt nach dem Erzeugen des TMenuItems aufgerufen wird. Jedenfalls wird es kein weiteres mal aufgerufen und deswegen habe ich das Problem bei größerer Schriftgöße der Platz nicht ausreicht.
Nu die Frage: Kann man das irgendwie nochmal aufrufen lassen? Gibt es da ne Möglichkeit das TMenuItem.MeasureItem nochmal aufgerufen wird?

Danke und Shalom
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: TMenuItem OnMeasureItem/WM_MEASUREITEM zur Laufzeit ausl

  Alt 29. Jun 2007, 11:54
Hallo,

das Ereignis OnMeasureItem() wird nur dann ausgelöst, wenn sich die Bemaßungsgrundlagen ändern - z.B. wenn die Caption verändert wird.

Zur Not hilft aber immer:

Delphi-Quellcode:
with MainMenu do
begin
  OwnerDraw := not OwnerDraw;
  OwnerDraw := not OwnerDraw;
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
Meta777

Registriert seit: 8. Sep 2004
Ort: Magdeburg
248 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

Re: TMenuItem OnMeasureItem/WM_MEASUREITEM zur Laufzeit ausl

  Alt 16. Sep 2009, 14:03
huhu, auch wenn 's Topic schon einige Jahre alt; hier meine "Lösung" (vllt. hat jmd. mal ein ähnliches Problem):

Diese procedure rufe ich im FormShow auf:
Delphi-Quellcode:
procedure pmHideShowMainMenu(AMainMenu: TMainMenu);
var
  i: Integer;
begin
  for i := 0 to AMainMenu.Items.Count-1 do begin
    if AMainMenu.Items[i].Visible then begin//um keine unsichtbaren Menüpunkte zu zeigen
      AMainMenu.Items[i].Visible := False;
      AMainMenu.Items[i].Visible := True;
    end;
  end;
end;
dadurch wird das zuvor gesetzte OnMeasureItem-Event ausgelöst.

Shalom
  Mit Zitat antworten Zitat
Antwort Antwort


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 13:08 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