【问题标题】:Increase size/limit of TRichEdit?增加 TrichEdit 的大小/限制?
【发布时间】:2011-05-18 18:02:41
【问题描述】:

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

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

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

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

此时我想要 TRichEdit 的解决方案,因为我正在使用很多程序/函数等,如果我更改为不同的 Rich Edit 类,那么我将不得不编辑很多代码才能工作.

所以基本上我要问的是:

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

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

编辑

没关系通过以下方式找到答案:

RichEdit11.MaxLength := $7FFFFFF0;

【问题讨论】:

  • 没想到,谢谢 Johan 的建议。

标签: delphi paste trichedit


【解决方案1】:

引用 newsgroups 的 David Pate 给出的答案:

以下说明适用于使用 Windows Richedit 版本 1 控件的 Delphi 版本。我知道这包括版本 7 之前的所有 Delphi 版本。(我不知道当您在各种 NT/2000 版本的 Windows 上运行以这些版本编译的程序时会发生什么情况,尽管 Windows XP 的行为与描述的一样。)

问。 Richedit 可以容纳的文本量有多少限制? A. 帮助文件(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 可以容纳的文本量?

A.当您以编程方式添加文本时,容量和“键盘限制”都会调整大小以适应添加的文本。通过以编程方式添加文本,我的意思是使用 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 属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-27
    • 2023-02-15
    • 2023-01-28
    • 1970-01-01
    • 1970-01-01
    • 2015-10-11
    相关资源
    最近更新 更多