给Delphi的工具条按钮添加BTNS_WHOLEDROPDOWN风格

转自我的旧博客

工具条按钮的BTNS_WHOLEDROPDOWN风格是IE5以后就提供的.

Delphi早期版本估计是为了照顾兼容性工具条按钮是没有这个风格的.只有下面几种和系统风格对应的风格.

TToolButtonStyle = (tbsButton, tbsCheck, tbsDropDown, tbsSeparator,
tbsDivider, tbsTextButton);

后面尽管IE5以下根本没人用了,但是Delphi的开发人员都忘了添加一种WholeDropDown风格来对应这种风格..

CSDN网友 xiedewei 提了这个问题.并且修改VCL源代码解决了这个问题.但是修改VCL源代码毕竟不是一件一劳永逸的事情.以后新版VCL源代码还要改,所以我在这里提供了一种更简单的方式.直接可以设置.

uses
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;

此条目发表在Delphi, 未分类分类目录。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

你必须启用JavaScript