TButton缺陷

时间:2014-06-18 14:26:05

标签: delphi delphi-xe2 split-button

Delphi XE2中的TButton具有Style属性。当此属性设置为bsSplitButton时,按钮右侧会显示一个下拉箭头:

enter image description here

但是,这个下拉区域有一些不便之处:

  1. 在很多情况下它太窄了,下拉区域的静态宽度只有11个像素。

  2. 当鼠标指针悬停在下拉区域上时,下拉区域没有明确的悬停指示。

  3. 如何实施TButton的后代来修复这种不便?后代应具有DropDownWidth属性以及当鼠标悬停在下拉区域时处理和更改下拉显示的属性。

1 个答案:

答案 0 :(得分:10)

您的后代必须致电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;

调用的示例结果

SetButtonSplitWidth(Button2, 25);

是这样的:

enter image description here

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