TEdit onclick选择全部?

时间:2011-12-23 13:06:03

标签: delphi onclick delphi-2010 textselection

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

4 个答案:

答案 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事件:

enter image description here

procedure TForm13.Edit1Click(Sender: TObject);
begin
  Edit1.SelectAll;
end;

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

enter image description here

现在,Edit1.OnClickButton1.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;