(没有高手了吗?)怎样在有主菜单的窗体右上角加上图标(像IE一样) ( 积分: 100 )

  • 主题发起人 主题发起人 qingquan
  • 开始时间 开始时间
Q

qingquan

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样在有主菜单的窗体右上角加上图标(像IE一样),已经研究好多天了!
 
怎样在有主菜单的窗体右上角加上图标(像IE一样),已经研究好多天了!
 
那个东西的类是 WorkerW,贴在CoolBar上面的

用ToolBar看看能实现不,或者用什么办法往CoolBar上面放东西就行了

楼主可以参考Delphi自带的那个例子,Demos/CoolStuf/Webbrows.dpr

在CoolBar上面建立一个Bands,设置它的Control,看看例子就会明白的
 
你没明白我的意思,是在主菜单的最右端显示图标。
 
呵呵,留下QQ或Email,我把那个exe发给

或者自己去编译我告诉你的那个程序
 
谢谢,你费心了!
Email:Zhouquanqing@yahool.com.cn
 
不好意yahoo.com.cn
 
首先声明:
怎样在有主菜单的窗体右上角加上图标(像IE一样)的说法有点问题, IE的菜单不是直接放在窗口上面的,是放在一个容器上的,然后再容器右边放图标,你的要求是在窗口的主菜单右边放图标,跟IE的做法不同;

如果用Coolbar 和 Toolbar, 在Toolbar的ToolButton 上 “映射” 菜单, 以后再CoolBar右边放图标,也可以实现,但我没有这样做

我现在采用的方法;
增加一个菜单项 logo1(这个菜单就是你要求的图标)
在form 的 onCreate中 将菜单放到右边
if not isRunOnWIN98(false) then
ModifyMenu(MM.Handle, 4, mf_ByPosition or mf_help or MF_OWNERDRAW, 4, nil)
else
logo1.Visible:=false;


然后就是自画菜单啦!!!(不能直接用菜单的OnDrawitem,为什么我也不知道),只能拦截WM_DRAWITEM 消息。
procedure wmDrawitem(var msg: TwmDrawitem); message WM_DRAWITEM;
...


procedure TfmMain.wmDrawitem(var msg: TwmDrawitem);
var
R: TRect;
cvs: TControlCanvas;
begin
if msg.DrawItemStruct.CtlType=ODT_MENU then
begin
cvs:=TControlCanvas.Create;
Try
cvs.Handle:=msg.DrawItemStruct.hDC;
R:=msg.DrawItemStruct.rcItem;
cvs.FillRect(R);
cvs.Draw(R.Left+4, R.Top, Image1.Picture.Graphic); 这里就是啦!!!
cvs.Pen.Color:=clEnd;
cvs.MoveTo(R.Left, R.Top);
cvs.LineTo(R.Left, R.Bottom);
finally
Cvs.Free;
end;
end else inherited;
end;

如果需要,你还可以改变菜单(图标)的宽度(高度不能改变,系统定死了)
procedure logoMM(Sender: TObject; ACanvas: TCanvas; var Width,
Height: Integer);

procedure TfmMain.logoMM(Sender: TObject; ACanvas: TCanvas;
var Width, Height: Integer);
begin
width:=image1.Picture.Width-4;
end;

[:D][:D]OK? 好像在Win98下面有点问题。
 
没有产生我说的效果,不好意思,麻烦您在看一下,要不把程序发给我吧!
Emain:zhouquanqing@yahoo.com.cn 谢谢了。
 
你是win98,还是...?
 
邮件已经发了,楼主不早说多了l,下午才看到,如果没问题,楼主别给错人哦[:D][:D][:D]
 
chenybin:
不知道你实现的方法是什么,是不是在Coobar实现。
 
问题始终没有解决,头好疼[8D][8D][:(]
 
楼上的,我已经把邮件发给你了,还有问题?委屈一下,留下QQ吧
 
莫名其妙,我用的好好的,你说还没有解决?问你是不是Win98,又没有回应
 
后退
顶部