Delphi制作带图标的弹出式选单

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;

以上程序在Windows98、Delphi 4.0环境下调试通过

时间: 2024-12-08 16:19:40

Delphi制作带图标的弹出式选单的相关文章

WPS演示中怎么制作带图片的图标按钮

  WPS演示中怎么制作带图片的图标按钮           1.打开WPS演示,新建空白文档,把里面的文本框全部删除. 2.点击菜单栏--插入--形状. 3.选择一款图标样式. 4.鼠标按住不放,在空白处画出该图标. 5.右击图标,选择设置对象格式. 6.在颜色与线条标签,点击颜色后面的小三角符号,选择填充效果. 7.然后切换到图片标签,点击插入图片. 8.在本地选择一张精美的图片,插入. 9.OK了,看看制作的图标,是不是很精美呢?

word2013怎样制作带中括号的数字编号

  word2013制作带中括号的数字编号步骤1 :首先打开microsft office 2013中的组件之一word,然后打开要进行编辑的文档,如图所示 word2013制作带中括号的数字编号步骤2 :接着把光标定位在文档的正文中,然后点击[开始]选项卡 word2013制作带中括号的数字编号步骤3 :接着点击[开始]选项卡下方工具栏中的[替换]工具图标. word2013制作带中括号的数字编号步骤4 :然后在[查找和替换]对话框中点选[特殊格式]按钮,在弹出的菜单中选择[脚注标记] wor

用InstallShield6.22制作带ODBC安装软件

项目快接近尾声了,总要给自己精心制作的东东做一件漂亮的嫁衣吧.我选择 了InstallShield6.22来制作带ODBC数据库的安装软件,InstallShield可以说是 软件安装的最好制作工具.废话少说,让我们一齐动手! 首先,用 InstallShield的project wizard创建一个standard setup project,如图一中输 入工程名,应用程序名.公司名.版本号.选择自己做好的可执行文件,选择下 一步. 图一 步骤一 在向导的step2中选择语言,继续按下一步如图

Excel制作带涨跌箭头的柱形图的方法

  Excel制作带涨跌箭头的柱形图的方法          基础数据与图表效果 第1步:单击数据区域任意单元格,点击[插入][簇状柱形图].插入一个默认样式的柱形图. 第2步:依次单击网格线,按Delete键清除.同样的方法,去掉图表标题,主纵坐标轴.图例项. 第3步:右键单击图表数据系列[设置数据系列格式],系列重叠为-8%;分类间距为90%. 设置数据系列填充颜色: 第4步:添加辅助数据. Y轴1公式为: =IF(C2 Y轴2公式为: =IF(C2>=B2,C2+1,NA()) 复制Y轴1

Word怎么制作带备忘录的精美日历?

  Word怎么制作带备忘录的精美日历?          1.首先,新建一个文档,双击标尺,调出页面设置(也可以在页面布局--页面设置中进入);将页边距设置为2cm,纸张为B5纸(A4纸太大,也可以自定义). 2.之后,在文档中按两次Enter键,光标位于第二个段落标记上;点击插入--表格,建立一个7列6行的表格. 3.建立后,点击表格右下角的控制点,向下拖动,使其扩大. 4.扩大后,鼠标放在表格第二条线上,按左键不动向上拖放;并将光标置于第一个标记上,输入内容,设置字体,大小 . 5.因表格

Excel怎么制作带控件的动态图表

  Excel怎么制作带控件的动态图表          先看效果: 图表中始终显示5天的PM2.5数据,当调整滚动条时,图表会自动更新结果. 首先是数据源,为某地一个时期的PM2.5数据. 步骤一 先插入一个滚动条控件. 右键单击控件,设置控件格式. 最小值选择1 最大值可以根据数据情况来决定 单元格链接选择一个空白单元格,如D6. 步骤二 按Ctrl+F3,打开名称管理器,新建两个自定义名称: 日期 =OFFSET(Sheet1!$A$1,Sheet1!$D$6,,5) 数据 =OFFSET

如何在ppt中制作铁路图标

  在ppt中制作铁路图标的方法: 在PPT中插入一个圆,宽高为12厘米,颜色RGB(252,207,0),无线条. 接着再插入一个圆,宽高为11厘米,颜色RGB(27,30,135),无线条.然后与第一个大圆居中对齐. 接着再插入两个圆,大圆宽高为7.3厘米,小圆宽高为5.5厘米,居中对齐. 然后先选中大圆,后选中小圆,点击格式,插入形状,合并形状,剪除. 剪除后的到如下图型. 接着插入一个矩形,宽为:1.6厘米,高为:0.8厘米.如图放置. 然后先选两个图形,点击格式,插入形状,合并形状,联

金山wps制作带圈数字字符、带圈文字的方法

  金山wps制作带圈数字字符.带圈文字的方法.可能很多网友在浏览文档的时候,都看过带圈的数字字符,不过,都+不知道怎么插入这样的带圈的数字字符,在今天的金山wps教程中,我们就专门来讲一下带圈符号的制作方法,不仅仅可以制作带圈数字符号,还可以制作带圈文字,一起来看看是怎么办到的吧! 带圈字符 参考教程: WPS文字中带圈字符使用小妙招 金山文字2005中的带圈字符功能最多可支持制作两个汉字的带圈文字(如首图所示,Word 2003只支持一个汉字),支持两个英文字符,数字最大支持到99.这远远不

WPS制作带斜线表头的表格

  如何用WPS制作带斜线表头的表格 ·斜线表头 金山文字可以方便地生成带有斜线的表头,方法是: 光标定位在需要设置斜线的单元格中. 执行[表格][绘制斜线表头]命令,打开如图2-24所示的[斜线单元格类型]对话框. 单击选择所需的斜线类型示例框. 单击[确定]按钮,当前单元格中出现斜线. 在相应位置输入文字即可. 提示: 若想取消单元格中的斜线,只需在图所示的对话框中单击选择第一个空斜线框即可.已输入的内容不会被删除.