看看找个能否帮你解决:
怎样用自定义的弹出菜单替换控件的弹出菜单
最近在考研网上遇到一个比较谈得来得朋友,要我帮他做个考研倒记时的东东。
用到了flash.ocx控件(c:winntsystem32macromedflash.ocx)
但是安装了它之后,右键弹出的菜单却是它本身的菜单。
解决办法如下:
1、建立自己的popupmenu1弹出式菜单;
2、加入 Additional中的ApplicationEvents到窗体;
type
TForm1 = class(TForm)
{………………..}
procedure ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
private
public
end;
type
TMyFlash = class(TShockwaveFlash)
public
procedure WMRBUTTONDOWN(var msg: TMsg);
message WM_RBUTTONDOWN;
end;
{//实现代码}
procedure TMyFlash.WMRBUTTONDOWN(var msg: TMsg);
var
P: Tpoint;
begin
if popupmenu <> nil then
{ 加入自己的事件}
begin
GetCursorPos(p);
{//获得当前鼠标位置}
popupmenu.Popup(p.x, p.y);
{//弹出菜单}
end;
end;
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
begin
if Msg.message = WM_RBUTTONDOWN then
begin
{//如果去掉下面这行就是屏蔽右键菜单,现在为自定义右键菜单}
popupmenu1.Popup(Mouse.CursorPos.X, Mouse.CursorPos.Y);
Handled := True;
end;
end;
好久之前我写在blog上的:http://ken.my.gsdn.net/2004/08/09/1826/