再问制做象WINDOWS开始那样的弹出式菜单?(50分)

  • 主题发起人 主题发起人 wind98
  • 开始时间 开始时间
W

wind98

Unregistered / Unconfirmed
GUEST, unregistred user!
我查了以前的问答,做法如下:
1.在Form1上放三个控件PopupMenu1,Image1
2.PopupMenu1.ownerdraw:= True;
PopupMenu1的第二个Item的Break:=mbBarBreak;//或mbBreak;
PopupMenu1的每一个Item的OnDrawItem事件中加入以下代码:
ACanvas.Draw(0,0,Image1.Picture.Graphic);
3.Form1.PopupMenu:=PopupMenu1;
4.运行...
发现问题:
在窗体中按鼠标右键弹出的菜单左边图像区太宽了,有三四厘米宽(不知道这样说是否明白?)
而不象Windows本身按开始时弹出的菜单那样,左边蓝色带只有一厘米多一点,我做出来的
是它的两倍(目视)?还有就是如果菜单中有分隔符的话会画到图像中去?
请问如何解决?

 
第一个Item.OnMeasureItem里调整长宽
 
把ImageList中的图象的高度和宽度设置成合适的值
 
Another_eYes,好久不见,回来了?
 
回来看看. 过几天我的控件包就能完工了. 不过是alpha版. hehehehe
要找人测试啦
 
请用COOLMENU控件,里面的第二个DEMO就是有像开始菜单那样有一个BAR的菜单,很简单
http://go18.163.com/~hua8hua/
 
用coolmenu,有例程。
很cool哟。
http://delphi.yesite.com/
 
多人接受答案了。
 
后退
顶部