2011-07-26 79 views
1

下面的代碼工作以及對D2005:升級,從D2005到D2010:TRichEdit

MyRichEdit1.Text := TMemoField(Query1.FieldByName('Msg')).asString; 

但在D2010,該代碼輸出以純文本的文本而不是RTF。

爲了解決這個問題,我使用下面的代碼

MyRichEdit1.PlainText := False; 
MyRichEdit1.Text := TMemoField(Query1.FieldByName('Msg')).asString; 
MyRichEdit1.PlainText := TRUE; 
MyRichEdit1.Lines.SaveToFile('Lixo.Rtf'); 
MyRichEdit1.PlainText := False; 
MyRichEdit1.Lines.LoadFromFile('Lixo.Rtf'); 

如何我可以導入從數據庫到TRichEdit RTF文本,而無需使用一個文件的過程中? 我試過 this question 的解決方案,但它不起作用,它顯示爲純文本和每個字符之間有一個空格。

感謝 山姆

+0

很難相信代碼會載入富文本 –

+0

我正在從BCB6遷移到C++ Builder XE並且遇到同樣的問題。它試圖解決一些可以避免的問題真的很令人沮喪。只是無法理解爲什麼Delphi程序員需要將界面改爲已經運行的東西。 – truthseeker

回答

1

如果你想RTF代碼加載到TRichEdit,那麼RTF放入一個TStream對象,並使用RichEdit中的LoadFromStream()方法與PlainText屬性設置爲False。

0

該解決方案適用於C++ Builder XE,但類似的可用於Delphi。

UnicodeString str = L"{\\rtf1 \\qr r{\\sub nom} = ----}"; // some rtf coded text 
stream = new TStringStream(); 
stream->Clear(); 
stream->WriteString(str); 
stream->Seek(0, soFromBeginning); 
MyRichEdit1->Lines->LoadFromStream(stream); 
delete stream; 
stream = NULL;