如何在Delphi中显示格式化(颜色,样式等)日志?

nor*_*aul 5 delphi logging rtf delphi-2009

我需要在Delphi 2009中显示一个格式化的日志.格式化不必实现说html的所有功能,而是一个小的子集,例如颜色,字体样式等.

目前我正在使用TRichEdit和我自己的专有标签,例如这是蓝色的.由于无法直接访问RTF文本,因此将其与TRichEdit配合使用非常复杂.例如,要将文本着色为蓝色,我必须:

  1. 解析提取标签的附加文本,找出需要格式化的文本以及如何格式化.
  2. 选择文字.
  3. 应用格式.
  4. 取消选择文本并将选择移动到文本的末尾,为下一个附加做好准备.

这一切都是黑客和缓慢的.您是否知道使用TRichEdit或其他更适合工作的控件更好(更快)的方法?

我应该提一下,我考虑过在TWebBrowser中使用HTML.这种方法的问题是日志可以是1到100000行的任何地方.如果我使用普通的html查看器,我需要每次都设置整个文本而不是简单地附加它.

此外,当我向其添加行时,需要实时更新日志.不只是从文件中读取并显示一次.

mjn*_*mjn 9

简单的解决方案:使用带有自定义绘制方法的TListBox,并使用仅包含基本信息的对象将日志条目放在TObjectList中,而不是格式化(这将在演示代码中应用).

或者使用虚拟字符串列表/ VirtualTreeView组件.只渲染需要显示的项目,这样可以节省资源.