RichviewEdit 图文保存操作

首先要转换成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;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
这是一个用于测试VST和richview的小程序。使用的测试数据是三国群英传的数据,该系列数据中的中文是繁体,程序的目的是在richview中同时显示繁体和简体中文。 程序中使用了两个控件:virtualstringtree和richview。 virtualstringtree显示的数据是正常的简体环境下显示繁体字,可以看出显示的是乱码。virtualstringtree定义的record包含两个元素:name:string和items:strings,分别用于存储节名称和节内数据。点击任何一个节点,可以在richview中显示内容。 richview使用的是一个richviewedit,在其中同时显示繁体和简体中文。 采用的方法是设置不同textstyle,textstyle【0】的chartset是选择的繁体中文(big5),而其它的charset未变,使用的是系统数据。同时,在richviewedit中还使用了actions,并成功的在调用弹出菜单时添加了一个插入表格的菜单。 此外,parastyle【0】的tabs设置的是120,240,360,480,600,用于较清晰的显示五段数据(导出功能时同类型数据显示5个)。 在程序的初始阶段,设置了程序的语言环境,所以弹出菜单及相应的对话框基本都是自动汉化的。有些功能,例如打印、查找等可以使用快捷键获得,但未添加菜单。 这本来就是一个测试用的小程序,免费(本想免费,结果最低必须收一个点)提供给大家,有喜欢的可以参考。其中virtualstringtree控件是免费的,可以在我的另一个链接里买到使用说明。richview是收费控件,所以未放上使用说明(是的,自己做了个较为详尽的使用说明,但怕版权纠纷,未放上来)。
Lazarus RichViewEdit是一个基于Lazarus开发环境的富文本编辑器组件。Lazarus是一个开源跨平台的集成开发环境,主要用于创建基于Object Pascal语言的应用程序。RichViewEdit是Lazarus中的一个重要组成部分,它提供了丰富的富文本编辑功能,使得用户可以在应用程序中轻松实现各种富文本编辑需求。 Lazarus RichViewEdit具有许多强大的特性。首先,它支持基本的文本编辑功能,例如字体样式(如加粗、斜体、下划线)、对齐方式、段落缩进、列表等。其次,它还支持插入和编辑各种媒体资源,例如图片、表格、超链接等,让用户可以更加丰富地展示和编辑内容。此外,Lazarus RichViewEdit还支持撤销和重做功能,方便用户进行编辑操作的撤销与恢复。 此外,Lazarus RichViewEdit还提供了自定义的样式支持,用户可以根据应用程序的需求,定义特定的文本样式和布局风格。通过样式的管理,用户可以统一设置和修改文本的外观,提升应用程序的整体视觉效果。 使用Lazarus RichViewEdit,开发人员可以轻松创建功能强大的富文本编辑器应用程序,满足不同领域的富文本编辑需求,例如笔记应用、邮件客户端、图文编辑器等。Lazarus RichViewEdit的跨平台特性使得应用程序能够在Windows、Linux和Mac等多个操作系统上运行,为用户提供更好的灵活性。 总之,Lazarus RichViewEdit是Lazarus开发环境中功能丰富的富文本编辑器组件,用户无需编写复杂的代码即可轻松实现各种富文本编辑功能,为应用程序的开发带来了便利和效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值