如何用RxDBRichEdit显示图片

首先说下开发环境,Win10 , Embarcadero® Delphi 10.2   

在用RxDBRichEdit之前,我是用OleContainer的,比如以下这段

OleContainer1.CreateObject('Word.document',False);
OleContainer1.DoVerb(ovPrimary);

OleContainer能够在程序中完整的显示出Word的界面,相当漂亮

但问题也很多

1、菜单经常无故消失,或者跑到别的界面上

2、用户环境不同对执行速度影响很大

3、用户使用不同版本的Office很要命

4、如果里面有图片,运行会更慢

      我在开发消息系统时,虽然在自己的开发环境里运行一切正常,但使用者的电脑配置较低时,就会出现卡顿甚至假死,使用高版本Office时,有时会提示没有某个功能等等,总之问题很多,运行不稳定,最终我放弃了OleContainer。

     最完美的结果是,用Richedit可以显示图片和文字,文字又可以排版,好处是稳定,速度快。但问题是直接将图片粘贴进Richedit后保存进数据库,再提取时图片没有了,后面的文字也没有了,经过我无数次尝试,终于找到了解决方法,现在分享给大家。

1、首先加入RichEx,来源http://www.delphitop.com/html/kongjian/1938.html

2、加入RxDBRichEdit,对应数据库字段类型为Image

3、在屏幕上截屏后,clipboard上面是图像

4、增加一个按钮,负责将clipboard上的图像导入RxDBRichEdit

5、写按钮的Click事件,如果写在KeyDown事件更好,处理Ctrl+V事件,我还没尝试过。

procedure TForm1.Button1Click(Sender: TObject);
var
  map:tbitmap;
begin
  inherited;
  if clipboard.HasFormat(cf_bitmap) then
  //判断剪切板中是否是图像
  begin

    map:=tbitmap.Create;
    map.assign(clipboard);
    image1.Picture.Assign(map);

    InsertBitmap(RxDBRichEdit1.Handle,map);
    map.Free;
  end else
  begin
    ShowMessage('没有图片或不支持的图片格式');

  end;
end;

消息编辑时,先截屏,再点击右上角的按钮,在文字中间导入图片

从数据库提取后显示,图片和文字显示正常

说明:

1、在导入前要用clipboard的HasFormat判断下是不是图像

2、InsertBitmap是RichEx里的函数

3、要引用Vcl.Clipbrd,RichEx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值