如何为`TBitBtn`设置`ElevationRequired`
我需要标记一个TBitBtn(不是TButton),按钮动作需要提升。我设置ElevationRequired为 True,但我没有得到盾牌图标。
要复制,请将 aTButton和 aTBitBtn放在表单上:
procedure TForm1.FormCreate(Sender: TObject);
begin
Button1.ElevationRequired := True;
BitBtn1.ElevationRequired := True;
end;
Button1显示有盾牌图标,BitBtn1不是。
回答
这不可能。
VCLTBitBtn是所有者绘制的Win32 BUTTON控件。你可以在这里看到:
procedure TBitBtn.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
with Params do Style := Style or BS_OWNERDRAW;
end;
因此,TBitBtn在没有通过Windows,但手动在Pascal代码中抽取Vcl.Buttons.pas。具体来说,TBitBtn.DrawItem(const DrawItemStruct: TDrawItemStruct)做这幅画。
在这里你可以看到没有提到ElevationRequired.
因此,TBitBtn不支持这个。
一般来说,不要使用TBitBtn; 用于TButton获取本机 Win32 按钮。