5

如果你这样做:

  Edit1.Text := StringOfChar('X', 37440);

它将显示文本,但是如果您这样做:

  Edit1.Text := StringOfChar('X', 37441);

文本不会出现。

有人知道为什么吗?
如果这是一个错误,还有另一种方法可以调整而不是将所有现有组件替换为 TMemo?
为什么是 37440 呢?

4

1 回答 1

4

从表面上看,您应该能够使用以下EM_LIMITTEXT消息来控制它:

EM_LIMITTEXT 消息仅限制用户可以输入的文本。它不会影响发送消息时已经在编辑控件中的任何文本,也不会影响通过 WM_SETTEXT 消息复制到编辑控件的文本的长度。如果应用程序使用 WM_SETTEXT 消息将比 EM_LIMITTEXT 消息中指定的文本更多的文本放入编辑控件,则用户可以编辑编辑控件的全部内容。

在调用 EM_LIMITTEXT 之前,用户可以在编辑控件中输入的文本量的默认限制是 32,767 个字符。

并且此消息由 的MaxLength属性公开TEdit

但是,设置MaxLength为较大的值似乎没有帮助。我无法说服单行编辑控件显示大量字符。

我怀疑对您来说唯一可行的选择是使用多行编辑控件,即TMemo.

我敢肯定 MS 会争辩说,单行编辑控件并非旨在容纳数千个字符,因此他们没有动力使该控件更有能力。

FWIW,使用 Unicode 版本的控件,截止似乎是 37444 而不是 37440!

于 2013-07-04T19:45:02.767 回答