首先要转换成stream后才能对RichviewEdit进行正确的读和写
function
SaveRVFToField(rv: TCustomRichView; tbl: TTable;
const
FieldName: String): Boolean;
var Stream: TStream;
begin
Stream:
=
TMemoryStream.Create;
try
Result:
=
rv.SaveRVFToStream(Stream, False);
Stream.Position:
=
0
;
TBlobField(tbl.FieldByName(FieldName)).LoadFromStream(Stream);
finally
Stream.Free;
end
;
end
;
function
LoadRVFFromField(rv: TCustomRichView; tbl: TTable;
const
FieldName: String): Boolean;
var
Stream: TStream;
begin
Stream:
=
TMemoryStream.Create;
try
TBlobField(tbl.FieldByName(FieldName)).SaveToStream(Stream);
Stream.Position:
=
0
;
Result:
=
rv.LoadRVFFromStream(Stream);
finally
Stream.Free;
end
;
rv.Format;
end
;
以上的两个函数是把RichviewEdit的内容保存到数据库里面的做法。但是,
RichViewEdit的图片内容保存到数据库后,有些图片保存的时候看起来是正常的,但是再从数据库里面读出来就看不到图片了,但是这种状况并不是每张图片都会发生,有些图片放进去数据库后又能正常显示,百思不得其解!
后来在RichViewEdit的RVFOptions——rvfoSaveBinary设置成False,这样从数据库里面读取出来的图片就都能正常显示了。
让 RichviewEdit 内容转换成图片
procedure TSendDataFrm.btnR2BClick;
const
VERYLARGEVALUE = $FFFFFFF;
var
iWidth, iHeight: integer;
Canvas: TMetafileCanvas;
bmp: TBitmap;
wmf: TMetafile;
i, j, k: integer;
begin
RVE.HScrollPos := 0;
RVE.VScrollPos := 0;
RVE.Deselect;
RVE.Invalidate;
k := 0;
for i := 0 to RVE.LineCount - 1 do
begin
j := RVE.Canvas.TextWidth(RVE.GetItemTextA(i)); //+RVE.GetItemTextR(i)图片长
if j > K then
k := j;
end;
iWidth := k;
iHeight := RVE.RVData.DocumentHeight - 10;
Image1.Picture.Bitmap.Width := iwidth;
Image1.Picture.Bitmap.Height := iHeight;
bitblt(Image1.Picture.Bitmap.Canvas.Handle, -1, -7
, RVE.Width, RVE.Height, GetWindowDC(RVE.Handle), 0, 0, SRCCOPY);
image1.Refresh;
让 RichviewEdit 支持中文
⑴ 设置RichViewEdit下面的几个属性:
① TRVRTFReaderProperties → ParaStyleMode → rvrsAddIfNeeded
② TRVRTFReaderProperties → TextStyleMode → rvrsAddIfNeeded
③ TRVRTFReaderProperties → UnicodeMode → rvruOnlyUnicode
⑵ 设置RVStyle:
双击该控件,在弹出的窗体里选定里面5个子项,然后在属性窗体里找到
Unicode属性,全部改为:True;
var Stream: TStream;
让 RichviewEdit 内容转换成图片
procedure TSendDataFrm.btnR2BClick;
const
var
begin
让 RichviewEdit 支持中文
⑴ 设置RichViewEdit下面的几个属性:
⑵ 设置RVStyle:
Unicode属性,全部改为:True;