为什么80%的码农都做不了架构师?>>>   

准备工作:
在窗体上放置一个 TPanel; 在 TPanel 上放一个 TImage; 另外需要三个按钮.



本例效果图:



第一版代码:


unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, ExtCtrls;typeTForm1 = class(TForm)Button1: TButton;Button2: TButton;Button3: TButton;Panel1: TPanel;Image1: TImage;procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);procedure Button3Click(Sender: TObject);end;varForm1: TForm1;implementation{$R *.dfm}uses Clipbrd;procedure TForm1.Button1Click(Sender: TObject);
beginImage1.Left := 0;Image1.Top := 0;Panel1.AutoSize := True;Image1.AutoSize := True;Image1.Picture.LoadFromFile('c:\temp\test.bmp');TButton(Sender).Caption := '导入';
end;procedure TForm1.Button2Click(Sender: TObject);
beginClipboard.Assign(Image1.Picture); {把 Image1 中的图片放入剪切板}{现在在图像软件中都可以粘贴了, 可以用 Windows 画图板试试}TButton(Sender).Caption := '复制';
end;procedure TForm1.Button3Click(Sender: TObject);
varbit: TBitmap; {准备用一个 TBitmap 从剪切板中结束图片}x,y: Integer;
beginbit := TBitmap.Create;bit.Assign(Clipboard);               {从剪切板获取}x := Panel1.Width + Panel1.Left * 2; {x,y 是准备在窗体上的粘贴位置}y := Panel1.Top;Canvas.Draw(x, y, bit);              {粘贴就是画出来呗}bit.Free;TButton(Sender).Caption := '粘贴';
end;end.

不过现在程序还有漏洞: 假如剪切板中没有东西, 粘贴什么? 如果剪切板中不是图片, 怎么粘贴?

其实我们只用 TClipboard.HasFormat 函数判断一下剪切板中是不是图片就行了.

第二版代码:


unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, ExtCtrls;typeTForm1 = class(TForm)Button1: TButton;Button2: TButton;Button3: TButton;Panel1: TPanel;Image1: TImage;procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);procedure Button3Click(Sender: TObject);end;varForm1: TForm1;implementation{$R *.dfm}uses Clipbrd;procedure TForm1.Button1Click(Sender: TObject);
beginImage1.Left := 0;Image1.Top := 0;Panel1.AutoSize := True;Image1.AutoSize := True;Image1.Picture.LoadFromFile('c:\temp\test.bmp');TButton(Sender).Caption := '导入';
end;procedure TForm1.Button2Click(Sender: TObject);
begin{如果 Image1 还没有图片, 就别复制了, 退出吧}if Image1.Picture = nil then Exit;Clipboard.Assign(Image1.Picture);TButton(Sender).Caption := '复制';
end;procedure TForm1.Button3Click(Sender: TObject);
varbit: TBitmap;x,y: Integer;
begin{如果当前剪切板中的东西不是图片, 就退出}if not Clipboard.HasFormat(CF_BITMAP) then Exit;bit := TBitmap.Create;bit.Assign(Clipboard);x := Panel1.Width + Panel1.Left * 2;y := Panel1.Top;Canvas.Draw(x, y, bit);bit.Free;TButton(Sender).Caption := '粘贴';
end;end.

现在有出了新的问题: CF_BITMAP 常量表示图片, 其他格式怎么表示? 有多少格式可以用于剪切板?


转载于:https://my.oschina.net/hermer/blog/319275

使用剪切板[2]: Assign、HasFormat相关推荐

  1. 使用剪切板[3]: SetComponent、GetComponent

    本例演示把一个组件(TEdit)放入剪切板, 又取出(放到一个 TPanel 上)的过程. 放入剪切板的方法是个过程: SetComponent(要放入的组件); 取出的方法是个函数: GetComp ...

  2. 使用剪切板[4]: 如果把子控件一起复制? - 同时回复 ghd2004 的问题

    为什么80%的码农都做不了架构师?>>>    如果连同子控件一起复制到剪切板, 需要定义一个新类型. 譬如在一个 TPanel 中包含一个 TEdit; 在复制 TPanel 时, ...

  3. windows剪切板文本和文件的获取设置

    介绍 windows剪切板的内容包含很多不同的格式,例如:CF_TEXT.CF_BITMAP.CF_METAFILEPICT.CF_SYLK.CF_DIF.CF_TIFF.CF_OEMTEXT.CF_ ...

  4. tmux系统剪切板_实践中的tmux:与系统剪贴板集成

    tmux系统剪切板 by Alexey Samoshkin 通过阿列克谢·萨莫什金(Alexey Samoshkin) 在实践中使用tmux:与系统剪贴板集成 (tmux in practice: i ...

  5. android读取剪切板的方法,Android复制粘贴剪切板内容的一种方法

    1 Clipper介绍 Clipper是一款简单的app, 它可以通过一行adb shell命令来和安卓系统剪切板服务交互. 官方说明:https://github.com/majido/clippe ...

  6. Python中将pandas的dataframe拷贝到剪切板并保持格式实战:to_clipboard()函数、复制到Excel文件、复制到文本文件(默认是tsv格式)、复制到文本文件(设置逗号分隔符)

    Python中将pandas的dataframe拷贝到剪切板并保持格式实战:to_clipboard()函数.复制到Excel文件.复制到文本文件(默认是tsv格式).复制到文本文件(设置逗号分隔符) ...

  7. js实现复制文本内容到剪切板

    js实现复制文本内容到剪切板 一.总结 一句话总结:就是document的execCommand('copy')方法 二.js实现复制文本内容到剪切板 直接上代码: 1 <script type ...

  8. vim 寄存器,剪切板

    为什么80%的码农都做不了架构师?>>> 在vim里面写原创文章,或者转帖自己看到的经典文章: 在vim里面写好之后,排好版,然后,快捷键操作:gg, shift+V, shift ...

  9. Linux 下的终端选择,以及剪切板配置

    2019独角兽企业重金招聘Python工程师标准>>> Linux 下使用工很多图形化的伪终端了, 包括gnome-terminal, konsole 等等, 但是都用的不舒服, 特 ...

最新文章

  1. linux 控制网卡流量,如何管理和控制多网卡 Linux 虚拟机的流量走向
  2. Angular 自定义 structural 指令的一个例子
  3. Mifare Ultra Light 非接触式IC卡发卡总结
  4. 一张图理解什么是TP、TN、FP、FN
  5. 知识图谱组队学习Task01——知识图谱介绍
  6. “霸榜CLUE” ,刚刚发布的业界最大中文NLP预训练模型有多强?
  7. 并发编程学习之AQS抽象队列同步器
  8. RDV需要什么服务器系统,锐起RDV的教程
  9. 平面内 两直线/两向量的夹角方向 逆时针 还是顺时针
  10. 个人征信系统机构接入工作流程
  11. 水电图纸——简单看图-3
  12. C语言练习作品 - U盘病毒模拟
  13. 单核CPU处理多线程
  14. Linux就该这么学第十三节课学习心得
  15. 微信点开分享文章所带的关键字
  16. 什么是token,如何使用token
  17. 计算机哪种语言处理速度最快,哪种高级编程语言的执行速度最快?
  18. 基于java(springboot)网吧管理系统(java毕业设计)
  19. u盘安装turbo linux,如何制作u盘系统安装盘
  20. 发邮件礼仪汇总 让优秀成为职场达人习惯

热门文章

  1. 魔兽8.0玩家最多服务器,魔兽世界8.0一上线玩家就挤爆服务器!然而暴雪还藏2个大招在后面...
  2. php 查询键名是否存在,PHP array_key_exists():检测键名是否位于数组中
  3. android 6.0适应的机型,提升用户体验 可升Android 6.0机型盘点
  4. 最新版的SSM框架spring5.0搭建教程(附源码)
  5. Servlet,HTTP,Ruquest,Response
  6. [小结]InnoDB体系结构及工作原理
  7. 新能源汽车简史——电动汽车沉浮录
  8. 什么软件测试显示器响应时间准,自己动手测试液晶显示器响应时间
  9. unity双击打不开脚本_游戏对象和脚本 (创建一个时钟)
  10. 头条 上传图片大小_【标签头条】北京市启用进口冷链食品追溯平台;全球包裹热潮助推标签业发展;数字水印实现大规模垃圾分类;安慕希的麻将酸奶包装好真实...