以下代码在D2005上运行良好:
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');
我如何从数据库导入rtf文本到TRichEdit,而不必在此过程中使用文件?我尝试了这个解决方案这个问题但是它不起作用,它以纯文本形式出现,每个字符之间有一个空格。
谢谢山姆
如果你试图将RTF代码加载到TRichEdit
中,那么将RTF放入TStream
对象中,并使用RichEdit的LoadFromStream()
方法将PlainText
属性设置为False。
此解决方案适用于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;