Delphi Clipboard[1] 剪贴板 介绍
{该文首发于博客园 滔Roy,无须授权即可转发,请自觉保留头部申明}
Delphi Clipboard[1] 剪贴板 介绍
uses
Clipbrd;
- TClipboard 对象封装了Windows剪贴板
- 剪贴板一次只能保存一份相同类型的数据,以便进行剪切,复制和粘贴。 如果我们以相同的格式将新信息发送到剪贴板,则会擦除之前的内容,但是即使将剪贴板中的内容粘贴到另一个程序中,剪贴板中的内容也会保留在剪贴板中
- Delphi内已经具有对Clipboard方法的内置支持的组件,例如:TEdit、TMemo、TOLEContainer、TDDEServerItem、TDBEdit、TDBImage、TDBMemo等
- 我们经常使用Clipbrd单元中的CutToClipboard、CopyToClipboard 、PasteFromClipboard、Clear和HasFormat方法来处理剪贴板操作和文本/图形操作
1、剪贴板格式
1.1 Windows提供的默认
- CF_TEXT = 1; //文本格式。每行以回车/换行(CR-LF)组合结束。空字符表示数据结束。将此格式用于ANSI文本。
- CF_BITMAP = 2; //位图的句柄(HBITMAP)。
- CF_METAFILEPICT = 3; //由METAFILEPICT结构定义的图元文件图片格式的句柄。当通过DDE传递CF_METAFILEPICT句柄时,负责删除hMem的应用程序还应释放CF_METAFILEPICT句柄引用的元文件
- CF_SYLK = 4; //Microsoft符号链接(SYLK)格式。
- CF_DIF = 5; //软件艺术的数据交换格式。
- CF_TIFF = 6; //标记图像文件格式。
- CF_OEMTEXT = 7; //包含OEM字符集中字符的文本格式。每行以回车/换行(CR-LF)组合结束。空字符表示数据结束。
- CF_DIB = 8; //一个内存对象,包含一个BITMAPINFO结构,后跟位图位。
- CF_PALETTE = 9; //控制调色板。每当应用程序在剪贴板中放置依赖于或采用调色板的数据时,它也应该将调色板放置在剪贴板上。如果剪贴板包含CF_PALETTE(逻辑调色板)格式的数据,应用程序应使用SelectPalette和RealizePalette函数实现(比较)剪贴板中的任何其他数据与该逻辑调色板。显示剪贴板数据时,剪贴板始终使用剪贴板上任何CF_PALETTE格式的对象作为其当前调色板。
- CF_PENDATA = 10; //用于笔计算的Microsoft Windows的笔扩展数据。
- CF_RIFF = 11; //表示比CF_WAVE标准波形格式更复杂的音频数据。
- CF_WAVE = 12; //表示标准波形格式之一的音频数据,如11 kHz或22 kHz PCM。
- CF_UNICODETEXT = 13; //Unicode文本格式。每行以回车/换行(CR-LF)组合结束。空字符表示数据结束。
- CF_ENHMETAFILE = 14; //增强元文件(HENHMETAFILE)的句柄。
- CF_HDROP = 15; //标识文件列表的HDROP类型句柄。应用程序可以通过将句柄传递给DragQueryFile函数来检索有关文件的信息。
- CF_LOCALE = $10; //数据是与剪贴板中的文本关联的区域设置标识符(LCID)的句柄(HGLOBAL)。关闭剪贴板时,如果其中包含CF_TEXT数据但没有CF_LOCALE设置数据,系统会自动将CF_区域设置格式设置为当前输入语言。您可以使用CF_LOCALE设置格式将不同的区域设置与剪贴板文本相关联。从剪贴板粘贴文本的应用程序可以检索此格式,以确定用于生成文本的字符集。请注意,剪贴板不支持多个字符集中纯文本。要实现这一点,请改用RTF等格式化文本数据类型。系统使用与CF_LOCALE关联的代码页隐式地将CF_TEXT转换为CF_Unicode文本。因此,正确的代码页表用于转换。
- CF_MAX = 17; //{注意:如果WINVER<5,CF_MAX会更改值。为了保持向后兼容性,请对WINVER<5使用CF_MAX,对WINVER>5使用CF_MAX_XP。}
- CF_DIBV5 = 17; //一个内存对象,包含BitMapV5头结构,后跟位图颜色空间信息和位图位。
- CF_MAX_XP = 18; //{注意:如果WINVER<5,CF_MAX会更改值。为了保持向后兼容性,请对WINVER<5使用CF_MAX,对WINVER>5使用CF_MAX_XP。}
- CF_OWNERDISPLAY = 128; //所有者显示格式。剪贴板所有者必须显示和更新“剪贴板查看器”窗口,并接收WM_ASKCBFORMATNAME、WM_HSCROLLCLIPBOARD、WM_PAINTCLIPBOARD、WM_SIZECLIPBOARD和WM_VSCROLLCLIPBOARD消息。hMem参数必须为NULL。
- CF_DSPTEXT = 129; //与专用格式关联的文本显示格式。hMem参数必须是可以以文本格式显示的数据的句柄,而不是私有格式的数据。
- CF_DSPBITMAP = 130; //与专用格式关联的位图显示格式。hMem参数必须是可以以位图格式显示的数据的句柄,而不是私有格式的数据。
- CF_DSPMETAFILEPICT = 131; //与私有格式关联的图元文件图片显示格式。hMem参数必须是可以以图元文件图片格式显示的数据的句柄,以代替私有格式的数据。
- CF_DSPENHMETAFILE = 142; //与私有格式关联的增强元文件显示格式。hMem参数必须是一个数据句柄,可以以增强的图元文件格式显示,而不是以私有格式显示数据。
- CF_PRIVATEFIRST = $200; //专用剪贴板格式的整数值范围的开始。该系列以CF_PRIVATELAST结尾。与专用剪贴板格式关联的句柄不会自动释放;剪贴板所有者必须释放此类句柄,通常是为了响应WM_DESTROYCLIPBOARD消息。
- { "Private" 格式无法获得GlobalFree()'d }
- CF_PRIVATELAST = 767; //看 CF_PRIVATEFIRST.
- CF_GDIOBJFIRST = 768; //应用程序定义的GDI对象剪贴板格式的整数值范围的开始。范围的末尾是CF_gdiobjast。清空剪贴板时,与此范围内的剪贴板格式关联的句柄不会使用GlobalFree函数自动删除。此外,当使用此范围内的值时,hMem参数不是GDI对象的句柄,而是由GlobalAlloc函数使用GMEM\u MOVEABLE标志分配的句柄。
- CF_GDIOBJLAST = 1023; //看 CF_GDIOBJFIRST
- { "GDIOBJ" formats do get DeleteObject()'d }
1.2 Delphi内默认提供的格式
- CF_COMPONENT //组件
2、Clipbrd常用方法描述:
- Assign //将给定对象分配到剪贴板。如果对象是一个TPicture或TGraphic,它将以相应的格式放置在剪贴板上(例如,TBitmap将作为CF_BITMAP放置在剪贴板上)。Picture.Assign(Clipboard) 和 Bitmap.Assign(Clipboard) 也支持分配检索剪贴板的内容。
- Clear //清除剪贴板中的内容。当剪贴板对象将数据添加到剪贴板时,会自动执行此操作。
- Close //-如果剪贴板处于打开状态,则将其关闭。打开和关闭保存剪贴板被打开的次数。在关闭剪贴板的次数与打开剪贴板的次数相同之前,它实际上不会关闭剪贴板。
- Open //打开剪贴板并防止所有其他应用程序更改剪贴板。如果只将一个项目添加到剪贴板,则无需进行此调用。如果需要向剪贴板添加多个格式,请调用Open。在添加所有格式之后。打给close。
- HasFormat //如果剪贴板上有给定格式,则返回true。
- GetAsHandle //以指定格式处理的原始窗口从剪贴板返回数据。句柄不属于应用程序,应该复制数据。
- SetAsHandle //将句柄以给定格式放置在剪贴板上。一旦一个句柄被赋予剪贴板,它就不应该被删除。它将被剪贴板删除。
- GetTextBuf //检索、取回数据
- AsText //允许从剪贴板放置和检索文本。如果CF_文本格式可用,则此属性对检索有效。
- FormatCount //格式数组中的格式数。
- Formats //剪贴簿上所有可用格式的列表
创建时间:2022.04.14 更新时间:2022.04.14
博客园 滔Roy https://www.cnblogs.com/guorongtao 希望内容对你有所帮助,谢谢!