当菜单项有一个子菜单时,鼠标悬停在展开子菜单时会触发单击事件。
这个点击事件和用户实际点击有什么区别吗?
我使用 TPopupMenu 作为 cxButton 的下拉属性。
EDIT德尔福2007
不确定这是否适用于 D2007;在 D7 中也是如此。你可以尝试以下方法吗?
type
THackPopupList = class(TPopupList)
private
FActuallyClicked: Boolean;
protected
procedure WndProc(var Message: TMessage); override;
public
property ActuallyClicked: Boolean read FActuallyClicked;
end;
{ THackPopupList }
procedure THackPopupList.WndProc(var Message: TMessage);
begin
FActuallyClicked := Message.Msg = WM_COMMAND;
inherited WndProc(Message);
end;
{ TForm1 }
procedure TForm1.MenuFileOpenClick(Sender: TObject);
var
ActuallyClicked: Boolean;
begin
ActuallyClicked := THackPopupList(PopupList).ActuallyClicked;
...
end;
initialization
PopupList.Free;
PopupList := THackPopupList.Create;
end.
说明:悬停触发的OnClick是由WM_INITMENUPOPUP发起的,而鼠标点击触发的OnClick是由这个WM_COMMAND发起的。
这取决于已初始化的 Menus.pas。但据我了解Delphi单元初始化顺序 http://www.saunalahti.fi/janij/blog/2006-04.html,即使您将此代码放在辅助单元中也是可以保证的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)