在开发VCL时。需要创建弹出菜单,遇到2个问题:
1。弹出的位置,不是应该出现的位置。如:在鼠标单击的地方坐标是(10,10)(组件内的坐标)但是弹出出的坐标也是(10,10)但是不在组件内部,而是对于窗体的坐标(10,10)
2。无法和事件建立连接。定义时(Sender:Tobject);在OnClick中无法传递参数进去。
1。弹出的位置,不是应该出现的位置。如:在鼠标单击的地方坐标是(10,10)(组件内的坐标)但是弹出出的坐标也是(10,10)但是不在组件内部,而是对于窗体的坐标(10,10)
2。无法和事件建立连接。定义时(Sender:Tobject);在OnClick中无法传递参数进去。
用
ClientToScreen()
转化成屏幕坐标,然后在指定菜单位置2:
Menu1: TMenuItem;
Menu1.OnClick := MyProc;
Menu1.OnClick(Menu1);//这样才可以传进去
procedure TForm1.MyProc(Sender:Tobject);
beginend;...
Menu1: TMenuItem;
Menu1.OnClick := MyProc; // 这样就可以了