电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

使用剪切板[4]:如果把子控件一起复制?


发布日期:2018/8/17
 

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

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

运行效果图

TMyPanel 类的单元

unitMyPanel;

interface

usesClassesStdCtrlsExtCtrls;

type

TMyPanel=class(TPanel)

Edit:TEdit;

constructorCreate(AOwner:TComponent);override;

end;

implementation

{TMyPanel}

constructorTMyPanelCreate(AOwner:TComponent);

begin

inherited;

Edit:=TEditCreate(Self);

EditParent:=Self;

EditLeft:=;

EditTop:=;

RegisterClasses([TMyPanel]);{在这里就给注册了}

end;

测试单元

unitUnit;

interface

uses

WindowsMessagesSysUtilsVariantsClassesGraphicsControlsForms

DialogsStdCtrls;

type

TForm=class(TForm)

Button:TButton;

Button:TButton;

procedureFormCreate(Sender:TObject);

procedureButtonClick(Sender:TObject);

procedureButtonClick(Sender:TObject);

end;

var

Form:TForm;

implementation

{$R*dfm}

usesClipbrdMyPanel;

var

obj:TComponent;

pnl:TMyPanel;

procedureTFormFormCreate(Sender:TObject);

begin

pnl:=TMyPanelCreate(Self);

pnlParent:=Self;

pnlEditText:=一起被复制;

ButtonCaption:=复制;

ButtonCaption:=粘贴;

end;

procedureTFormButtonClick(Sender:TObject);

begin

ClipboardSetComponent(pnl);

end;

procedureTFormButtonClick(Sender:TObject);

begin

ifClipboardHasFormat(CF_COMPONENT)then

begin

obj:=ClipboardGetComponent(SelfSelf);

TMypanel(obj)Left:=;

TMypanel(obj)Top:=;

end;

end;

上一篇:利用浏览器实现程序界面与实现的分离

下一篇:从入门到精通:MSAgent经典用法