2

Delphi XE2 の TButton にはStyleプロパティがあります。このプロパティを に設定するbsSplitButtonと、ボタンの右側にドロップダウン矢印が表示されます。

ここに画像の説明を入力

ただし、このドロップダウン領域にはいくつかの不都合があります。

  1. 多くの場合、それは狭すぎます。ドロップダウン領域の静的な幅はわずか 11 ピクセルです。

  2. マウス ポインターがドロップダウン領域の上に置かれたときに、ドロップダウン領域だけに明示的なホバー表示はありません。

この不都合を修復する TButton の子孫をどのように実装できますか? 子孫には、DropDownWidthプロパティと、マウスがドロップダウン領域の上に置かれたときにドロップダウン表示を処理および変更するプロパティが必要です。

4

1 に答える 1

12

分割幅を調整するには、子孫を呼び出す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);

このようなものです:

ここに画像の説明を入力

他に何ができるかについては、ドキュメントを参照してください。ネイティブ ボタン コントロールのホバリング動作を変更する機能はありません。そのためには、おそらく a から始めないほうがよいでしょうTButton

于 2014-06-23T19:16:09.917 に答える