2013-04-20 82 views
1

我試圖將InfoBefore文本文件的文本存儲到變量中,然後使用自定義字體顏色和背景將其加載到RTFEditor中。InnoSetup,如何將自定義文本加載到RTFText

當我嘗試加載從變量它說文「只寫屬性」

我需要如何這兩件事一起做一個明顯的例子(存儲在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; 
+1

TRichEditViewer類沒有RTFText屬性的讀訪問權限,所以沒有Windows API,沒有辦法從那裏讀取RTF文本。所以實際上沒有*沒有複雜的事情*。 – TLama 2013-04-20 19:02:51

+1

更具體地說,TRichEditViewer控件的RTF讀取實現與['EM_STREAMOUT'](http://msdn.microsoft.com/en-us/library/windows/desktop/bb774304(v = vs.85) ).aspx)消息和它的['EditStreamCallback'](http://msdn.microsoft.com/en-us/library/windows/desktop/bb774368(v = vs.85).aspx)回調函數,你需要通過一些['external library'](http://www.sherlocksoftware.org/page.php?id=54)來包裝。 – TLama 2013-04-21 10:19:49

+0

omg ...似乎非常辛苦,謝謝你的信息傢伙。任何其他方式將InfoBeforeFile存儲在var中? – ElektroStudios 2013-04-21 11:13:06

回答

3

,而不是試圖改變它的事實後,只需加載你的.txt文件在寫字板,使格式更改需要,然後將其保存.rtf格式。然後,您可以直接使用此文件作爲您的InfoBeforeFile,而無需使用任何代碼。

編輯:如果你想改變整個備忘錄的背景顏色,那麼你仍然需要一行代碼。例如:

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

哇似乎是更好的選擇,謝謝,你知道我是否可以用這種方法改變背色嗎?不能舉一個帶空白背景和黑色textcolor文本的例子嗎? – ElektroStudios 2013-04-21 22:07:42

+1

是的,沒有。據我所知,RTF沒有指定一種方法來定義整個頁面的背景顏色,而只是單獨的段落。 (寫字板沒有提供設置段落背景顏色的方法,但是它可以讓你設置高亮顏色,它有類似的效果 - 儘管如果你改變整個備忘錄,你不需要它。)如果你想要改變整個備忘錄的背景顏色作爲一個整體,那麼你仍然需要一行代碼,我已經編輯了上面的答案。 – Miral 2013-04-22 00:36:06

相關問題