增加TRichEdit的大小/限制?

时间:2011-05-18 18:02:41

标签: delphi paste trichedit

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

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

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

如果我粘贴到TJvRichEdit(Jedi)中,那很好用,显然是因为这是一个完全不同的组件。

此时我想要一个TRichEdit的解决方案,因为我使用了很多程序/函数等,如果我改为另一个Rich Edit类,那么我将不得不编辑很多代码来工作

基本上我要问的是:

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

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

修改

从不介意使用以下方法找到答案:

RichEdit11.MaxLength := $7FFFFFF0;

1 个答案:

答案 0 :(得分:3)

引用大卫佩特从newsgroups

给出的答案

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

Q值。 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控件有时会在添加超过几百行时抛出异常。这似乎是由于控件中的错误并在以后的版本中得到纠正..

  6. Q值。如何增加tRichEdit可以容纳的文本量?

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

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