Inno setup InnoSetup,如何将自定义文本加载到RTFText

Inno setup InnoSetup,如何将自定义文本加载到RTFText,inno-setup,pascal,rtf,pascalscript,Inno Setup,Pascal,Rtf,Pascalscript,我试图将InfoBefore textfile的文本存储到一个变量中,然后使用自定义字体颜色和背景色将其加载到RTFEditor中 当我尝试从变量加载文本时,它会显示“只写属性” 我需要一个明确的例子来说明如何将这两件事结合起来(将文本存储在var中,使用自定义颜色和背景色将文本加载到RTF中),而不会使事情变得太复杂,因为我不懂Pascal 代码如下: const FontColor: AnsiString = 'cf0'; BackColor: AnsiString = 'cf1'

我试图将InfoBefore textfile的文本存储到一个变量中,然后使用自定义字体颜色和背景色将其加载到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;

与其事后修改,只需将.txt文件加载到写字板中,进行所需的格式更改,然后以.rtf格式保存即可。然后,您可以直接将此文件用作
InfoBeforeFile
,而无需使用任何代码

编辑:如果你想改变整个备忘录的背景颜色,那么你仍然需要一行代码。例如:

[Code]
procedure InitializeWizard();
begin
    WizardForm.InfoBeforeMemo.Color := clBlack;
end;

TRichEditViewer
类没有
RTFText
属性的读取权限,因此如果没有Windows API,就无法从中读取RTF文本。因此,实际上没有什么不让事情复杂化的。更具体地说,
TRichEditViewer
控件的RTF读取实现是关于消息及其回调函数的,您需要用一些.omg。。。看起来太难了,谢谢你们的信息。是否有其他方法可以将InfoBeforeFile存储在变量中?不,恐怕这是唯一可能的方法(除了修改
TRichEditViewer
类和创建InnoSetup的新版本)。你打算修改字体,是吗?还有一种不同的方法,可以通过消息在rich edit(在我看来更直接)中修改特定文本的字体属性。抱歉,我没有发布答案,因为这些天我在这里的积极性很低,但如果你愿意,我可以发布一个使用它的示例(这比使用原始RTF容易得多)。@TLama非常感谢你的帮助,如果你愿意,你可以发布一个答案,我可以按照你的步骤(复制和粘贴)做我需要的事情,然后再做一次并再次感谢,但是,否则我真的不能这么做,因为我从来没有接触过Pascal,也没有打算学习更多的必要知识来使用这个InnoSetup脚本,也许你会认为答案会浪费时间,所以如果你不想要答案,不要担心,但也可以对其他人有用。哇,似乎是更好的选择,谢谢,你知道我是否也可以用这种方法改变背景色吗?不能给出一个带有空白背景色和黑色文本色的文本示例吗?是和否。据我所知,RTF没有指定一种方法来定义整个页面的背景色,仅定义单个段落的背景色。(写字板不提供设置段落背景颜色的方法,但它允许您设置高亮颜色,这具有类似的效果——尽管如果您更改整个备忘录,您不需要它。)如果您想更改整个备忘录的背景颜色,那么您仍然需要一行代码,我在上面的答案中编辑了这些内容。