托盘问题,很多软件都没解决的?敬请发表意见(100分)

  • 主题发起人 主题发起人 关月
  • 开始时间 开始时间

关月

Unregistered / Unconfirmed
GUEST, unregistred user!
我做了一个托盘,但是在弹出的菜单上点右键,它还是要去执行菜单上的相关事件,
我要实现以下功能:
1. 在菜单上点左键执行事件,(已实现)
2. 在菜单上点右键不执行事件,同时,菜单消失
敬候佳音
 
鼠标事件加上判断啊,判断是左键还是右键,分别处理就可以了
 
有这种现成的控件了,你去找一个研究一下不就完了
 
把触发的事件放在Click事件中,而不要放在MouseDown中即可.
 
我不知道该如何去判断,我用PopupMenu的Tag去标示,但是不行,而且PopupMenu
也不能获得焦点,我想是不是要用到消息
 
procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if button=mbleft then//左键
begin
//正常执行的代码
end;
if button=mbright then //右键
exit;
end;
 
用楼上的方法。
 
同意 lanbing1400
 
我指的是点击托盘图标弹出的菜单,
procedure TFrmMinder.TrayIconEvent(var msg: TMessage);
var
MousePos: TPoint;
begin
SetActiveWindow(Handle); //右键:取消PopupMenu的操作,当鼠标移开后点左键,PopupMenu自动消失
SetForeGroundWindow(Handle);
PostMessage(Application.MainForm.Handle, WM_NULL, 0, 0);
case msg.lParam of
WM_RButtonDown: //右键弹出PopupMenu
begin
GetCursorPos(MousePos);
Pmu_TrayIcon.Popup(MousePos.x, MousePos.y);
end;
//WM_LButtonDown: ; //左键
WM_LButtonDblClk:
FrmMinder.Show; //双击
else
inherited; //继承其他消息处理
end;
end;

我现在要完成的是:在弹出的PopupMenu上点左键执行事件,点右键不执行事件。
在PopupMenu菜单上我写了三个事件,比如说:showmessage(‘OK’);
 
在TrackPopupMenu中你可能用了TPM_RIGHTBUTTON 这个参数!!!!!!!!!

TPM_RIGHTBUTTON If this flag is set, the user can select menu items with both the left and right mouse buttons.
 
后退
顶部