定制系统菜单
【打印文章】
通常在应用程序的主窗体中,利用鼠标左键点击左上角的图标,会弹出一个菜单,称之为“系统菜单”,在窗体中并没有系统菜单对应的组件,所以有时需要定制系统菜单时就比较麻烦。可以通过下面的步骤实现:
1) 在系统菜单上添加所需的菜单项。
2) 为新添加的菜单项定义O n C l i c k 事件的处理过程。
在该例程中,在系统菜单中添加了一个“前端显示( A )”菜单项,通过该菜单项,可以使窗体始终显示在最前端或为普通窗体模式。具体实现过程如下:
1) 通过菜单File | New Application 创建一个新的工程。
2) 添加窗体F o r m 1 的O n C r e a t e 事件的处理过程如下:
procedure TForm1.FormCreate(Sender: TO b j e c t ) ;
b e g i n
// 设置系统菜单
A p p e n d M e n u ( G e t S y s t e m M e n u ( H a n d l e , F a l s e ) , M F _ S E PA R ATOR,0,' ');
A p p e n d M e n u ( G e t S y s t e m M e n u ( H a n d l e , F a l s e ) , M F _ S T R I N G , 2 0 0 ,
'前端显示( & A ) ' ) ;
3) 在文件U n i t 1 . p a s 的u s e s 语句中增加如下代码:
u s e s
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
M e n u s ;
. . .
4) 在T F o r m 1 的类型定义中,添加系统菜单中新建菜单项的O n C l i c k 事件的处理过程的声明:
t y p e
TForm1 = class(TForm)
procedure FormCreate(Sender: TO b j e c t ) ;
procedure SystemMenuCommand(var Msg:TWMMENUSELECT);
message WM_SysCommand;
p r i v a t e
5) 手工添加系统菜单中新建菜单项的O n C l i c k 事件的处理过程如下:
procedure TForm1.SystemMenuCommand(var Msg:TWMMENUSELECT);
b e g i n
if Msg.IDItem = 200 then
b e g i n
if Form1.FormStyle = fsNormal then
b e g i n
// 将窗体设置为总在前端显示
Form1.FormStyle := fsStayOnTo p ;
// 重新设置系统菜单
A p p e n d M e n u ( G e t S y s t e m M e n u ( H a n d l e , F a l s e ) , M F _ S E PA R ATOR,0,' ');
A p p e n d M e n u ( G e t S y s t e m M e n u ( H a n d l e , F a l s e ) , M F _ S T R I N G , 2 0 0 , '前端显示( & A ) ' ) ;
// 在新添加的菜单项前增加一个选中标志
M o d i f y M e n u ( G e t S y s t e m M e n u ( H a n d l e , F a l s e ) , 2 0 0 , M F _ C H E C K E D , 2 0 0 ,
'前端显示( & A ) ' ) ;
e n d
e l s e
b e g i n
// 将窗体设置为普通模式
Form1.FormStyle := fsNormal;
// 重新设置系统菜单
A p p e n d M e n u ( G e t S y s t e m M e n u ( H a n d l e , F a l s e ) , M F _ S E PA R ATOR,0,' ');
A p p e n d M e n u ( G e t S y s t e m M e n u ( H a n d l e , F a l s e ) , M F _ S T R I N G , 2 0 0 , '前端显示(&A)');
e n d ;
e n d ;
i n h e r i t e d ;
e n d ;
1) 在系统菜单上添加所需的菜单项。
2) 为新添加的菜单项定义O n C l i c k 事件的处理过程。
在该例程中,在系统菜单中添加了一个“前端显示( A )”菜单项,通过该菜单项,可以使窗体始终显示在最前端或为普通窗体模式。具体实现过程如下:
1) 通过菜单File | New Application 创建一个新的工程。
2) 添加窗体F o r m 1 的O n C r e a t e 事件的处理过程如下:
procedure TForm1.FormCreate(Sender: TO b j e c t ) ;
b e g i n
// 设置系统菜单
A p p e n d M e n u ( G e t S y s t e m M e n u ( H a n d l e , F a l s e ) , M F _ S E PA R ATOR,0,' ');
A p p e n d M e n u ( G e t S y s t e m M e n u ( H a n d l e , F a l s e ) , M F _ S T R I N G , 2 0 0 ,
'前端显示( & A ) ' ) ;
3) 在文件U n i t 1 . p a s 的u s e s 语句中增加如下代码:
u s e s
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
M e n u s ;
. . .
4) 在T F o r m 1 的类型定义中,添加系统菜单中新建菜单项的O n C l i c k 事件的处理过程的声明:
t y p e
TForm1 = class(TForm)
procedure FormCreate(Sender: TO b j e c t ) ;
procedure SystemMenuCommand(var Msg:TWMMENUSELECT);
message WM_SysCommand;
p r i v a t e
5) 手工添加系统菜单中新建菜单项的O n C l i c k 事件的处理过程如下:
procedure TForm1.SystemMenuCommand(var Msg:TWMMENUSELECT);
b e g i n
if Msg.IDItem = 200 then
b e g i n
if Form1.FormStyle = fsNormal then
b e g i n
// 将窗体设置为总在前端显示
Form1.FormStyle := fsStayOnTo p ;
// 重新设置系统菜单
A p p e n d M e n u ( G e t S y s t e m M e n u ( H a n d l e , F a l s e ) , M F _ S E PA R ATOR,0,' ');
A p p e n d M e n u ( G e t S y s t e m M e n u ( H a n d l e , F a l s e ) , M F _ S T R I N G , 2 0 0 , '前端显示( & A ) ' ) ;
// 在新添加的菜单项前增加一个选中标志
M o d i f y M e n u ( G e t S y s t e m M e n u ( H a n d l e , F a l s e ) , 2 0 0 , M F _ C H E C K E D , 2 0 0 ,
'前端显示( & A ) ' ) ;
e n d
e l s e
b e g i n
// 将窗体设置为普通模式
Form1.FormStyle := fsNormal;
// 重新设置系统菜单
A p p e n d M e n u ( G e t S y s t e m M e n u ( H a n d l e , F a l s e ) , M F _ S E PA R ATOR,0,' ');
A p p e n d M e n u ( G e t S y s t e m M e n u ( H a n d l e , F a l s e ) , M F _ S T R I N G , 2 0 0 , '前端显示(&A)');
e n d ;
e n d ;
i n h e r i t e d ;
e n d ;
本栏文章均来自于互联网,版权归原作者和各发布网站所有,本站收集这些文章仅供学习参考之用。任何人都不能将这些文章用于商业或者其他目的。( Pfan.cn )
【编程爱好者论坛】