当单击组合框的编辑控件时,如何触发TComboBox的OnClick事件?

时间:2018-10-10 07:11:13

标签: delphi

我有一个带有Style := csDropDown的TComboBox。我要这样做,以便如果用户单击组合框的编辑框部分,那么将选择该编辑框中的整个文本。因此,我考虑过实现组合框的OnClick事件,但是仅在显示组合框列表时才触发OnClick事件。当列表关闭并且只有一项可见时,这是不起作用的,这是我要使用的地方。

除了OnClick以外,我还尝试了其他事件,例如OnEnter,但是我尝试过的所有事件似乎仅在组合框列表展开时或单击组件的右侧。

我也尝试过使用鼠标事件,例如OnMouseDown,这些事件不会为组合框发布,但是在设法实现后,它们也只能在单击小箭头以扩展列表时使用,或展开的列表,而不是组合框的编辑框部分。

1 个答案:

答案 0 :(得分:2)

这对我有用:

unit Unit1;

interface

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

type
  TComboBox = class(Vcl.StdCtrls.TComboBox)
  protected
    procedure EditWndProc(var Message: TMessage); override;
  end;

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

var
  Form1: TForm1;

implementation

{$R *.dfm}


{ TComboBox }

procedure TComboBox.EditWndProc(var Message: TMessage);
begin
  inherited;
  if Message.Msg = WM_LBUTTONDOWN then
    SelectAll;
end;

end.