熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Delphi編程 >> 正文

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

2022-06-13   來源: Delphi編程 

  如果連同子控件一起復制到剪切板 需要定義一個新類型

  譬如在一個 TPanel 中包含一個 TEdit 在復制 TPanel 時 若要連同 TEdit 一起復制 需要重新從 TPanel 中繼承出一個類來(譬如是 TMyPanel) 把 TEdit 包含在新的類中

  運行效果圖

  

  TMyPanel 類的單元

  unit MyPanel;

  interface

  uses Classes StdCtrls ExtCtrls;

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

  implementation

  { TMyPanel }

  constructor TMyPanelCreate(AOwner: TComponent);
begin
 inherited;
 Edit := TEditCreate(Self);
 EditParent := Self;
 EditLeft := ;
 EditTop := ;
 RegisterClasses([TMyPanel]); {在這裡就給注冊了}
end;

  測試單元

  unit Unit;

  interface

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

  type
 TForm = class(TForm)
  Button: TButton;
  Button: TButton;
  procedure FormCreate(Sender: TObject);
  procedure ButtonClick(Sender: TObject);
  procedure ButtonClick(Sender: TObject);
 end;

  var
 Form: TForm;

  implementation

  {$R *dfm}

  uses Clipbrd MyPanel;

  var
 obj: TComponent;
 pnl: TMyPanel;

  procedure TFormFormCreate(Sender: TObject);
begin
 pnl := TMyPanelCreate(Self);
 pnlParent := Self;
 pnlEditText := 一起被復制;

  ButtonCaption := 復制;
 ButtonCaption := 粘貼;
end;

  procedure TFormButtonClick(Sender: TObject);
begin
 ClipboardSetComponent(pnl);
end;

  procedure TFormButtonClick(Sender: TObject);
begin
 if ClipboardHasFormat(CF_COMPONENT) then
 begin
  obj := ClipboardGetComponent(Self Self);
  TMypanel(obj)Left := ;
  TMypanel(obj)Top := ;
 end;
end;


From:http://tw.wingwit.com/Article/program/Delphi/201311/8411.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.