如果你这样做:
Edit1.Text := StringOfChar('X', 37440);
它将显示文本,但是如果您这样做:
Edit1.Text := StringOfChar('X', 37441);
文本不会出现。
有人知道为什么吗?
如果这是一个错误,还有另一种方法可以调整而不是将所有现有组件替换为 TMemo?
为什么是 37440 呢?
如果你这样做:
Edit1.Text := StringOfChar('X', 37440);
它将显示文本,但是如果您这样做:
Edit1.Text := StringOfChar('X', 37441);
文本不会出现。
有人知道为什么吗?
如果这是一个错误,还有另一种方法可以调整而不是将所有现有组件替换为 TMemo?
为什么是 37440 呢?
从表面上看,您应该能够使用以下EM_LIMITTEXT
消息来控制它:
EM_LIMITTEXT 消息仅限制用户可以输入的文本。它不会影响发送消息时已经在编辑控件中的任何文本,也不会影响通过 WM_SETTEXT 消息复制到编辑控件的文本的长度。如果应用程序使用 WM_SETTEXT 消息将比 EM_LIMITTEXT 消息中指定的文本更多的文本放入编辑控件,则用户可以编辑编辑控件的全部内容。
在调用 EM_LIMITTEXT 之前,用户可以在编辑控件中输入的文本量的默认限制是 32,767 个字符。
并且此消息由 的MaxLength
属性公开TEdit
。
但是,设置MaxLength
为较大的值似乎没有帮助。我无法说服单行编辑控件显示大量字符。
我怀疑对您来说唯一可行的选择是使用多行编辑控件,即TMemo
.
我敢肯定 MS 会争辩说,单行编辑控件并非旨在容纳数千个字符,因此他们没有动力使该控件更有能力。
FWIW,使用 Unicode 版本的控件,截止似乎是 37444 而不是 37440!