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;
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;
相关文章推荐
- vi命令向上插入一行
- java NIO、BIO、AIO全面剖析
- 剑指offer 算法(数组 字符串)
- HDU 3507 Print Article
- 网络协议-UDP简单应用
- JS学习十五天----设计模式开篇
- C++之const
- PCB设置
- 关于extern "C" 的用法
- MySQL的完全卸载
- 其他备选的I/O模型--《linux/unix系统编程手册》
- UUID和UDID区别
- 静态变量和实例变量
- 小白Windows7/10 64Bit安装Theano并实现GPU加速(没有MinGw等,详细步骤)
- STM32学习笔记——基础定时器
- 阿里云Ubuntu14.04配置Mono+Jexus
- 鸿观之怎么读好书
- 鸿观之怎么读好书
- 信息化项目的高可用方案
- Struts2的优点