gpt4 book ai didi

delphi - TEdit onclick 全选?

转载 作者:行者123 更新时间:2023-12-03 15:36:48 27 4
gpt4 key购买 nike

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

最佳答案

执行超出 TEdit 控件默认行为的任何操作都可能非常危险。您的用户知道标准 Windows 控件的行为方式,任何偏离此的行为都可能会导致困惑。

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

Determines whether all the text in the edit control is automatically selected when the control gets focus.

Set AutoSelect to select all the text when the edit control gets focus. AutoSelect only applies to single-line edit controls.

Use AutoSelect when the user is more likely to replace the text in the edit control than to append to it.

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

<小时/>

如果您根据当前选定的答案更改响应 OnClick 事件的选择,那么您会发现无法通过单击鼠标来移动插入符号。这是极其违反直觉的行为。

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

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

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

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

关于delphi - TEdit onclick 全选?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8616463/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com