在RealStudio中,我如何拦截粘贴富文本



我试图为所见即所得编辑创建一个简单的文本字段。但是,我只想允许某些类型的格式(例如,粗体,斜体,下划线和单一标题类型,但没有颜色或不同的字体)

问题是,如果我使用一个可以接受格式的编辑器,有人可以在另一个程序中创建或复制格式化的文本,然后简单地将其粘贴到文本字段中,所有的格式都随之而来,允许我不感兴趣的东西,如不同的字体,颜色等。我不允许那样。

最好的情况是,我希望自动删除我不支持的任何格式。在最坏的情况下,我想简单地粘贴任何纯文本,使他们不得不重新格式化。但是无论如何我都不想把剪贴板放到文本区。

对如何做到这一点有什么想法吗?

我建议创建一个新的文本字段/文本区域类,并创建一个EditPaste菜单处理程序,它(a)在处理剪贴板的文本方面做你正在寻找的事情,(b)返回true以防止默认粘贴发生。这比使用Key down事件更安全,因为用户可能会手动从编辑菜单中选择paste。

您可以通过创建剪贴板对象来访问剪贴板上的文本。

子类化textfield并拦截粘贴菜单命令:

  1. 项目打开后,点击项目菜单>添加>类
  2. 在项目选项卡中选择新类,并在属性面板中将super设置为TextField
  3. 双击类进行编辑
  4. 在你的类中点击"添加菜单处理程序"中间工具栏按钮
  5. 将菜单项名称更改为"EditPaste"。把你的代码放在"return true"之前,并确保在那里留下返回true。

您的代码可以手动格式化和粘贴文本,并覆盖默认的粘贴函数。

文本域中的任何command-V或control-V都将触发该菜单处理程序。任何上下文菜单都会由你添加,因为real basic不会创建默认的上下文菜单,所以你也可以控制它。

要将文本字段添加到窗口中,只需将对象列表上方的过滤器更改为Project controls,并从那里拖动类。

您可以通过在KeyDown事件中拦截粘贴来拦截它。然后,您可以自己解析它。这可能有点棘手,但我认为这是唯一的方法。

在粘贴之后解析生成的StyleRun并去掉不想要的格式可能会更容易。

或者,您可以查看True North Software的格式化文本控件,并覆盖该控件的粘贴方法(您可以获得所有源代码),然后自己处理它。

无论如何,我认为这将是相当多的工作。

相关内容

  • 没有找到相关文章

最新更新