我有一个MainMenu1和一个ImageList1控件,MainMenu1的images-->ImageList1,
ImageList1里加载了一幅ICO图标,MainMenu1的自菜单即各个MenuItem的imageindex都是-1,我要实现下列效果:
当点击MainMenu1时,弹出下拉菜单时没有图标,当鼠标指到MainMenu1的下拉菜单时加载图标,如下,当鼠标移到打开文件[O]下拉菜单时,在它前面加载一个图标。当鼠标移到
保存文件[S]下拉菜单时,在它前面加载一个图标。而打开文件[O]下拉菜单前的图标消失。
例:
文件[F]
打开文件[O]
保存文件[S]
.
.
.
代码如下:在子菜单的DrawItem写
if not Selected then
begin
TmenuItem(Sender).Hint:=Inttostr(TmenuItem(Sender).ImageIndex);
TmenuItem(Sender).ImageIndex:=-1;
acanvas.TextRect(arect,arect.Left,arect.Top,(sender as tmenuitem).Caption);
end else begin
if TmenuItem(Sender).Hint<>'' then
TmenuItem(Sender).ImageIndex:=StrToint(TmenuItem(Sender).Hint);
acanvas.TextRect(arect,arect.Left+30,arect.Top,(sender as tmenuitem).Caption);
end;
为什么图标出不来???
ImageList1里加载了一幅ICO图标,MainMenu1的自菜单即各个MenuItem的imageindex都是-1,我要实现下列效果:
当点击MainMenu1时,弹出下拉菜单时没有图标,当鼠标指到MainMenu1的下拉菜单时加载图标,如下,当鼠标移到打开文件[O]下拉菜单时,在它前面加载一个图标。当鼠标移到
保存文件[S]下拉菜单时,在它前面加载一个图标。而打开文件[O]下拉菜单前的图标消失。
例:
文件[F]
打开文件[O]
保存文件[S]
.
.
.
代码如下:在子菜单的DrawItem写
if not Selected then
begin
TmenuItem(Sender).Hint:=Inttostr(TmenuItem(Sender).ImageIndex);
TmenuItem(Sender).ImageIndex:=-1;
acanvas.TextRect(arect,arect.Left,arect.Top,(sender as tmenuitem).Caption);
end else begin
if TmenuItem(Sender).Hint<>'' then
TmenuItem(Sender).ImageIndex:=StrToint(TmenuItem(Sender).Hint);
acanvas.TextRect(arect,arect.Left+30,arect.Top,(sender as tmenuitem).Caption);
end;
为什么图标出不来???
解决方案 »
- VB 的 string 类型 转换成 Delphi string 报错的问题??? 很急的!!!
- 怎样装*.dcu
- sql 语句~~~~~~~~~~~~~~~~~~~~~~~~
- DateTimePicker1?????
- idFTP控件取215个文件以上目录就取不到,BUG??? 谁能帮我解决?
- 数据模块中的问题。
- 请问。。。简单不会耽误时间
- 大家帮帮忙:能不能使quickreport的dataset属性和adoquery相连?
- 请问各位大侠,action属性到底是干什么的,如何用?
- 问问问:如何用Twebbrowser控件将打开的页面保存为mht格式?
- 怎么取Table的最后一条记录(在不移动Table记录的情况下)
- 如何查看系统当前的进程、如何终止(请写出原码)急
ARect: TRect; Selected: Boolean);
var bmp:TBitmap; MyRect:TRect ;
begin
if not Selected then
ACanvas.TextRect(ARect,ARect.Left+2,ARect.Top,(Sender as Tmenuitem).Caption)
else
begin
bmp := TBitmap.Create ;
ImageList1.GetBitmap(TmenuItem(Sender).ImageIndex,bmp);
MyRect := ARect ;
MyRect.Right := MyRect.Left + 20 ;
ACanvas.StretchDraw(MyRect,bmp) ; ARect.Left := MyRect.Right ;
ACanvas.TextRect(ARect,ARect.Left+3,ARect.Top,(Sender as Tmenuitem).Caption); bmp.free ;
end;end;