【问题标题】:How to show an arbitrary line in TMemo in FMX?如何在 FMX 的 TMemo 中显示任意行?
【发布时间】:2012-11-19 20:23:11
【问题描述】:

我在 Firemonkey 中向 TMemo 添加了行,并且我希望添加的行在 TMemo 中无法显示的行数时滚动到视图中。我找不到如何做到这一点。我试过了

Display.Lines.Add (arg);
Caret.Line := Display.Lines.Count - 1;
Caret.Pos  := 0;
Display.CaretPosition := Caret;

但这并没有帮助。帮助非常有限,所以我不确定我在这里做什么。

更新

在试用受访者的代码时,我注意到我测试了错误的代码示例。对此我深表歉意,我唯一的借口是我编写和测试代码时已接近午夜。上面的代码确实工作。我从原始代码中删除了声明Display.CaretVisible := True;,因为这不会影响我想要的行为。

【问题讨论】:

  • 请澄清您的意思。 display overflows 是否意味着 TMemo 的行数超过了不滚动显示的行数? display added line 是否意味着当它不可见时滚动到添加的行?您只是想将其滚动到视图中,还是要同时选择添加的行?
  • 我想将最后添加的行滚动到视图中。选择不相关。插入符号声明为Caret: TCaretPosition

标签: delphi tmemo firemonkey-fm2


【解决方案1】:

由于您只是通过Lines.Add() 附加字符串,因此您可以调用Display.GoToTextEnd 将其滚动到末尾并显示刚刚附加的行。

【讨论】:

  • 这个答案很好用。两个答案都同样有效,我非常感谢杰森和你。我决定将您的答案标记为正确答案,因为您是第一个做出反应的人。我知道这是任意的,但我根本不知道如何授予正确答案。
【解决方案2】:

您可以将 VScrollBar.Value 属性的值设置为其最大值。这将始终滚动 - 或强制滚动条 - 到备忘录 (ScrollBox) 的底部。

例如:

Display.VScrollBar.Value := Display.VScrollBar.Max

【讨论】:

  • 这行得通!谢谢你的评论。另请参阅 James L 的回答中的评论。
猜你喜欢
  • 1970-01-01
  • 2021-11-24
  • 1970-01-01
  • 2021-11-11
  • 1970-01-01
  • 1970-01-01
  • 2016-08-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多