首页 | 源码下载 | 编程控件 | 书籍教程 | 应用方案 | 设计素材 | 项目交易 | 开发文档 | 商业源码 | | 我的帐号
登陆我的帐号
帐 号:
密 码:
我还不是会员,需要注册!

截止2004年12月16日
本站源码总量RAR压缩为 4,206,733 KB。其中免费源码为 1,124,495 KB,商业源码为 3,082,238 KB
C/C++ 129,555 KB
Delphi 1,258,381 KB
Java 120,937 KB
.Net 36,886 KB
PowerBuilder 954,525 KB
Visual Basic 923,454 KB
ASP 259,795 KB
JSP 4,987 KB
其他 94,723 KB

本站是中国频道、中资源、时代互联顶级代理:注册国际域名70元,国内域名130元,各类ASP、PHP、JSP空间8折优惠!
本站承担各类网站制作开发及方案策划,项目经验丰富,欢迎洽谈!

网站动态
对.NET感兴趣吗?对C…
加入会员,送重量级代码!
现在下载速度大幅提高!
关于资源更新的说明
关于下载错误的原因!
源码资源网新版网站投入运…

当前位置:源码资源网首页 > 开发文档首页 > Delphi >Delphi制作带图标的弹出式选单

Delphi制作带图标的弹出式选单
人气:13 文字大小:     作者:

Windows界面的一大特色就是显示丰富多彩的图标,图标不仅美化了Windows的桌面,而且便于直观的操作,给用户带来了极大的方便。在设计程序界面时,Windows风格是很好的参考。


  Delphi一般提供两种设置图标的方法,一个是在Project Options 中指定应用程序的图标,另一个是在Object Inspector 的properties页中提供Icon特性。如果想设计出像Windows开始选单那样美丽的弹出选单,就要自己编写代码了。


  我们知道大多数Windows应用程序本身带有图标,只要将程序本身所带的图标取出,调整图标的大小加入到弹出选单中,一个美丽的选单就完成了。


  首先用ExtractAssociatedIcon从某一程序中获取图标,而图标的尺寸大小不一,不一定能直接添加到选单中,同时Delphi没有提供调整图标大小的功能,这就必须将图标文件转化成位图文件,然后调整位图文件的大小,最后用位图文件取代选单项目即可。其源代码如下:


  type


   TForm1 = class TForm)


   MainMenu1: TMainMenu;


   File1: TMenuItem;


  /**** 选单条中的项目****/


   Open1: TMenuItem;


  /****选单文件中的项目 ****/


  procedure FormCreate Sender: TObject);


  procedure FormShow Sender: TObject);


   private


   {局部参数声明}


   public


   {全局参数声明}


   Icn, Txt, MnuItm: TBitmap;


   end;


  procedure TForm2.FormCreate Sender: TObject);


  var R: TRect;


   HIcn: HIcon;


   Ic: TIcon;


   Index: Word;


   FileName: PChar;


  begin


   /**从某一程序中获取图标**/


   Ic:=TIcon.Create;


   Ic.Handle:=ExtractAssociatedIcon Hinstance, /*文件名称及其路径*/, Index);


   /** 创建位图**/


   Txt:=TBitmap.Create;


   with Txt do


   begin


   Width:=Canvas.TextWidth ’ Test’);


   Height:=Canvas.TextHeight ’ Tes’);


   Canvas.TextOut 0,0,’ Test’);


  end;


   /**将图标复制到上述创建的位图中,并调整它的尺寸 **/


   Icn:=TBitmap.Create;


   with Icn do


   begin


   Width:=32;


   Height:=32;


   Brush.Color:=clBtnFace;


   Canvas.Draw 0,0,Ic);


   end;


   /** 创建最后的位图文件**/


   MnuItm:=TBitmap.Create;


   with MnuItm do


   begin


   Width:=Txt.Width+18;


   Height:=18;


   with Canvas do


   begin


   Brush.Color:=clBtnFace;


   Pen.Color:=clBtnFace;


   Brush.Style:=bsSolid;


   Rectangle 0,0,Width,Height);


   CopyMode:=cmSrcAnd;


   StretchDraw Rect 0,0,16,16),Icn);


   CopyMode:=cmSrcAnd;


   Draw 16,8- Txt.Height div 2),Txt);


   end;


   end;


   end;


  procedure TForm2.FormShow Sender: TObject);


  var


   ItemInfo: TMenuItemInfo;


   hBmp1 : THandle;


  begin


   HBmp1:=MnuItm.Handle;


   with ItemInfo do


   begin


   cbSize:= SizeOf  ItemInfo );


   fMask:= MIIM_TYPE;


   fType:= MFT_BITMAP;


   dwTypeData:= PChar MakeLong  hBmp1, 0 ));


   end;


   /** 用位图取代选单项目Open1 **/


  SetMenuItemInfo  GetSubMenu  MainMenu1.Handle, File1.MenuIndex ),


  Open1.MenuIndex, true, ItemInfo );


   end;

 

文章出处:   发表时间:2004-12-24 16:46:52

1条数据记录,分1页显示 上一页 < [1] > 下一页
相关文章  
没有找到相关的数据!

相关评论  
 当前没有评论!
请登陆后再来发表评论!
当前位置:源码资源网首页 > 开发文档首页 > Delphi制作带图标的弹出式选单
会员升级 | 广告服务 | 网站开发 | 联系我们 | 网站动态 | 客户反馈

CodeRes.com 保留所有权利 2004
本站所有资源仅供学习参考,版权归原作者所有,如侵犯了您的权益请与我们联系