如果用户点击TEdit1或单击以选择其中的某些文本,如何选择TEdit1的所有文本
答案 0 :(得分:22)
除了TEdit
控件的默认行为之外,执行任何操作都非常危险。您的用户知道标准Windows控件的行为方式,任何偏离都可能导致混淆。
默认情况下,AutoSelect
属性设置为True
。
确定当控件获得焦点时是否自动选择编辑控件中的所有文本。
设置自动选择以在编辑控件获得焦点时选择所有文本。 自动选择仅适用于单行编辑控件。
当用户更有可能替换编辑控件中的文本而不是附加到文本时,请使用自动选择。
当此属性为True
时,通过键盘操作获得焦点时,将选择编辑控件的全部内容。如果控件通过鼠标单击获得焦点,则不会全部选择内容。在这种情况下,您只需按 CTRL + A 即可选择全部。双击将选择鼠标下方的单词。这是基础Windows控件实现的所有标准行为。
如果根据当前选择的答案更改响应OnClick
事件的选择,则会发现无法通过鼠标单击移动插入符号。这非常违反直觉行为。
这是一个典型示例,说明为什么需要非常小心地将控件的行为从默认值更改。在测试时不要错过特定的用例非常容易,但是当用户掌握程序时,他们肯定会发现所有这些皱纹。
您可以安全地做的是从SelectAll
致电OnDblClick
。我认为这没有令人烦恼的副作用。
另一种选择是在焦点切换到编辑控件时调用SelectAll
,但不是每次单击控件时调用OnEnter
。这对用户来说可能有些奇怪,但我个人认为采取这种行动是合理的。如果您想这样做,您需要处理编辑控件的procedure TForm1.Edit1Enter(Sender: TObject);
begin
PostMessage(Edit1.Handle, EM_SETSEL, 0, -1);
end;
事件:
{{1}}
答案 1 :(得分:9)
如果用户点击它,如何选择TEdit1的所有文本
在VCL编辑器中选择Edit1,然后双击OnClick
事件:
procedure TForm13.Edit1Click(Sender: TObject);
begin
Edit1.SelectAll;
end;
您还可以将此事件链接到另一个控件,例如按钮
选择按钮,选择并单击V
箭头以选择要链接的事件。
现在,Edit1.OnClick
和Button1.OnClick
都链接到同一事件。
答案 2 :(得分:3)
如果用户点击它,如何选择TEdit1的某些文本:
procedure TForm1.Edit1Click(Sender: TObject);
begin
Edit1.SelStart:= 1;
Edit1.SelLength:= 2;
end;
答案 3 :(得分:0)
您必须使用OnMouseUp;
procedure cxMRUEdit1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button=mbLeft then cxMRUEdit1.SelectAll;
end;