• 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

  • 相关阅读:
    20.logging模块
    21.django中间件源码阅读
    18.configparser模块
    15.DRF学习以及相关源码阅读
    19.tcp_upd
    13.关于继承封装,以及反射
    16.html转pdf的一个小示例
    14.django返回展示一张图片
    GridView列标题修改
    ~为服务器端根目录符
  • 原文地址:https://www.cnblogs.com/guorongtao/p/16143435.html
Copyright © 2020-2023  润新知