![]() |
TMenuItem OnMeasureItem/WM_MEASUREITEM zur Laufzeit auslösen
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 |
Re: TMenuItem OnMeasureItem/WM_MEASUREITEM zur Laufzeit ausl
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:
Grüße vom marabu
with MainMenu do
begin OwnerDraw := not OwnerDraw; OwnerDraw := not OwnerDraw; end; |
Re: TMenuItem OnMeasureItem/WM_MEASUREITEM zur Laufzeit ausl
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:
dadurch wird das zuvor gesetzte OnMeasureItem-Event ausgelöst.
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; Shalom |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:58 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-2025 by Thomas Breitkreuz