use*_*348 2 delphi split-button delphi-xe2
Delphi XE2中的TButton有一个Style属性.当此属性设置bsSplitButton为时,按钮右侧会显示一个下拉箭头:

但是,这个下拉区域有一些不便之处:
在许多情况下,它太窄,下拉区域的静态宽度仅为11像素.
当鼠标指针悬停在下拉区域上时,下拉区域没有明确的悬停指示.
如何实施TButton的后代来修复这种不便?后代应具有DropDownWidth属性和属性,当鼠标悬停在下拉区域上时,该属性可处理和更改下拉显示.
Ser*_*yuz 11
您的后代必须调用Button_SplitInfo(或发送BCM_SETSPLITINFO)来调整分割宽度.下面是运行时示例用法,您可以在后代中集成类似的功能:
procedure SetButtonSplitWidth(Button: TButton; Width: Integer);
var
Info: TButtonSplitinfo;
begin
if Button.Style = bsSplitButton then begin
Info.mask := BCSIF_SIZE;
Info.size.cx := Width;
Info.size.cy := 0;
Button_SetSplitInfo(Button.Handle, Info);
Button.Invalidate;
end;
end;
Run Code Online (Sandbox Code Playgroud)
调用示例结果
SetButtonSplitWidth(Button2, 25);
Run Code Online (Sandbox Code Playgroud)
是这样的:

请参阅文档,了解您还可以做些什么.没有功能可以修改本机按钮控件的悬停行为.为此,你最好不要从a开始TButton.