![]() |
Menu einklappen
Ich benutze gelegentlich die WM_Help Message, die gesendet wird, wenn die F1-Taste gedrückt wird, während die Maus auf einen Menu-Eintrag zeigt, um eine .hlp Datei zu öffnen und zu dem für diesen Menu-Eintrag definierten Text zu springen.
Problem dabei: Das Menu bleibt aufgeklappt und verdeckt teilweise den Hilfe-Text. Ist nicht wirklich ein Problem, weil mit einem Klick in den Hilfe-Text das Menu eingeklappt wird, ist aber unschön. Ich habe u.A. versucht einen Mausklick auf den Punkt(0,0) in der Form zu simulieren, was das Menu einklappen sollte.
Code:
Funktioniert aber nicht, sondern löst ein Klick auf den Menu-Eintrag aus.
Mouse_Event(MOUSEEVENTF_LEFTDOWN or MOUSEEVENTF_ABSOLUTE,0,0,0,0);
Mouse_Event(MOUSEEVENTF_LEFTUP or MOUSEEVENTF_ABSOLUTE,0,0,0,0); Frage: Wie kann ich bewirken, dass das Menu eingeklappt wird, ohne manuell irgendwo hinzuklicken.
Delphi-Quellcode:
PROCEDURE TMain.WMHelp(var Msg:TMessage);
var HlpId,X:Integer; PHInfo:PHelpInfo; MI:TMenuItem; Ctrl:Boolean; begin Ctrl:=GetAsyncKeyState(VK_Control)<0; if Assigned(Menu) then begin PHInfo:=PHelpInfo(Msg.LParam); if PHInfo.iContextType=HELPINFO_MENUITEM then begin MI:=Menu.FindItem(PHInfo.iCtrlId,fkCommand); if Assigned(MI) then if Ctrl and (MI.Hint<>'') then begin X:=ScreenToClient(PHInfo.MousePos).X; ShowHint(X,MI.Hint) // Zeigt den Hint am unteren Rand des Fensters end else begin // Mouse_Event(MOUSEEVENTF_LEFTDOWN or MOUSEEVENTF_ABSOLUTE,0,0,0,0); // Mouse_Event(MOUSEEVENTF_LEFTUP or MOUSEEVENTF_ABSOLUTE,0,0,0,0); HlpId:=-1; if MI.IsLine then HlpId:=HelpTopicToHelpId('miBreakLine') else HlpId:=HelpTopicToHelpId(MI.Name+Name); if HlpId<0 then HlpId:=HelpTopicToHelpId('Menu'+Name); if HlpId>=0 then ShowHelp(HlpId); end; end; end; end; |
AW: Menu einklappen
|
AW: Menu einklappen
Zitat:
Delphi-Quellcode:
funktioniert perfekt.
SendMessage(Handle, WM_CANCELMODE, 0, 0);
|
AW: Menu einklappen
Ein simples
![]() |
AW: Menu einklappen
Zitat:
Frage mich, warum ich das nicht gefunden habe. Hab mich um und dumm gesucht, zugegebenerweise nur bei TMenuItem. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:12 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