加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 04:13:46 所属栏目:大数据 来源:网络整理
导读:如果你这样做: Edit1.Text := StringOfChar('X',37440); 它会显示文本,但是如果你这样做: Edit1.Text := StringOfChar('X',37441); 文本不会出现. 有人知道为什么吗? 如果这是一个错误,还有另一种方法可以调整而不是将所有现有组件替换为TMemo吗? 为什么
如果你这样做:
Edit1.Text := StringOfChar('X',37440);

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

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

文本不会出现.

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

解决方法

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

The EM_LIMITTEXT message limits only the text the user can enter. It does not affect any text already in the edit control when the message is sent,nor does it affect the length of the text copied to the edit control by the WM_SETTEXT message. If an application uses the WM_SETTEXT message to place more text into an edit control than is specified in the EM_LIMITTEXT message,the user can edit the entire contents of the edit control.

Before EM_LIMITTEXT is called,the default limit for the amount of text a user can enter in an edit control is 32,767 characters.

此消息由TEdit的MaxLength属性公开.

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

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读