TEdit onclick选择全部?

Raf*_*ari 3 delphi onclick textselection delphi-2010

如何在用户单击时选择TEdit1的所有文本或单击以选择其中的某些文本

Dav*_*nan 22

除了TEdit控件的默认行为之外,做任何事情都是非常危险的.您的用户知道标准Windows控件的行为方式,任何偏离都可能导致混淆.

默认情况下,该AutoSelect属性设置为True.

确定控件获得焦点时是否自动选择编辑控件中的所有文本.

设置AutoSelect以在编辑控件获得焦点时选择所有文本.AutoSelect仅适用于单行编辑控件.

当用户更有可能替换编辑控件中的文本而不是附加到文本时,请使用AutoSelect.

当此属性True为时,通过键盘操作获得焦点时,将选择编辑控件的全部内容.如果控件通过鼠标单击获得焦点,则不会全部选择内容.在这种情况下,您只需按CTRL+A选择全部.双击将选择鼠标下方的单词.这是底层Windows控件实现的所有标准行为.


如果OnClick根据当前选择的答案更改响应事件的选择,则会发现无法通过鼠标单击移动插入符号.这是非常违反直觉的行为.

这是一个典型的例子,说明为什么需要非常小心地将控件的行为从默认值更改.在测试时不要错过特定的用例非常容易,但是当用户掌握程序时,他们肯定会发现所有这些皱纹.

你可以安全地做的是打电话SelectAllOnDblClick.我认为这没有恼人的副作用.

另一种选择是SelectAll在焦点切换到编辑控件时调用,但不是每次单击控件时调用.这对用户来说可能有些奇怪,但我个人认为采取这种行动是合理的.如果你想这样做,你需要处理OnEnter编辑控件的事件:

procedure TForm1.Edit1Enter(Sender: TObject);
begin
  PostMessage(Edit1.Handle, EM_SETSEL, 0, -1);
end;
Run Code Online (Sandbox Code Playgroud)


Joh*_*ica 9

每当用户点击它时,如何选择TEdit1的所有文本

在VCL编辑器中选择Edit1,然后双击该OnClick事件:

在此输入图像描述

procedure TForm13.Edit1Click(Sender: TObject);
begin
  Edit1.SelectAll;
end;
Run Code Online (Sandbox Code Playgroud)

您还可以将此事件链接到另一个控件,如按钮.
选择按钮,选择并单击V箭头以选择要链接的事件.

在此输入图像描述

现在,这两个Edit1.OnClickButton1.OnClick链接到同一事件.