Используйте TAction для "только иконки" TButton

У меня есть TAction, который используется как для пункта меню, так и для кнопки TButton. Я хочу, чтобы пункт меню показывал метку, а TButton - только иконку. Однако, когда действие назначено, Vcl автоматически устанавливает атрибут заголовка TButton, и я не могу от него избавиться.

Есть идеи?

3 ответа

Решение

В пункте меню установите ImageIndex в -1, На кнопке установите Caption в '', Вы должны сделать это во время выполнения.

Это нарушит связь с действием только для этих отдельных свойств. Действие все еще будет использоваться для Hint, OnExecute, OnUpdate и т.п.

У вас может быть два отдельных действия: одно для пункта меню, другое для кнопки.

Более удачным решением может быть установка 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;
Другие вопросы по тегам