哈哈,这些控件都是有popupmenu属性的,只要指向相关的popummenu就行了阿……
解决方案 »
- pascal中指针问题?
- [急]SQLDMO带进度条恢复数据库的问题
- 请问:有谁知道THexEditor控件哪里可以下载吗?谢谢
- 请教如何实现对Word文档的存取?
- 高分求助:Delphi数据库程序在运行期间产生del*.db的问题
- Delphi如何提取网页链接和链接文本
- OpenDialog可以通过设置初始路径显示网上邻居么?
- delphi7 如何实现添加多条记录到dbgrideh中,然后一次保存到access数据库
- 难题(我要自杀了),还是没有解决的难题,我校的教授不知如何是好,说foxbase大概能解决,欢迎灌水!!!!
- 一个菜鸟问题!!!
- 谁住在北京大兴区这边(北京南边),一起租房如何?
- 帮帮我吧~~~~~~~~My God!!!!!!我不得已而为之啊~~~急急急急急急急!!!
procedure TPopupMenu.Popup(X, Y: Integer);
const
Flags: array[Boolean, TPopupAlignment] of Word =
((TPM_LEFTALIGN, TPM_RIGHTALIGN, TPM_CENTERALIGN),
(TPM_RIGHTALIGN, TPM_LEFTALIGN, TPM_CENTERALIGN));
Buttons: array[TTrackButton] of Word = (TPM_RIGHTBUTTON, TPM_LEFTBUTTON);
var
AFlags: Integer;
begin
FPopupPoint := Point(X, Y);
SetBiDiModeFromPopupControl;
DoPopup(Self);
FItems.InternalRethinkHotkeys(False);
FItems.InternalRethinkLines(False);
FItems.RebuildHandle;
AdjustBiDiBehavior;
AFlags := Flags[UseRightToLeftAlignment, FAlignment] or Buttons[FTrackButton] or
(Byte(FMenuAnimation) shl 10);
TrackPopupMenu(FItems.Handle, AFlags, X, Y, 0 { reserved }, PopupList.Window, nil);
end;
///////////////////////////
function TrackPopupMenu; external user32 name 'TrackPopupMenu';
下面是具体的实现方法。例如,我们要将[新建]和[保存]两选项加入到系统菜单中。先将一PopupMenu组件加入表单,双击此组件进入PopupMenu设计器,设置[新建]和[保存]菜单项,后单击表单空白处,再选中Objector Inspector的Event选项卡,双击OnCreate事件,进入单元窗口,编写如下代码:
Procedure Tform1,FormCreate(Sender:TObject);
Begin
With PopupMenul do
For I:=1 do
AppendMenu(getsystemmenu(self,handle,false),mf-popup,items[I],handle,pchar(items[I],caption));
在变量中添加:Var I:Integer;
编译运行后就会看到系统菜单中多了[新建]和[保存]两项。
下面我们来完成系统菜单项的响应。在Tform1的类定义中的Public部分插入如下代码:
Procedure WMSysCommand(var Msg:Tmessage);
message WM-SysCommand;
其中WMSysCommand为用户定义的响应函数。
Procedure WMSysCommand(var Msg:Tmessage);
Var
Item:Tmenuitem;
Begin
Inherited;
Item:=popupmenu1.Finditem(msg.wparam,fkcommand);
If not(item=nil) then
Item.click;
End
这样,系统菜单项就可以调用原有菜单项的click函数。
HMENU hMenu, // handle to shortcut menu
UINT uFlags, // options
int x, // horizontal position
int y, // vertical position
int nReserved, // reserved, must be zero
HWND hWnd, // 把窗体的handle传递给这个参数
CONST RECT *prcRect // ignored
HMENU hMenu, // handle to shortcut menu
UINT uFlags, // options
int x, // horizontal position
int y, // vertical position
int nReserved, // reserved, must be zero
HWND hWnd, // 把窗体的handle传递给这个参数
CONST RECT *prcRect // ignored