如何把图片复制到表格中

hszj 2007-08-04 12:15:33
如题,其实这个很简单,Delphi的Clipboard剪贴板类对图片的复制粘贴提供了很好的支持,从剪贴板复制图片可以这样Picture.Assign(Clipboard); 把图片复制到剪贴板中可以这样Clipboard.Assign(Picture); 这里的Picture是Delphi的TPicture,也可以是TBitmap, TJPEGImage等
EjunGrid提供了TZcImageCell类型的单元格,为了在单元格中显示图片,首先设置单元格类型:EjunGrid.CellClass[1, 1] := TZcImageCell;
然后把图片添加到EjunGrid的图片列表中,并发图片索引值赋值给单元格即可。
EjunGrid.Cells[1,1].AsInteger := EjunGrid.AddImage(Picture);

为了实现复制粘贴操作,需要响应OnCopy事件和OnPaste事件,完整代码如下:

// Grid1的复制事件
procedure TForm1.EjunGrid1Copy(Sender: TObject; const ARange: TRect;
var Allow: Boolean);
var
ImgIndex: Integer;
begin
// 判断单元格是否是图片类型,如果是,就把图片保存到剪贴板中
if EjunGrid1.CurCell is TZcImageCell then
begin
ImgIndex := EjunGrid1.Cells[ARange.Left, ARange.Top].AsInteger;
if EjunGrid1.Images[ImgIndex] <> nil then
Clipboard.Assign(EjunGrid1.Images[ImgIndex]);
end;
end;

// Grid2的粘贴事件
procedure TForm1.EjunGrid2Paste(Sender: TObject; const ARange: TRect;
var Allow: Boolean);
var
Picture: TPicture;
begin
// 判断剪贴板中的数据是否有图片格式
if Clipboard.HasFormat(CF_PICTURE) then
begin
// 如果有就创建一个图片对象
Picture := TPicture.Create;
// 从剪贴板中读取图片数据
Picture.Assign(Clipboard);
// 把当前单元格设置成图片类型
EjunGrid2.CellClass[EjunGrid2.CurCol, EjunGrid2.CurRow] := TZcImageCell;
// 把图片添加到表格中,并把图片索引号赋给当前单元格
EjunGrid2.CurCell.AsInteger := EjunGrid2.AddImage(Picture.Graphic);
// 释放图片对象
Picture.Free;
// 阻止表格执行默认的粘贴操作
Allow := False;
end;
end;

EjunGrid提供完全免费版本,可以到这里下载 http://www.ejun.cn
...全文
1449 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿发伯 2007-08-07
  • 打赏
  • 举报
回复
板凳
llh6795 2007-08-07
  • 打赏
  • 举报
回复
UP
hsmserver 2007-08-04
  • 打赏
  • 举报
回复
沙发

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧