如果连同子控件一起复制到剪切板 需要定义一个新类型 譬如在一个 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; |