var
edtNo:TEdit;
第一次尝试
在onEnter事件中增加事件
procedure TForm1.edtNoEnter(Sender: TObject);
begin
edtNo.SelectAll;//SelectAll 用于选择编辑控件中的所有文本
end;
但是运行出来却没有达到选中理想中的效果
然后网上查询资料
TEdit的AutoSelect属性,是确定控件获得焦点时是否自动选择Edit控件中的所有文本。
默认情况下,AutoSelect属性的值为TRUE。当控件获得焦点时,即控件被制表到所有控件中的文本时,将被选中。
但是,仅当控件通过TAB键获得焦点或者调用SetFocus方法时,自动选择才会在编辑控件中自动选择文本。
当使用OnEnter在控件接收焦点,其被炒鱿鱼事件。当您单击非焦点编辑控件时,它将获得焦点,并且将触发OnEnter事件。OnClick事件的默认行为将插入符号设置为单击位置,如果有选择,则清除所有选择。在OnEnter之后调用OnClick。
这就是为什么在OnEnter中调用SelectAll将不起作用的原因-“隐藏”的OnClick行为将清除选择。
所以可以这么实现
procedure TForm1.edtNoClick(Sender:TObject);
begin
edtNo.SelectAll;
edtNo.OnClick:=nil;
end;
procedure TForm1.edtNoExit(Sender:TObject);
begin
edtNo.OnClick:=edtNoClick;
end;
触发OnClick事件后,事件处理程序将选择所有文本,然后从事件处理程序中分离事件处理过程(edtNoClick)。
这样可确保在编辑具有输入焦点时,不会因在编辑内部单击鼠标而发生自动选择。
要还原OnClick事件处理程序,则在OnExit事件中将OnClick重新设置为edtNoClick