您的位置:首页 > 其它

RichviewEdit 图文保存操作

2015-08-15 19:29 344 查看
首先要转换成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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: