richedit(100分)

  • 主题发起人 主题发起人 lancee
  • 开始时间 开始时间
L

lancee

Unregistered / Unconfirmed
GUEST, unregistred user!
我用richedit编辑好格式,用:
with table1 do
begin
edit;
fields[1].asstring:=richedit1.Text ;
post;
end; 存入表中,然后用:
with table1 do
begin
edit;
richedit1.Text :=Fields[1].asstring ;
end; 取出,但其格式没有了
希望能保存格式。
 
在读取数据时,先将数据装入一个TStream变量中,再用LoadFromStream
方法导入RichEdit。试试看。
 
这是我的一个程序的片段。

type
TNewStream=class(TMemoryStream)
private
protected
public
published
procedure NewReadStream(p:PChar;Len:integer);
end;

procedure TNewStream.NewReadStream(p:PChar;Len:integer);
begin
Clear;
SetPointer(p, Len) ;
end;

// ****************************************************************

procedure SetRichEdit(RichEdit1:TRichEdit;s:string); // 调用此函数
var
cc:TNewStream;
begin
cc := TNewStream.Create;
cc.NewReadStream(PChar(s),Length(s));
RichEdit1.PlainText := False;
RichEdit1.Lines.LoadFromStream(cc);
cc.Free;
end;

你的程序改为:
with table1 do begin
edit;
SetRichEdit(richedit1,Fields[1].asstring );
end;

不知哪位大虾还有更好的办法? 8-)
 
可我看这些办法没什么区别,似乎还是应该
RichEdit1.PlainText := False;
的问题.
 
dwwang,你看下面代码就不能实现。

// 先调入
procedure TForm1.Button2Click(Sender: TObject);
begin
Memo1.Lines.LoadFromFile('c:/test.rtf');
end;

procedure TForm1.Button1Click(Sender: TObject);
var
s:string;
begin
s := Memo1.Lines.Text;
RichEdit1.PlainText := False;
RichEdit1.Text := s;
end;
 
这完全是两回事,TMemo.lines是TStrings类型,
一旦LoadFromFile,会自动加上回车/换行,
当然什么都完了.

fields[1].asstring可不是这样.
 
不过richedit.text,richedit.lines.text确实都是纯文本,
想用他们来保存/读取 richtext是不行的.
 
这里“TStrings的LoadFromFile对文本作何处理”问题有点离题了,暂且不提。

dwwang,你所说的都试过没有?
 
正如dwwang所说的,问题的关键在不能向TEXT直接赋值。
 
为什么不用dbrichedit?
 
接受答案了.
 

Similar threads

S
回复
0
查看
694
SUNSTONE的Delphi笔记
S
S
回复
0
查看
655
SUNSTONE的Delphi笔记
S
S
回复
0
查看
828
SUNSTONE的Delphi笔记
S
S
回复
0
查看
758
SUNSTONE的Delphi笔记
S
后退
顶部