Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi TEdit onclick全选?_Delphi_Onclick_Delphi 2010_Textselection - Fatal编程技术网

Delphi TEdit onclick全选?

Delphi TEdit onclick全选?,delphi,onclick,delphi-2010,textselection,Delphi,Onclick,Delphi 2010,Textselection,如何在用户单击TEdit1或单击以选择TEdit1的某些文本时选择TEdit1的所有文本 如何在用户单击TEdit1时选择TEdit1的所有文本 在VCL编辑器中选择Edit1并双击OnClick事件: procedure TForm13.Edit1Click(Sender: TObject); begin Edit1.SelectAll; end; 您还可以将此事件链接到另一个控件,如按钮。 选择按钮,选择并单击V箭头以选择要链接的事件 现在,Edit1.OnClick和按钮1.On

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

如何在用户单击TEdit1时选择TEdit1的所有文本

在VCL编辑器中选择Edit1并双击
OnClick
事件:

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

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


现在,
Edit1.OnClick
按钮1.OnClick
链接到同一事件。

如何在用户单击TEdit1时选择该文本:

procedure TForm1.Edit1Click(Sender: TObject);
begin
  Edit1.SelStart:= 1;
  Edit1.SelLength:= 2;
end;

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

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

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

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

当用户更可能替换编辑控件中的文本而不是附加到编辑控件中时,请使用“自动选择”

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


如果您根据当前选择的答案更改select以响应
OnClick
事件,则您将发现不可能通过鼠标单击来移动插入符号。这是非常违反直觉的行为

这是一个典型的例子,说明了为什么在更改控件的默认行为时需要非常小心。在测试时,很容易就不会错过某个特定的用例,但是当您的用户掌握了该程序时,他们肯定会发现所有这些问题

您可以安全地从
OnDblClick
中调用
SelectAll
。我相信这不会有令人讨厌的副作用

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

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

你必须用上它

procedure cxMRUEdit1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 if Button=mbLeft then cxMRUEdit1.SelectAll;
end;

这只是一个事件处理程序。它必须连接到某个地方才能被触发。我的意思是连接到VCL组件的事件属性。根据名称判断,可能是Edit1,但也可能不是这样。@Johan您是否尝试过使用这种编辑控件。试着用鼠标放置插入符号。@DavidHeffernan,我想让它简单一些,但如果编辑没有焦点,则只做
selectall
。总之,好的一点是,简单的改变使它变得不那么烦人。现在把测试放到OnClick中已经太晚了。你所能做的就是在
OnEnter
的窗口中发布一条全选消息。我很困惑。请澄清你的问题。您想知道如何将TEdit设置为适当的行为还是如何以编程方式进行设置?很好的解释和观点文章。我正要问一个类似的问题,但首先发现了这个问题。杰出的谢谢,伙计们。