メニュー項目と TButton の両方に使用される TAction があります。メニュー項目にはラベルを表示し、TButton にはアイコンのみを表示します。しかし、Action が割り当てられると、Vcl は TButton の Caption 属性を自動的に設定し、それを取り除くことはできません。
何か案は?
メニュー項目と TButton の両方に使用される TAction があります。メニュー項目にはラベルを表示し、TButton にはアイコンのみを表示します。しかし、Action が割り当てられると、Vcl は TButton の Caption 属性を自動的に設定し、それを取り除くことはできません。
何か案は?
メニュー項目で、 に設定ImageIndex
し-1
ます。ボタンで、 を に設定Caption
し''
ます。これは実行時に行う必要があります。
これにより、個々のプロパティのアクションとの関連付けが解除されます。Hint
アクションは、OnExecute
、OnUpdate
などに引き続き使用されます。
メニュー項目用とボタン用の 2 つの別個のアクションを使用できます。
よりハッキーな解決策は、たとえば次の例で 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;