从D2005升级到D2010:TRichEdit

时间:2011-07-26 11:26:22

标签: delphi delphi-2010 trichedit

以下代码适用于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? 我尝试了解决方案 this question 但它不起作用,它以纯文本形式出现,每个字符之间都有一个空格。

由于 萨姆

2 个答案:

答案 0 :(得分:1)

如果您尝试将RTF代码加载到TRichEdit,请将RTF放入TStream对象,并使用RichEdit的LoadFromStream()方法设置PlainText属性为假。

答案 1 :(得分: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;