如何在Delphi 10中选择TEdit字段文本

3

我有一个非常基础的问题,但是却无法解决。我想在Tedit接收焦点时选择文本。在Delphi 7中,使用VCL可以在OnEnter事件中完成此操作:

TEdit(Sender).SelLength := Length(TEdit(Sender).Text)

现在,使用Delphi 10.2和FireMonkey,在多种不同的尝试中,我已经试过了,但是它并没有起作用。

示例:

procedure TfPrincipal.Edit1Enter(Sender: TObject);
begin
   TEdit(Sender).SetFocus;
   TEdit(Sender).SelStart  := 0; // I already tried to change this value
   TEdit(Sender).SelLength := Length(TEdit(Sender).Text); // I already tried to change this value too
end;

控件获得焦点时,文本会自动全选,而不需要任何代码或仅仅是拖放控件的变化。我们正在谈论哪个平台? - Victoria
@Victoria 我注意到当我使用TAB键在字段之间导航时,文本被选中。然而,在Windows 10中单击鼠标或在移动设备(Android 4.4)上触摸屏幕时,文本不会被选中。Edit1.SelectAll过程也无效。 - wBB
1
啊哈,所以这个问题和这个问题一样,只不过是针对FMX的(已经被接受的方式在Windows平台上可以工作)。但我同意如果偏离常见用户体验可能会引起一些困惑。 - Victoria
我的天啊!!VCL和Firemonkey之间的这些小差异最终会浪费我们很多时间。它在OnClick事件中可以工作,但在VCL中不适用于OnEnter。再次感谢@Victoria。 - wBB
可能是 TEdit onclick select all? 的重复问题。 - user5150422
1
@Calenaur,您链接的问答是关于“Vcl TEdit”的,而这个问题是关于“Fmx TEdit”的,因此不是重复的。 - Tom Brunberg
1个回答

0

你尝试过在匿名线程中选择全部吗?

TThread.CreateAnonymousThread(procedure ()
  begin
    TThread.Synchronize(nil, procedure ()
      begin
        Edit1.SelectAll();
      end);
  end).Start

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接