我有一个带有Style := csDropDown
的TComboBox。我要这样做,以便如果用户单击组合框的编辑框部分,那么将选择该编辑框中的整个文本。因此,我考虑过实现组合框的OnClick
事件,但是仅在显示组合框列表时才触发OnClick
事件。当列表关闭并且只有一项可见时,这是不起作用的,这是我要使用的地方。
除了OnClick
以外,我还尝试了其他事件,例如OnEnter
,但是我尝试过的所有事件似乎仅在组合框列表展开时或单击组件的右侧。
我也尝试过使用鼠标事件,例如OnMouseDown
,这些事件不会为组合框发布,但是在设法实现后,它们也只能在单击小箭头以扩展列表时使用,或展开的列表,而不是组合框的编辑框部分。
答案 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.