【问题标题】:How to select TEdit field text in Delphi 10如何在 Delphi 10 中选择 TEdit 字段文本
【发布时间】:2018-06-03 15:25:17
【问题描述】:

我有一个非常基本的问题,我不知道为什么。我想在字段获得焦点时选择 TEdit 的文本。在带有 VCL 的 Delphi 7 中,您可以在 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 我注意到当我使用 TAB 键在字段之间导航时选择了文本。但是,当我在字段中单击鼠标时(在 Windows 10 中)或当我触摸移动设备的屏幕(Android 4.4)时,不会选择文本。 Edit1.SelectAll 过程也不起作用。
  • 啊哈,所以the same as this 仅适用于 FMX(在 Windows 平台上接受的方式适用于我)。但我同意偏离常见的用户体验可能会造成混淆。
  • 天哪! VCL 和 Firemonkey 之间的这些和其他小差异最终会占用我们很多时间。它适用于OnClick 事件,但不适用于OnEnter,就像在VCL 中一样。再次感谢@Victoria
  • @Calenaur 您链接到的 q/a 是关于 Vcl TEdit,而这个问题是关于 Fmx TEdit,所以,不是重复的。

标签: delphi firemonkey


【解决方案1】:

您是否尝试过像这样在匿名线程中选择全选

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多