工具条按钮的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;