当用户单击TEdit1或选择其文本时,如何选择所有文本
格式要求:
格式要求:
每当用户单击TEdit1或选择其文本时,都会自动选择所有文本。
每当用户单击TEdit1或选择其文本时,都会自动选择所有文本。
TEdit
控件的默认行为可能会带来很大的风险。你的用户已经熟悉了标准的 Windows 控件行为,任何偏离这种行为的变化都可能造成混乱。AutoSelect
属性被设置为 True
。True
时,键盘操作使整个编辑控件的内容被选择。如果控件通过鼠标单击获得焦点,则不会选择所有内容。在这种情况下,您只需按下 CTRL+A 即可选择所有内容。双击会选择鼠标下面的单词。这都是由底层 Windows 控件实现的标准行为。
OnClick
事件时更改选择,您将发现使用鼠标单击无法移动插入符。这是极不直观的行为。OnDblClick
中调用 SelectAll
。我认为这样做不会有任何烦人的副作用。SelectAll
,但不是每次单击控件都会这样做。这可能会感觉有点奇怪,但我个人认为采取这种行动是合理的。如果要这样做,请处理你的编辑控件的 OnEnter
事件。procedure TForm1.Edit1Enter(Sender: TObject);
begin
PostMessage(Edit1.Handle, EM_SETSEL, 0, -1);
end;
procedure TForm13.Edit1Click(Sender: TObject);
begin
Edit1.SelectAll;
end;
您还可以将此事件链接到其他控件,例如按钮。
选择按钮,选择 V
箭头并单击以选择要链接的事件。
现在,Edit1.OnClick
和 Button1.OnClick
都链接到相同的事件。
当用户单击TEdit1时,如何选择部分文本:
procedure TForm1.Edit1Click(Sender: TObject);
begin
Edit1.SelStart:= 1;
Edit1.SelLength:= 2;
end;
你必须使用 OnMouseUp;
procedure cxMRUEdit1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button=mbLeft then cxMRUEdit1.SelectAll;
end;