如何编程实现带BAR的图形菜单?(50分)

  • 主题发起人 主题发起人 憔悴
  • 开始时间 开始时间

憔悴

Unregistered / Unconfirmed
GUEST, unregistred user!
就象Windows的开始菜单一样,左边有一个竖着的图片条.右边是菜单项.如何实现之!请指点!
 
去找控件拉,到处都是这样的,<br><br>你若是心情好,时间多的话,自己画吧。
 
转贴(1)<br>------------------<br>菜单项中增加一条空项,在第一行,其bitmap属性中制定你要的位图.<br>菜单的owner draw:=true,<br>在OnMeasureItem中设定菜单长宽,在ownerdraw中画位图<br>procedure TForm1.n1measureitem(....)<br>begin<br>&nbsp; &nbsp; width:=n1.bitmap.width;<br>&nbsp; &nbsp; height:=n1.bitmap.height;<br>end;<br><br>procedure TForm1.n1DrawItem(Sender:Tobject;Acanvas::TCanvas;ARect:<br>TRect;Selected::Boolean)<br>begin<br>&nbsp; &nbsp; ACanvas.draw(ARect.left,ARect.top,n1.bitmap);<br>end;<br>-----------------------<br>转贴(2)<br>首先自己做一副图,在上面写上自己要在菜单上显示的东东,然后用Delphi制作菜单,<br>然后参照下面的代码就行了.<br><br>procedure TfrmMain.mnuShowMainMeasureItem(Sender: TObject;<br>&nbsp; ACanvas: TCanvas; var Width, Height: Integer);<br>begin<br>&nbsp; &nbsp; Height:=18;<br>&nbsp; &nbsp; Width:=140;<br>&nbsp; &nbsp; ACanvas.Brush.Color:=clBlue;<br>&nbsp; &nbsp; ACanvas.TextOut(0,10,TMenuitem(Sender).Caption);<br>end;<br><br>procedure TfrmMain.mnuShowMainDrawItem(Sender: TObject; ACanvas: TCanvas;<br>&nbsp; ARect: TRect; Selected: Boolean);<br>begin<br>&nbsp; acanvas.Draw(0,0,image1.picture.bitmap);<br>&nbsp; acanvas.TextOut(arect.left+image1.picture.bitmap.width+12,arect.top,tmenuitem(sender).caption);<br>end;<br>--------------------<br>这是数据库中的资料 &nbsp; [:)]<br><br>http://www.delphibbs.com/delphibbs/dispq.asp?lid=467811
 
DevExpress Bar的菜单控件做出来的效果不错,就是耗资源多一点。
 
有一个问题:<br>自己画菜单倒是可以,但是如果把右边菜单里的某一个MenuItem变成一个Separator('-')<br>那么这个 横杆 将贯穿到左边的 Bar 区域,这个怎么解决呢??
 
你自己修改啊,我有代码,要就找我tufeiping@sina.com记得发分
 
多人接受答案了。
 
后退
顶部