使用剪切板[4]: 如果把子控件一起复制? - 同时回复 ghd2004 的问题
使用剪切板[4]: 如果把子控件一起复制? - 同时回复 ghd2004 的问题
涂孟超 发表于3年前
使用剪切板[4]: 如果把子控件一起复制? - 同时回复 ghd2004 的问题
  • 发表于 3年前
  • 阅读 2
  • 收藏 0
  • 点赞 0
  • 评论 0

标题:腾讯云 新注册用户域名抢购1元起>>>   

如果连同子控件一起复制到剪切板, 需要定义一个新类型.

譬如在一个 TPanel 中包含一个 TEdit; 在复制 TPanel 时, 若要连同 TEdit 一起复制, 需要重新从 TPanel 中继承出一个类来(譬如是 TMyPanel), 把 TEdit 包含在新的类中.

运行效果图:



TMyPanel 类的单元:
unit MyPanel;

interface

uses Classes, StdCtrls, ExtCtrls;

type
  TMyPanel = class(TPanel)
    Edit1: TEdit; 
    constructor Create(AOwner: TComponent); override;
  end;

implementation

{ TMyPanel }

constructor TMyPanel.Create(AOwner: TComponent);
begin
  inherited;
  Edit1 := TEdit.Create(Self);
  Edit1.Parent := Self;
  Edit1.Left := 10;
  Edit1.Top := 10;
  RegisterClasses([TMyPanel]); {在这里就给注册了}
end;

end.

 
 
 
 
 

 

 

  
测试单元:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses Clipbrd, MyPanel;

var
  obj: TComponent;
  pnl: TMyPanel;

procedure TForm1.FormCreate(Sender: TObject);
begin
  pnl := TMyPanel.Create(Self);
  pnl.Parent := Self;
  pnl.Edit1.Text := '一起被复制';

  Button1.Caption := '复制';
  Button2.Caption := '粘贴';
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Clipboard.SetComponent(pnl);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  if Clipboard.HasFormat(CF_COMPONENT) then
  begin
    obj := Clipboard.GetComponent(Self, Self);
    TMypanel(obj).Left := 20;
    TMypanel(obj).Top := 60;
  end;
end;

end.

 
 
 
 
 

 

 

  
共有 人打赏支持
粉丝 12
博文 2004
码字总数 14107
×
涂孟超
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: