Delphi 增加TRichEdit的大小/限制?

Delphi 增加TRichEdit的大小/限制?,delphi,paste,trichedit,Delphi,Paste,Trichedit,我对这个小把戏有些意见 第一个问题是,如果我试图将大量文本从剪贴板粘贴到一个空的TRichEdit中,它会截断文本的底部 第二个问题,我想与第一个问题有关,是我似乎仅限于TRichEdit可以显示多少个字符,因此从剪贴板粘贴会丢失一些数据 如果我粘贴到一个TJvRichEdit(绝地),效果很好,很明显,因为这是一个完全不同的组件 此时此刻,我想要一个解决方案来解决这个难题,因为我使用了大量的过程/函数等,如果我更改为另一个Rich Edit类,那么我将不得不编辑大量代码才能工作 所以基本上我要

我对这个小把戏有些意见

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

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

如果我粘贴到一个TJvRichEdit(绝地),效果很好,很明显,因为这是一个完全不同的组件

此时此刻,我想要一个解决方案来解决这个难题,因为我使用了大量的过程/函数等,如果我更改为另一个Rich Edit类,那么我将不得不编辑大量代码才能工作

所以基本上我要问的是:

  • 这个诡计有限制吗?我肯定有
  • 我怎样才能增加魔咒的限制以接受更多的字符和行等
请仅为TRichEdit提供建议/解决方案

编辑

没关系,用以下方法找到答案:

RichEdit11.MaxLength := $7FFFFFF0;

引用David Pate的回答:

以下备注适用于使用Windows Richedit version 1控件的Delphi版本。我知道这包括版本7之前的所有Delphi版本。(我不知道在各种NT/2000版本的Windows上运行以这些版本编译的程序时会出现什么情况,尽管Windows XP的行为如所述。)

Richedit可以保存的文本量的限制是什么?答:在这一点上,帮助文件(Delphi帮助和Win32 SDK)令人困惑、矛盾且不正确。有5个限制需要考虑

  • 最大容量:“硬连线”限制,即RichEdit文本缓冲区的最大大小。它比2GB小2个字节。注意,这是理论极限;实际上,限制将由计算机的内存决定

  • 容量:当前缓冲区的实际大小。默认情况下,它是64Kb,但可以通过多种方式调整大小

  • “键盘限制”:不能通过键盘输入字符的限制。它通常与容量不同,但与容量一样,默认为64Kb,可以通过多种方式调整大小

  • tRichEdit对象的MaxLength属性。默认值0将容量和“键盘限制”设置为64Kb

  • 线数限制:理论上这大约是1.34亿,但实际上,你可以期望得到比这少得多的线数。最大行数似乎取决于几个因素,包括可用内存量和行的平均长度。我发现我可以得到大约15万到20万行。还请注意,据报道,某些Windows 95 Richedit控件版本在添加了几百行以上时有时会引发异常。这似乎是由于控件中的错误造成的,并已在以后的版本中更正

  • 问:我如何增加一个魔术师可以容纳的文本量

    A.以编程方式添加文本时,容量和“键盘限制”都会调整大小以适应所添加的文本。通过编程方式添加文本,我的意思是使用tRichEdit.Lines属性的任何Add、Append、AddString或Assign方法,或者tRichEdit的LoadFromFile、LoadFromStream或SetTextBuf方法。请注意,以这种方式添加文本不会更新MaxLength属性


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

    没有想到这一点,谢谢Johan的建议。