您的位置:首页 > 编程语言 > Delphi

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

2010-12-17 17:24 519 查看
工具条按钮的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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: