All articles(网络文学目录) All Pictures(图片目录) All Softwares(软件目录)

 
delphiDelphi多彩的菜单实例

Writer: aaa Article type: Programming skills(编程技巧) Time: 2014/7/19 0:08:45 Browse times: 325 Comment times: 0

delphiDelphi多彩的菜单实例


Head photo

Go homepage
Upload pictures
Write articles

delphiDelphi多彩的菜单实例

Delphi多彩的菜单
实例说明
网上的许多应用程序都具有漂亮的菜单。默认情况下,使用Delphi提供的TMainMenu组件只能设置标准的Windows风格菜单,如何能够自定义菜单呢?本实例演示如何自定义菜单,效果如图1.5所示。

1.5Delphi多彩的菜单
技术要点
在Delphi中重新绘制TMainMenu组件,首先需要将OwnerDraw属性设置为True,然后双击TMainMenu组件打开菜单编辑器,添加菜单项。选中菜单项,在对象观察器中编写OnAdvancedDrawItem事件处理过程,OnAdvancedDrawItem事件在菜单项(OwnerDraw属性设置为True)需要绘制时触发。
实现过程
1.新建一个工程,将主窗口命名为Form1。
2.在Form1窗体上放置TImage、TmainMenu和TStatusBar等组件。设置TImage组件的Picture属性,为其加载一幅图像。双击TMainMenu组件,打开菜单编辑窗口,想TMainMenu组件中添加菜单项。
3.程序代码如下:
procedure TForm1.N3AdvancedDrawItem(Sender: TObject; ACanvas: TCanvas;
ARect: TRect; State: TOwnerDrawState);
begin
ACanvas.Brush.Color := clwhite;
if odSelected in State then
begin
ACanvas.Font.Color := clRed;
ACanvas.Pen.Color := clBlue;
ACanvas.Rectangle(Rect(1,(TMenuItem(Sender).Tag-1)*20,ARect.Right-1,(TMenuItem(Sender).Tag-1)*20+15));
NotifyMessage(TMenuItem(Sender).Caption);
end
else
begin
ACanvas.Font.Color := clBlack;
ACanvas.Pen.Color := clWhite;
ACanvas.Rectangle(Rect(1,(TMenuItem(Sender).Tag-1)*20,ARect.Right-1,(TMenuItem(Sender).Tag-1)*20+15));
end;
ACanvas.TextOut(4,(TMenuItem(Sender).Tag-1)*20+2,TMenuItem(Sender).Caption);
end;

procedure TForm1.N1AdvancedDrawItem(Sender: TObject; ACanvas: TCanvas;
ARect: TRect; State: TOwnerDrawState);
begin
SetBkMode(ACanvas.Handle,TRANSPARENT);
if odSelected in State then
begin
ACanvas.Font.Color := clRed;
ACanvas.Pen.Color := clBlue;
ACanvas.Brush.Color := Color;
ACanvas.Rectangle(Rect(TMenuItem(Sender).Tag-2,32,ARect.Right-5,47));
end
else
begin
ACanvas.Font.Color := clBlack;
ACanvas.Pen.Color := Color;
ACanvas.Brush.Color := Color;
ACanvas.Rectangle(Rect(TMenuItem(Sender).Tag-2,32,ARect.Right-5,47));
end;
ACanvas.TextOut(TMenuItem(Sender).Tag,34,TMenuItem(Sender).Caption);
end;





There are 0 records,
Comment:
Must be registered users to comment(必须是注册用户才能发表评论)

Disclaimer Privacy Policy About us Site Map
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.