RichEdit 不尊重带有粘贴内容的纯文本

发布于 2024-11-07 17:39:17 字数 171 浏览 5 评论 0原文

我创建一个新应用程序,放置 TRichedit 并将 PlainText 属性设置为 true。然后,我运行该应用程序并将一些富格式文本粘贴到 RichEdit 中。

我希望它显示为纯文本,但它显示带有格式的内容。

任何人都知道如何使用 TRichedit 就像纯文本一样(而不是使用备忘录:))

I create a new application, drop on a TRichedit and set the PlainText property to true. I then run the application and paste some rich formatted text into the RichEdit.

I would expect it to display as plain text however it shows the content with the formatting.

Anyone know how to use a TRichedit just as plain text (and not using a memo :))

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一抹淡然 2024-11-14 17:39:17

您需要手动进行粘贴,以确保忽略格式。

if Clipboard.HasFormat(CF_TEXT) then
  RichEdit.SelText := Clipboard.AsText; 

WM_PASTE 的消息处理程序运行此代码。

我目前不知道如何拦截 CTRL+V 按键并将其替换为此代码。 WM_PASTE 消息不会发送到丰富的编辑控件。


正如 Cody 在评论中建议的那样,一种解决方案如下:

  • 确保编辑控件中的所有文本都标记为受保护。
  • 子类 TRichEdit 并覆盖 CNNotify
  • 处理 EN_PROTECTED 消息,如果 msg=WM_PASTE 则使用上面的粘贴作为文本代码,并从消息处理程序返回 1 以指示请求的操作(丰富的粘贴)被拒绝。

You'll need to do the paste manually ensuring that the formatting is ignored.

if Clipboard.HasFormat(CF_TEXT) then
  RichEdit.SelText := Clipboard.AsText; 

Run this code from a message handler for WM_PASTE.

I currently do not know how to intercept the CTRL+V keypress and replace it with this code. The WM_PASTE message is not sent to rich edit controls.


As Cody suggests in the comment, one solution is as follows:

  • Make sure that all the text in the edit control is marked as protected.
  • Subclass TRichEdit and override CNNotify.
  • Handle the EN_PROTECTED message, and if msg=WM_PASTE then use the paste as text code above and return 1 from the message handler to indicate that the requested operation (a rich paste) is rejected.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文