【问题标题】:TDBrichedit displays plain text rather than rich textTDBrichedit 显示纯文本而不是富文本
【发布时间】:2018-07-27 15:26:52
【问题描述】:

上下文是我正在使用 BDE 维护在 delphi 7 上运行的应用程序。我以编程方式分配 dbricheditcontrols 的数据字段以允许用户编辑 rtf 文档。当相关表格打开时,显示未格式化的文本,然后一旦说该人移动到下一个文档,富文本就会突然出现;我怀疑这一定是某种初始化问题,但我错过了什么;无法在线找到解决方案。

谢谢

【问题讨论】:

  • " 我以编程方式分配 dbricheditcontrols 的数据字段 " 您需要将执行此操作的代码添加到您的 q.你不应该期望读者猜到你在做什么。
  • 另外,请注意,如果没有您的代码,这个 q 可能会吸引近距离投票,一旦它获得 5,它将被“搁置”,然后没有人可以回答它,除非它已重新打开。

标签: delphi bde


【解决方案1】:

通常情况下,我不会发布对 q 的回答

我以编程方式分配 dbricheditcontrols 的数据字段以允许用户编辑 rtf 文档

但未能包含您正在使用的代码 - 您应该提供 MCVE(请参阅 https://stackoverflow.com/help/mcve)。

但是,您所说的表明您可能正在尝试以错误的方式做事。您说您正在使用TDBRichEdit 组件,但如果您正确使用它,则不需要对数据字段进行任何编程分配即可:您只需通过 TDataSource 将组件连接到您正在使用的 TTable 或 TQuery组件,并配置 DBrichEdit 以访问存储 Richedit 文本的 TTable/TQuery 的任何字段。这可以在设计时使用 IDE 中的 Object Inspector 来设置属性,并且不需要任何代码。

所以,在我看来,要么您没有正确使用 DBrichEdit,要么您正在尝试做一些您在 q 中没有解释过的事情。

您可以让自己确信 DBrichEdit 自动工作,无需在代码中加载或保存其内容,如下所示:

  • 打开 FishFacts 演示

  • 将 TDBNavigator 和 TDBRichEdit 添加到表单中。将 DBrichEdit1 的DataField 属性设置为Notes

  • Table1ReadOnly 属性设置为False。然后将Table1Active属性设置为True。

  • 编译并运行项目。运行时

  • 启动 WordPad.Exe 并在其中创建一些富文本。将其复制到剪贴板。点击DBNavigator1的Savespeed按钮。

  • 将富文本粘贴到DBRichEdit1

  • 您应该会发现您可以导航离开和返回到已编辑的记录,并且富文本将自动重新加载。

另外,下面的代码可以很好地让我从 .Rtf 文件中加载 Notes 字段

procedure TForm1.Button1Click(Sender: TObject);
begin
  Table1.Edit;
  TMemoField(Table1.FieldByName('Notes')).LoadFromFile('D:\test.rtf');
end;

并且最初不会显示您描述的未格式化文本。所以我很确定你的代码中出现了你没有向我们展示的问题。

顺便说一句,我将其发布为“答案”的唯一原因是要说的内容比评论中的内容要多。

【讨论】:

  • 这回答了你的问题吗?
  • 抱歉没有添加代码。我以编程方式分配数据字段的原因是我使用单个表单来允许用户查看、编辑或将数据发布到多个字段之一。
  • 遗憾的是没有。我想在任何一个时间点为用户提供数据感知控件中显示的字段之间的选择。用户使用单选按钮或选项卡选择他们希望处理的文档,并通过更改 TDBRichEdit 组件的 datafield 属性的值来显示它:TDBRichEdit1.datafield := 。除了第一次显示表单并且如果我切换字段然后再次返回格式会重新出现之外,其他所有内容都有效。因此,我认为在进行第一次分配时,某些事情没有启动或进程没有运行。
  • 那么你确实需要展示你正在使用的代码,它证明了问题。读者在这种情况下无法提供帮助,除非他们能够重现问题。我的代码对我来说运行良好,即使是第一次运行。
猜你喜欢
  • 1970-01-01
  • 2019-12-26
  • 1970-01-01
  • 2017-08-18
  • 2016-07-23
  • 2011-07-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多