書式付きメモ型項目へアクセスしたい
|
ヘルプなどでは、Streamをつかった方法が紹介されています。
DataSet.FieldByName('Field1').AsString := RichEdit1.Text;
や
DataSet.FieldByName('Field1').AsVariant := RichEdit1.Text;
では、PlainText となり、書式が保存されません。
Field1 書式付きメモ型とし、
DataSetは開かれているとします。
// リッチエディットからフィールドへの書き込み
procedure TForm1.Button8Click(Sender: TObject);
var
Stream1 : TMemoryStream;
begin
Stream1 := TMemoryStream.Create;
try
RichEdit1.Lines.SavetoStream(Stream1);
Query1.Edit;
TBlobField(Query1.FieldByName('Field1')).LoadFromStream(Stream1);
Query1.Post;
finally
Stream1.Free;
end;
end;
// フィールドからリッチエヂットへの読み出し
procedure TForm1.Button4Click(Sender: TObject);
var
Stream1 : TBlobStream;
begin
Stream1 := TBlobStream.Create(TBlobField(Query1.FieldByName('Field1')), bmRead);
try
RichEdit1.Lines.LoadFromStream(Stream1);
finally
Stream1.Free;
end;
end;
TRichEdit系は、いくつかのバグが報告されています。
データが大きくなるとヤバイという噂です。
D4では、大部改善されたようですが、気をつけて下さい。
バグ情報は
http://www.dataweb.nl/~r.p.sterkenburg/indexpag.htm
|
|