5

メニュー項目と TButton の両方に使用される TAction があります。メニュー項目にはラベルを表示し、TButton にはアイコンのみを表示します。しかし、Action が割り当てられると、Vcl は TButton の Caption 属性を自動的に設定し、それを取り除くことはできません。

何か案は?

4

3 に答える 3

6

メニュー項目で、 に設定ImageIndex-1ます。ボタンで、 を に設定Caption''ます。これは実行時に行う必要があります。

これにより、個々のプロパティのアクションとの関連付けが解除されます。Hintアクションは、OnExecuteOnUpdateなどに引き続き使用されます。

于 2012-12-11T09:02:15.877 に答える
4

メニュー項目用とボタン用の 2 つの別個のアクションを使用できます。

于 2012-12-11T09:39:36.977 に答える
3

よりハッキーな解決策は、たとえば次の例で TAG 22 を設定することです。

type

  TButton=Class(Vcl.StdCtrls.TButton)
         procedure SetText(var Message:TWMSETTEXT); message WM_SETTEXT;
  End;

  TForm4 = class(TForm)

    ActionList1: TActionList;
    ImageList1: TImageList;
    Action1: TAction;
    BitBtn1: TBitBtn;
    Button1: TButton;
    Button2: TButton;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form4: TForm4;

implementation

{$R *.dfm}

{ TMyButton }

procedure TButton.SetText(var Message:TWMSETTEXT);
begin

  if Tag<>22 then   inherited else Message.Result := 1;
end;
于 2012-12-11T09:33:20.373 に答える