如果你这样做:
Edit1.Text := StringOfChar('X', 37440);
它会显示文本,但是如果你这样做:
Edit1.Text := StringOfChar('X', 37441);
文字不会出现。
有人知道为什么吗?
如果这是一个错误,还有另一种方法可以调整而不是将所有现有组件替换为TMemo吗?
为什么选择37440?
答案 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!