【发布时间】:2013-04-20 18:44:06
【问题描述】:
我正在尝试将 InfoBefore 文本文件的文本存储到一个变量中,然后使用自定义字体颜色和背景色将其加载到 RTFEditor 中。
当我尝试从变量加载文本时,它显示“只写属性”
我需要一个明确的示例来说明如何同时完成这两项操作(将文本存储在 var 中,使用自定义颜色和背景色加载 RTF 中的文本)而不会使事情过于复杂,因为我不知道 Pascal .
这是代码:
const
FontColor: AnsiString = 'cf0';
BackColor: AnsiString = 'cf1'
var
OldText: AnsiString;
procedure InitializeWizard();
begin
// I try to store the text in a variable
Oldtext := WizardForm.InfoBeforeMemo.RTFText;
// I try to load from the variable, with a new font color for ALL the text, and a new BackColor.
WizardForm.InfoBeforeMemo.RTFText := Oldtext + FontColor
end;
【问题讨论】:
-
TRichEditViewer类没有RTFText属性的读取权限,因此如果没有 Windows API,就无法从那里读取 RTF 文本。所以实际上没有没有复杂化的事情。 -
更具体地说,
TRichEditViewer控件的 RTF 读取实现是关于EM_STREAMOUT消息及其EditStreamCallback回调函数,您需要用一些external library包装它。 -
omg... 似乎太难了,谢谢您提供的信息。将 InfoBeforeFile 存储在 var 中的任何其他方式?
-
不,恐怕这是唯一可能的方法(除了修改
TRichEditViewer类并重新构建InnoSetup)。你打算修改字体,不是吗?还有一种不同的方法可以通过EM_SETCHARFORMAT消息在富编辑中修改特定文本的字体属性(在我看来更直接)。抱歉,我没有发布答案,因为这些天我在这里很沮丧,但如果你愿意,我可以发布一个使用示例(这比使用原始 RTF 容易得多)。 -
@TLama 非常感谢您的帮助,如果您愿意,您可以发布一个答案,我可以按照您的步骤(复制和粘贴)来做我需要的事情,然后再次感谢,否则我真的不能那样做,因为从来没有接触过 Pascal 或打算学习更多使用这个 InnoSetup 脚本的必要性,也许你会认为答案会因为这个原因浪费时间,所以不要担心,如果你不想回答,但对其他人也有用。
标签: inno-setup pascal rtf pascalscript