增加TRichEdit的大小/限制?

4

我在使用TRichEdit时遇到了一些问题。

第一个问题是,如果我尝试将大量文本从剪贴板粘贴到空的TRichEdit中,它会截断文本底部。

第二个问题,我想这与第一个问题有关,就是我似乎受到TRichEdit可以显示多少字符的限制,因此从剪贴板粘贴会丢失一些数据。

如果我将其粘贴到TJvRichEdit(Jedi)中,则可以正常工作,显然因为那是完全不同的组件。

目前,我希望找到TRichEdit的解决方案,因为我正在使用很多过程/函数等,如果我更改为其他Rich Edit类,则必须编辑大量代码以使其正常工作。

所以基本上我要问的是:

  • TRichEdit是否有限制? 我相信有。
  • 如何增加TRichEdit的限制以接受更多字符和行等。

请仅提供TRichEdit的建议/解决方案。

编辑

没事了,我找到答案了,使用:

RichEdit11.MaxLength := $7FFFFFF0;
1个回答

4
引用David Pate在新闻组中给出的答案:
以下说明适用于使用Windows Richedit版本1控件的Delphi版本。我了解到,这包括版本7之前的所有Delphi版本。(我不知道在各种NT / 2000版本的Windows上运行编译在这些版本中的程序时情况如何,尽管Windows XP的行为如下所述。)
问:Richedit可以容纳多少文本? 答:帮助文件(Delphi帮助和Win32 SDK)在这一点上令人困惑、矛盾和不正确。有5个限制需要考虑:
  1. 最大容量:即“硬连线”限制,即RichEdit的文本缓冲区的最大大小。它比2 Gb小2个字节。请注意,这是理论上的极限;实际上,极限将由计算机的内存确定。
  2. 容量:当前缓冲区的实际大小。默认情况下,它为64Kb,但可以通过多种方式调整大小。
  3. “键盘限制”:无法通过键盘输入添加字符的限制。它通常与容量不同,但像容量一样,默认情况下为64Kb,可以通过多种方式调整大小。
  4. tRichEdit对象的MaxLength属性。默认值为0将容量和“键盘限制”均设置为64Kb。
  5. 行号限制:理论上约为1.34亿行,但实际上,您可以预期得到远少于此数。最大行数似乎取决于多个因素,包括可用内存量和行的平均长度。我发现我可以获得约15万至20万行。还要注意,据报道,某些Windows 95 Richedit控件的版本在添加了几百行以上时有时会抛出异常。这似乎是由于控件中的错误而已经在后来的版本中得到了纠正。
问:如何增加tRichEdit可以容纳的文本量?
答:当您以编程方式添加文本时,容量和“键盘限制”都会被调整以适应正在添加的文本。通过编程方式添加文本,我指使用tRichEdit.Lines属性的任何Add、Append、AddStrings或Assign方法,或tRichEdit的LoadFromFile、LoadFromStream或SetTextBuf方法。请注意,以这种方式添加文本不会更新MaxLength属性。

B. 通过使用MaxLength属性。这将把“键盘限制”设置为传递给MaxLength的值。如果现有容量小于MaxLength,则还会增加容量以匹配“键盘限制”。请注意,您不能使用MaxLength来减少容量,并且如果传递的值小于控件中当前文本的长度,则更改MaxLength没有效果。要将容量和“键盘限制”增加到相同的值,请将tRichEdit.MaxLength设置为所需值。要在对象检查器中设置最大大小,请使用值2147483645($7FFFFFFD)。要以编程方式设置它,更简单的方法是使用.MaxLength:= System.MaxInt-2;。也可以使用EM_LIMITTEXT和EM_EXLIMITTEXT消息来更改“键盘限制”和容量,但我通常不建议使用它们,因为如果这样做,您将不会更新MaxLength属性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接