之前发了一个帖子http://topic.csdn.net/u/20101214/22/6228f14a-4690-4589-8375-9f97d3ece0c0.html,等了两天没有得到答案。很久很多次想要这个效果,今天开了个夜车终于自己解决了。分享、庆祝、散分!
效果如下图:
百度上搜到的一篇博文证明了我的想法是实际存在的
“下拉按钮有两种样式:
1、在按钮的右边显示箭头,两者之间有间隔,单击按钮的时候象其它正常
按钮一样,发送的是WM_COMMAND消息,只有在单击箭头的时候才发送TBN_DROPDOWN 消息,弹出下拉
菜单。这种按钮使用比较多,需要 4.72 版(IE 4.01 和Win98以后)支持。
2、在按钮的图案右边显示一个箭头,单击按钮的时候,整个按钮都下沉,并且弹出下拉菜单。需要
添加BTNS_WHOLEDROPDOWN属性,版本要求比较高,需要 5.80版Comctl32.dll(IE 5)支持。”
(摘自書童自留地 工具条研究手记7)
注意到BTNS_WHOLEDROPDOWN这个常量,发现CommCtrl.pas里已经定义好了,只是Delphi没有使用到。于是动手修改了ComCtrls.pas的TToolBar.UpdateItem方法,果然成功了!
效果如下图:
百度上搜到的一篇博文证明了我的想法是实际存在的
“下拉按钮有两种样式:
1、在按钮的右边显示箭头,两者之间有间隔,单击按钮的时候象其它正常
按钮一样,发送的是WM_COMMAND消息,只有在单击箭头的时候才发送TBN_DROPDOWN 消息,弹出下拉
菜单。这种按钮使用比较多,需要 4.72 版(IE 4.01 和Win98以后)支持。
2、在按钮的图案右边显示一个箭头,单击按钮的时候,整个按钮都下沉,并且弹出下拉菜单。需要
添加BTNS_WHOLEDROPDOWN属性,版本要求比较高,需要 5.80版Comctl32.dll(IE 5)支持。”
(摘自書童自留地 工具条研究手记7)
注意到BTNS_WHOLEDROPDOWN这个常量,发现CommCtrl.pas里已经定义好了,只是Delphi没有使用到。于是动手修改了ComCtrls.pas的TToolBar.UpdateItem方法,果然成功了!
解决方案 »
- 急!!!谁有五笔编码表(最好是access格式的) 100分请笑纳!!!!
- Keydown时,如何判断按下的是小键盘的数字?在线等侯,谢谢!!!
- 实现像QQ上线通知那样的风格?
- adotable的索引问题?
- 在程序中能调用Crystal Reports的设计器吗?急!!!!!
- 您好,在杭的朋友您知道 杭州信雅达 公司怎么样 ? 情速告我, 谢谢
- ksaiy来收分吧!你的程序我已收到了,就是我要的,你再把另一块发过来就好!多谢你!
- 条形码生成问题
- 那位大虾知道在哪可以下载ODBC的安装程序
- Bits index out of range
- 请教:void **在delphi中如何表示?
- 触摸屏内装 软件 编写,使用什么语言,或者软件工具?
CommCtrl;//设置工具条某个按钮为BTNS_WHOLEDROPDOWN样式
function SetBtnWholeDropdown(tb : TToolBar; BtnIndex : Integer) : boolean;
var
btnInfo : TTBBUTTONINFO;
r : Integer;
e : Integer;
begin
ZeroMemory(@btnInfo, sizeof(btnInfo));
btnInfo.cbSize := sizeof(btnInfo);
btnInfo.dwMask := TBIF_STYLE; //返回值是按钮的索引
if tb.Perform(TB_GETBUTTONINFO, BtnIndex, WParam(@btnInfo)) < 0 then
begin
Result := False;
end
else
begin
btnInfo.fsStyle := btnInfo.fsStyle and (not BTNS_DROPDOWN)or BTNS_WHOLEDROPDOWN;
//非零就是成功
Result := tb.Perform(TB_SETBUTTONINFO, BtnIndex, WParam(@btnInfo)) <> 0;
end;
end;