问题标签 [richedit]

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 投票
3 回答
9870 浏览

delphi - 从 RichEdit 获取未格式化的文本

我有一个 Richedit,它允许我的用户格式化和查看在我的应用程序中显示的错误消息。

我现在需要能够仅将文本(无格式)导出到他们的故障单系统使用的另一个数据库。

我已经尝试了所有我能想到的 PlainText 组合,而且我总是得到 rtf 格式。

我怎样才能只得到文本?

0 投票
1 回答
1437 浏览

c++ - 如何在 Edit Control 和 Rich Control 中制作文本以使我无法选择它?

我的应用程序中有编辑控件和富编辑控件,它们是只读的。但最重要的是,我想做它,所以我不能选择文本,甚至不能用它做任何事情,只能显示。我没有让它成为静态的,因为当我第一次制作我的应用程序时,我并没有更好的了解。我想解决它的方法是禁用它。问题是如果我禁用它们,它们会变灰。除了更换它们还有什么好的选择吗?此外,由于某种原因,“无隐藏选择”根本不起作用。当我选择某些东西然后取消焦点时,它会保持选中状态......

信息:IDE:Visual Studio 2010 - Ultimate / Border:对话框框架

感谢您的关注

0 投票
2 回答
2916 浏览

delphi - RichEdit 2.0 使用单个 CR 字符作为换行符会引发 SelStart 计算(Delphi XE2)

从 Delphi 2006 过渡到 Delphi XE2 时,我们学到的一件事是 RichEdit 2.0 在内部CRLF用单个CR字符替换了对。这会产生基于 VCL 端实际文本字符串的所有字符索引计算的不幸效果。

通过跟踪 VCL 代码可以看到的行为如下:

  1. 发送WM_GETTEXT消息(在 中完成TControl.GetTextBuf)将返回一个包含CRLF对的文本缓冲区。
  2. 发送WM_GETTEXTLENGTH消息(在 中完成TControl.GetTextLen)将返回一个值,就好像文本仍然包含CRLF字符一样。
  3. 相反,发送EM_SETSELEX消息(即设置SelStart)会将输入值视为文本 CR包含字符。

这会导致我们的应用程序中的各种事情都失败(例如语法突出显示)。正如你所知道的,到那时为止,每一条新线都正好有一个字符。

显然,由于这是不一致的行为,我们必须遗漏一些东西或做一些非常错误的事情。

其他人是否对从 RichEdit 1.0 到 RichEdit 2.0 控件的转换有任何经验,您是如何解决这个问题的?最后,有没有办法强制 RichEdit 2.0CRLF像 RichEdit 1.0 一样使用对?

0 投票
1 回答
3451 浏览

delphi - Delphi中自定义组合框的下拉列表正在关闭后立即关闭

我一直在寻找一种在默认组合框中使用 RichtText 的简单方法,但一无所获。所以我写了这个小 Delphi(7) 组件,它目前正在工作。

工作原理:我正在调用“init”来用运行时创建的 RichEdit 替换默认组合框中的“编辑”窗口。大小取自Edit,最后隐藏Edit。包含一些事件处理程序用于更改检测等。

问题:如果我单击下拉列表中的一个项目,文本会显示在 RichEdit 中。如果在 RichEdit 中输入了一些文本并再次按下下拉按钮,下拉列表将在下一刻打开和关闭。单击几下后,列表保持打开状态并按预期工作。每次我单击列表并再次更改 RichEdit 时,都会发生同样的情况。

也许我必须向组合框发送一些消息才能修复?

到目前为止,我在网上没有找到任何解决方案。也许你有一个想法。

谢谢你的帮助 !

0 投票
1 回答
311 浏览

c++ - 更改范围的字符格式

我正在尝试实现将语法高亮添加到winapi的richedit的代码,因此我搜索必须着色的文本范围,但是如果我选择带有EM_EXSETSEL消息的范围以使用EM_SETCHARFORMAT消息进行格式化,那就非常速度慢,用户都看到了。如何更快地更改字符格式?

0 投票
1 回答
1394 浏览

c++ - 使用 Richedit 控件时,基于对话框的 Win32 API 程序将不显示窗口

我编写了一个基于对话框的 Windows 应用程序,其中包含两个编辑控件和两个按钮控件。ResEdit 1.5.9-x64 用于创建对话窗口和放置/定位控件。该程序编译和运行完美,一切都按预期工作。

但是,只要我在对话框窗口上放置一个 Richedit 控件,应用程序就会编译而没有错误,但是当我尝试运行它时,什么也没有发生。该窗口不再出现,并且 Windows 任务管理器显示没有正在运行的程序实例。我已经在网上和 stackoverflow 上搜索了有关此问题的一些帮助,但我没有找到任何东西。

此时,我所做的就是将richedit 控件放在对话框上。我不想在程序中以任何方式与它交互。

任何人都可以帮助我或指出我缺少哪一步的正确方向吗?

0 投票
1 回答
1675 浏览

delphi - 打印带有背景颜色的richedit

我正在将文本从 delphi TRichedit 控件输出到打印机。有一个背景图像,所以我使用 EM_FORMATRANGE 和这个逻辑......

...并且工作正常,除了在呈现文本时它始终具有白色背景,而不管richedit的颜色如何。知道为什么吗?

编辑:来自发表的评论:

RangeRANGEFORMAT, 并被赋予如下值:

0 投票
1 回答
669 浏览

winapi - Richedit 2.0 控件忽略 WM_PAINT 消息的 WParam?

我已经阅读了很多关于尝试对 Richedit 控件进行双缓冲的问题,但没有看到对这个特定问题的任何直接答案(如果有微软官方声明的引用/链接,那就太好了)。

这是我一直用于测试的一些代码(VCL/Delphi/Borland Builder 6.0):

如果我在继承::WndProc() 之前调用 BeginPaint() (将消息传递给那些不知道 VCL 的控件),那么控件不会在我的内存 DC 或实际窗口 DC 上绘制任何内容。如果我改为调用 GetDC(),控件仍然不会在内存 DC 上绘制,但它会直接在窗口 DC 上绘制。我通过注释掉我的 BitBlt() 调用来确认这一点。如果没有注释掉,客户区全黑(意味着控件根本没有在内存 DC 上绘制),如果我注释掉那行,控件正确绘制(这意味着它忽略了 WParam 内存 DC 并直接进入窗口 DC)。

虽然听起来我已经回答了我自己的问题,但我真正想要的是其他人的确认(链接到 MS KB 文章或 MSDN 会很棒,所以我可以向我的老板展示:),以及实现双缓冲的其他可能的想法? 我不能使用我发现的大多数技巧,比如将控件隐藏在屏幕外或使用 WM_PRINT,因为我需要这个控件才能真正用于用户输入和滚动条,它不仅仅是用于显示的只读。

此外,该控件使用的是 RichEdit 2.0,即使我使用的是 VCL.. 它已被修改为将窗口创建为“richedit20a”类。我还确认 VCL 层根本没有弄乱绘画,所以在纯 win32 代码中应该看到同样的行为。

0 投票
1 回答
593 浏览

c++ - 当我在调试模式下编译时,丰富的编辑控件格式不起作用

我编写了一个简单的基于 Win32 API 对话框的应用程序,其中包含丰富的编辑控件。该控件显示基于 ANSI 的文本文件的内容并进行一些非常基本的语法突出显示。

我正在使用 Visual C++ 2010 Express 编写代码,当我在发布模式下编译时,一切正常。但是,当我在调试模式下编译时,程序运行,语法突出显示似乎正在发生,但控件中的文本没有改变颜色。

关于为什么会发生这种情况的任何想法?

编辑:添加这段代码是为了显示我如何尝试为富编辑控件中的文本着色。

正如我上面提到的,当我在发布模式下编译时,文本的颜色会按预期工作。当我在调试模式下编译时,不会发生着色。我想知道是否在调试模式下,如果控件的某些功能不起作用?

0 投票
1 回答
1713 浏览

delphi - 如何将 RTF 字符串添加到 RichEdit?

我正在使用 RichEdit,并且正在向其中添加包含各种颜色的线条。现在我使用这种方法:

whereres是要格式化的文本的位置。不要管那个。我遇到的问题是,当我添加此行然后对其进行编辑时,它会闪烁(通过选择和取消选择文本)。我怎样才能以更好的方式使用它?我以为我可以拥有某种 rtf 字符串变量,用它做我的事情,然后.add将它发送到 RichEdit。或者?