Delphi-PRAXiS

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 TMenuItem OnMeasureItem/WM_MEASUREITEM zur Laufzeit auslösen (https://www.delphipraxis.net/95021-tmenuitem-onmeasureitem-wm_measureitem-zur-laufzeit-ausloesen.html)

Meta777 29. Jun 2007 10:56


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

marabu 29. Jun 2007 11:54

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:
with MainMenu do
begin
  OwnerDraw := not OwnerDraw;
  OwnerDraw := not OwnerDraw;
end;
Grüße vom marabu

Meta777 16. Sep 2009 14:03

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


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:33 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