如何避免单击时在TToggleSwitch控件的标题上显示短划线?

我在单击事件之后尝试了ActiveControl := nil;,但是单击它时仍会显示选择片刻。

delphi - Delphi:避免运行时组件选择破折号-LMLPHP

最佳答案

您可以将插入程序声明与WM_QUERYUISTATE的消息处理程序一起使用,如下所示:

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.WinXCtrls;

type
  TToggleSwitch = class(Vcl.WinXCtrls.TToggleSwitch)
  private
    procedure WMQueryUIState(var Msg: TMessage); message WM_QUERYUISTATE;
  end;

  TForm1 = class(TForm)
    ToggleSwitch1: TToggleSwitch;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TToggleSwitch }

procedure TToggleSwitch.WMQueryUIState(var Msg: TMessage);
begin
  Msg.Result := UISF_HIDEFOCUS;
end;

end.


可惜没有它的财产。

07-25 23:38