Используйте 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;