TButton的缺陷

2024-03-18

Delphi XE2 中的 TButton 有一个Style财产。当该属性设置为bsSplitButton然后按钮右侧会显示一个下拉箭头:

然而,这个下拉区域有一些不便:

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

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

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


你的后代必须打电话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);

是这样的:

See 文档 http://msdn.microsoft.com/en-us/library/bb761871%28v=vs.85%29.aspx你还能做什么。没有可以修改本机按钮控件的悬停行为的功能。为此,您可能最好不要从TButton.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TButton的缺陷 的相关文章

随机推荐