您现在的位置是:首页 >

剪切板是哪个区域的 使用剪切板[3]:SetComponent、GetComponent

火烧 2022-11-24 04:22:08 1041
使用剪切板[3]:SetCom o e t、GetCom o e t   本例演示把一个组件 TEdit 放入剪切板 又取出 放到一个 TPa el 上 的过程   放入剪切板的方法是个过程: Set

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

  本例演示把一个组件(TEdit)放入剪切板 又取出(放到一个 TPanel 上)的过程

  放入剪切板的方法是个过程: SetComponent(要放入的组件);

  取出的方法是个函数: GetComponent(指定属主 指定父窗口): 函数返回取出的组件的句柄

  取出以前 最好要判断一下当前剪切板中是不是个组件: HasFormat(CF_PONENT);

  取出以前还必须要注册要取出的组件类 譬如: RegisterClasses([TEdit]);

  准备工作: 在窗体上添加 TEdit TPanel 和三个按钮

  本例效果图:

   =224>

  unit Unit ;

  interface

  uses Windows  Messages  SysUtils  Variants  Classes  Graphics  Controls  Forms  Dialogs  StdCtrls  ExtCtrls;

  type TForm  = class(TForm)  Button : TButton;  Button : TButton;  Button : TButton;  Edit : TEdit;  Panel : TPanel;  procedure Button Click(Sender: TObject);  procedure Button Click(Sender: TObject);  procedure Button Click(Sender: TObject); end;

  var Form : TForm ;

  implementation

  {$R * dfm}

  uses Clipbrd;

  var obj: TComponent; {用于接受 GetComponent 的返回值}

  procedure TForm Button Click(Sender: TObject);begin Clipboard SetComponent(Edit ); TButton(Sender) Caption :=  复制 ;end;

  procedure TForm Button Click(Sender: TObject);begin RegisterClasses([TEdit]); if Clipboard HasFormat(CF_PONENT) then  obj := Clipboard GetComponent(nil  Panel ); TButton(Sender) Caption :=  粘贴 ;end;

  procedure TForm Button Click(Sender: TObject);begin if Assigned(obj) then obj Free; TButton(Sender) Caption :=  删除 ;end;

  一般情况下 应该把 RegisterClasses() 过程提前放置(起码可以避免反复执行) 譬如在 Form OnCreate 事件中

  大家好像都习惯再提前到 initialization 程序修改如下 unit Unit ;

  interface

  uses Windows  Messages  SysUtils  Variants  Classes  Graphics  Controls  Forms  Dialogs  StdCtrls  ExtCtrls;

  type TForm  = class(TForm)  Button : TButton;  Button : TButton;  Button : TButton;  Edit : TEdit;  Panel : TPanel;  procedure Button Click(Sender: TObject);  procedure Button Click(Sender: TObject);  procedure Button Click(Sender: TObject); end;

  var Form : TForm ;

剪切板是哪个区域的 使用剪切板[3]:SetComponent、GetComponent

  implementation

  {$R * dfm}

  uses Clipbrd;

  var obj: TComponent;

  procedure TForm Button Click(Sender: TObject);begin Clipboard SetComponent(Edit ); TButton(Sender) Caption :=  复制 ;end;

  procedure TForm Button Click(Sender: TObject);begin if Clipboard HasFormat(CF_PONENT) then  obj := Clipboard GetComponent(nil  Panel ); TButton(Sender) Caption :=  粘贴 ;end;

  procedure TForm Button Click(Sender: TObject);begin if Assigned(obj) then obj Free; TButton(Sender) Caption :=  删除 ;end;

  initialization RegisterClasses([TEdit]);

  end     另外 关于剪切板中格式的问题还没有详谈 这里有来了一个 CF_PONENT

  Windows 系统已经定义了十几种剪切板的格式常数 譬如 CF_BITMAP CF_TEXT 等等

lishixinzhi/Article/program/Delphi/201311/8415  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码