问题标签 [trichedit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
576 浏览

delphi - 如何在 Delphi 7 中获取 TTNTRichEdit unicode 内容?

如何获取/设置 unicode (utf8/utf16) 格式的 TTNTRichEdit RTF 内容?我使用 TStringStreams 的 TRichEdit.loadFromStream/saveToStream 方法来设置 RTF 内容。但它只对非标准 ASCII 字符使用依赖于语言环境的 ANSI 代码。(4x : \`f5) 但是如果用户将他/她的项目带到另一台具有不同语言环境的计算机上,我会遇到麻烦。民族特色将消失。EM_STREAMIN/EM_SREAMOUT 消息 SF_UNICODE 标志只能与 SF_TEXT 结合,而不是 SF_RTF。

0 投票
1 回答
567 浏览

delphi - 如何滚动到用户在查找对话框中输入的“找到”单词

我对包含 find 对话框的 delphi 表单进行了丰富的编辑。用户输入要找到的单词,程序正确地突出显示“找到”的单词——这很好用。然而,我想要的是让程序滚动,以便找到的单词的第一次出现出现在 Richedit 框中的第一行。如果用户然后单击“下一步”(查找对话框),则滚动继续,以便单词的下一个出现出现在第一行,依此类推。有谁可以帮我离开这里吗?

0 投票
0 回答
305 浏览

delphi - 如何在 Delphi 的画布上渲染和缩放 RTF

您好,我需要将格式化文本集成到用 Delphi 编写的旧应用程序中,然后将其渲染到画布中(GDI - 是的史前技术,需要支持 Win Vista 及更高版本)。我尝试使用 html 和 rtf 来完成此任务,但两者各有利弊。我决定使用 rtf 和 TRichEdit 作为编辑器。它具有漂亮的界面,并且很容易编写所需的功能。问题在于渲染(已经解决了该部分)并以合理的图像质量和线性缩放(或几乎线性)对其进行缩放。我已经尝试了两种方法:

  1. 渲染成位图然后缩放 - 很好的线性缩放,但可怕的像素化图像 - 正如预期的那样
  2. 通过 TRichEdit 功能进行缩放,然后渲染为位图 - 清晰的图像,但线性缩放消失了。

还有其他方法吗?谢谢。

0 投票
2 回答
365 浏览

delphi - TRichEdit - 如何添加具有大小变化的空行?

我有字符串数组,我想在其中一些之间添加一个较小的空行。所以我有一个代码:

并且大小更改适用于第一行(带点),但 test1 和 test2 之间的线与它们(18)的大小相同 =\

有什么建议么?

0 投票
2 回答
757 浏览

delphi - 如何使用 Delphi (Xe10) 在 TRichedit 中选择某些表行

我有一个 TjvRichedit 控件,其中包含一个表格,其中一些行/单元格填充了文本。我想选择一些整行(例如行 firstLine 和 firstLine+1)并将它们复制到剪贴板(或流)。我使用下面的代码:

但它从 firstLine 到 firstLine+3 选择(甚至从下一个表中选择行!)。如果我减少长度(例如 SelLength:= 2),它会选择两行!请问我该怎么做我想要的?

0 投票
0 回答
826 浏览

delphi - Delphi TRichEdit 页面设置

我有一个定义页面设置的 RTF 文档:

在我的应用程序中,我使用 aTRichEdit来显示文档。

TRichEdit有 aTPanel作为它的,Parent并且正在使用Align=alClientand AlignWithMargins=True

我将面板设置Width16840 * PixelsPerInch/1440(1123 像素),我看到它等于页面的宽度,如 MSWord 中所示(比例 = 100%)。

将 RichEdit 的值设置Margins794 * PixelsPerInch/1440(53 像素),WidthRichEdit 的值小于它必须的值,或者边距大于它们必须的值(与 MSWord 相比)。

没有边框,没有其他边距,除了我在代码中设置的:

的值paperW给出了正确的面板宽度(与 MSWord 相比),但 和 的值Lm给出了Rm更大的边距,因此 RichEdit 变得更窄。

如何计算正确的边距以使 RichEdit 具有与 MSWord 相同的布局?

这可能会有所帮助。我注意到:

  1. TRichedit在左侧留出大约 10 像素的空间(在此空间之后开始渲染)。除了 margins.left 之外,是否有可以解决此问题的参数?
  2. TRichedit不会呈现任何比其宽度更宽的表格(MSword 这样做会调整边距)。因此,TRichedit 翻译了其边缘之外的所有内容。

上面的结果是左边距看起来比必须的要宽,如果它是卷绕器,它会截断表格的右侧。

看图片在此处输入图像描述

0 投票
1 回答
915 浏览

delphi - Delphi TRichEdit.Perform(EM_FORMATRANGE, 0,Longint(@fmtRange));

我想找到需要TRichEdit控件在不显示vertical scrollbar. 我使用此代码

当文档有几页 (<15 A4 portrait) 时,结果就足够了。但是随着页面的增多,rc.bottom 似乎被截断了,控件需要垂直滚动条。问题是:perform的代码里面有一些限制吗?如果我手动(大约)增加 rc.bottom,那么控件本身就可以了,但这不是我想要的情况。

PS。如果重要的话,richedit 组件实际上是一个 TjvRichEdit 组件。

这是一个可以重现问题的最小程序(甚至 2 页)

表格

以及带有 RTF 文档的结果(仅 2 页) 文档处于 RTF 模式,您可以看到 TjvRichEdit 在没有滚动条的情况下无法找到正确的渲染高度

0 投票
1 回答
3147 浏览

html - 向 TR​​ichEdit 添加真正的超链接支持

我需要支持 TRichEdit 中的“友好名称超链接”,我发现的所有解决方案都基于 autoURLs ( EM_AUTOURLDETECT ),它通过检测用户输入的以 www (或 http) 开头的字符串来工作。

但我想将链接放在不以 www 开头的字符串上。示例:“下载”。

0 投票
2 回答
436 浏览

arrays - Delphi TRichEdit 到数组和本地存储

我正在寻找有关如何将 TRichEdit 放入数组并将其保存到本地文件(例如:File.dat)的信息。目标是存储大量文本、描述和它的“名称”。

我想我必须从:

并使用以下内容添加数据:

  • 如何创建数组,并使用“名称”对其进行操作(添加、删除...)?
  • 如何保存它(数组),并从本地存储轻松加载它?(例如:文件.dat)

我在这里找到了一些信息,但无法使某些东西正常工作。

谢谢你的时间。

[编辑 18/09/2017]

我仍在寻找解决方案,并尝试找到将我的信息保存到本地文件的方法。

我要测试的实际代码是:

因此,希望保存MessageArray,但还没有找到如何做到这一点。我看过SuperObjet,但找不到如何处理它。Omxl 看起来很棒而且很简单,但免费试用...... :(

0 投票
0 回答
222 浏览

delphi - TRichEdit 在更改自动换行时添加空白行(任何重新创建属性)

以下是在 Embarcardero RAD Studio 10.2 中找到的。我没有看过其他版本。

如果您TRichEdit的表单上有一个包含现有文本(超过 1021 个字符),并更改WordWrap(或任何其他重新创建窗口)属性,则组件有时会在现有文本的中间插入额外的空白行。它似乎取决于 CR/LF 字符的位置。

为了演示该问题,请将以下文本粘贴到Delphi 中窗体Lines的 a 属性中:TRichEdit

上面示例文本的目的是在您到达最后一行(“x”本身)时有 1024 个字符(计算前几行末尾的 CR/LF)。之后发生的事情并不重要。

现在,在您的 中使用上述文本TRichEdit,并且仍处于设计模式,切换WordWrap属性几次。(如果您将表单设置为在运行时执行,也会发生同样的事情。)如果您的 Delphi 和我的一样,最后一行(“x”本身)将开始与前面的行分开作为新行行被插入。

如果您更改第 13 行的长度 - 添加或删除一个字符 - 问题似乎消失了。

我说“似乎消失了”,因为 CR/LF 的 1022/1023 位置不是唯一的敏感位置。我发现了更多(在玩更大的文本时),但并不总是在 1k 边界上(我认为,没有详细研究)。

我发现了问题WordWrap,但它发生在任何重新创建窗口句柄的属性上(我认为)——当然BorderStyle也有同样的作用。

有没有其他人看过这个?是否有人可以在 Delphi 10.3 中尝试上述测试以查看它是否已修复,这是否太过分了?

可能唯一可靠的修复(如果 10.3 没有修复它)是避免使用TRichEdit,或者 - 这是我测试问题的下一步 - 创建和使用插入代码的派生,以在句柄重新创建期间保存和恢复内容。还有其他想法吗?

更新在运行时,只有当PlainText属性为真时才会出现问题。在设计时,无论该属性是否为真都会发生。