手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>delphi>列表

用Delphi制作个性化的菜单

来源:互联网 作者:西部数码 时间:2008-04-09
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
背景的填充色,$002222FF为起始色


ACanvas.FillRect(Rect(xb,ARect.Top,xb 1,ARect.Bottom));


inc(xb);


end;


ImageList1.Draw(ACanvas,ARect.Left 1,ARect.Top 1,0,true); //在左边绘制图标


ACanvas.Font.Color:=clWhite; //被选中时的字体前景色是白色


SetBkMode(ACanvas.Handle,TRANSPARENT); //必须重设背景模式为透明


ACanvas.TextOut(ARect.Left 20,ARect.Top 4,Item.Caption);//front color,which is white font


end;


end;


在各菜单项的OnDrawItem事件处(如五所示)均调用此过程,运行程序可以看到一个有背景图、所选菜单项左边有一个图标且背景色是由红到黄渐变的菜单。


㈡ 以下是实现上述个性化菜单的自定义过程DrawItem的另一个示例的代码。为一个有图标的弹出式菜单,不作过多的说明了。


procedure TForm1.DrawItem(Item:TMenuItem; ACanvas: TCanvas; ARect: TRect; Selected: Boolean);


var


i,xb:integer;


begin


//设置字体和其前景色


ACanvas.Font := Screen.IconFont;


ACanvas.Brush.Color := clBtnFace;


ACanvas.FillRect(ARect);


ACanvas.TextOut(ARect.Left 20,ARect.Top 4,Item.Caption);



if Selected then begin


//绘制当前选择的菜单项


xb:=0;


for i:=0 to ARect.Right do begin


ACanvas.Brush.Color :=clTeal i*$100;//gradient back color


ACanvas.FillRect(Rect(xb,ARect.Top,xb 1,ARect.Bottom));

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!