Delphi-PRAXiS
Seite 2 von 2     12   

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 Hint beim PopUp (https://www.delphipraxis.net/136-hint-beim-popup.html)

Daniel B 14. Jun 2002 12:51

Hi,

vielleicht ist es einfach einem "normalen" Menü ein Hint zuzufügen, als bei einem Kontextmenü. Ich selbst hab auch noch keine Hints in einem Kontextmenü gesehen. Aber lass dich davon nicht abbringen, ich weiss was du vor hast. ;)

Grüsse, Daniel :)

Tpercon 14. Jun 2002 13:00

Irgendwie muß das gehen und wenn ich die selbst zeichnen muß.

Tpercon 18. Jun 2002 15:52

Hat denn echt keiner 'ne Idee?

himitsu 21. Jun 2012 15:19

AW: Hint beim PopUp
 
Ich weiß, is schon alt, aber da ich auch danach suchte....

http://delphi.about.com/od/vclusing/a/menuitemhints.htm


Theoretisch müßte es so dann doch funktionieren.
Delphi-Quellcode:
var MenuHintWindow : THintWindow;
procedure THauptForm.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);
var
  SubMenu : HMENU;
  MenuItem : TMenuItem;
  HintPos : TRect;
begin
  if (Msg.message = WM_MENUSELECT) and (({MenuFlag}HIWORD(Msg.wParam) <> $FFFF) or ({IDItem}LOWORD(Msg.wParam) <> 0)) then begin
    if {MenuFlag}HIWORD(Msg.wParam) and MF_POPUP <> 0 then begin
      SubMenu := GetSubMenu(HMENU(Msg.lParam), {IDItem}LOWORD(Msg.wParam));
      MenuItem := Self.Menu.FindItem(SubMenu, fkHandle);
    end else
      MenuItem := Self.Menu.FindItem({IDItem}LOWORD(Msg.wParam), fkCommand);
    if MenuItem.Hint <> '' then begin
      if not Assigned(MenuHintWindow) then
        MenuHintWindow := TGenerics.IfThen<THintWindowClass>(Assigned(HintWindowClass), HintWindowClass, THintWindow).Create(Self);
      HintPos.TopLeft    := Mouse.CursorPos;
      HintPos.TopLeft    := Point(HintPos.Left + 16, HintPos.Top + 16);
      HintPos.BottomRight := Point(HintPos.Left + Canvas.TextWidth(MenuItem.Hint), HintPos.Top + Canvas.TextHeight(MenuItem.Hint));
      MenuHintWindow.ActivateHint(HintPos, MenuItem.Hint);
    end else
      Application.HideHint;
    Handled := True;
  end;
end;

Aber WM_MENUSELECT wird nicht aufgerufen, wenn ich die Maus über dem Popup-Menü bewege.

Auch beim direkten Weg kommt nichts an.
Delphi-Quellcode:
private
  procedure WMMenuSelect(var Msg: TWMMenuSelect); message WM_MENUSELECT;
end
Gut, könnte ja sein, daß es an das TPopupMenu gesendet wird und nicht an die TForm, aber dann müßte es doch dennoch am TApplicationEvent.OnMessage (Application.OnMessage) vorbeikommen. :gruebel:

ZOD 10. Jan 2014 06:25

AW: Hint beim PopUp
 
Hallo himitsu,

bin den gleichen Weg gegangen wie Du (Tip von About.com)und kann die WM_MENUSELECT ebenfalls nicht abfangen.
Gibt es hier eine Lösung?


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:53 Uhr.
Seite 2 von 2     12   

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