为什么TEdit只显示长度等于或小于37440个字符的文本?

时间:2013-07-04 19:20:05

标签: delphi user-controls delphi-6

如果你这样做:

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

它会显示文本,但是如果你这样做:

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

文字不会出现。

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

1 个答案:

答案 0 :(得分:4)

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

  

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

     

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

此消息由MaxLength的{​​{1}}属性公开。

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

我怀疑唯一可行的选择是使用多行编辑控件,即MaxLength

我确信MS会认为单行编辑控件不是为了容纳数千个字符而设计的,所以他们没有动力让这个控件更有能力。

FWIW,对照的Unicode版本,截止值似乎是在3474而不是37440!