怎样把一个控件从一个TPanel里拖到另一个TPanel里

解决方案 »

  1.   

    设计期: ctrl+c, ctrl+v
    运行期: panel2.parent := panel1
      

  2.   

    运行中拖拽,把一个控件从一个TPanel里拖到另一个TPanel里,直接改变parent,那是跳
      

  3.   

    在Object Tree View中直接拖,
    或者用Ctrl+X, 再在目标 Panel上面用 Ctrl+Vonly for design time, if run timeControl1.parent := panel1;
      

  4.   

    unit Unit1;interface
    刚写的DEMO,不知是你的意思吗
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ExtCtrls;type
      TForm1 = class(TForm)
        Panel1: TPanel;
        Panel2: TPanel;
        Button1: TButton;
        procedure Button1MouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        procedure Panel2DragOver(Sender, Source: TObject; X, Y: Integer;
          State: TDragState; var Accept: Boolean);
        procedure Panel2DragDrop(Sender, Source: TObject; X, Y: Integer);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure ControlBeginDrag(Sender:TObject);
    begin
       TControl(Sender).BeginDrag(false,6);
    end;procedure ControlDragDrop(Sender,Source:TObject);
    begin
    TControl(Source).Parent:=TWinControl(Sender);
    end;procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
        ControlBeginDrag(Sender);
    end;procedure TForm1.Panel2DragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    begin
       Accept:=true;
    end;procedure TForm1.Panel2DragDrop(Sender, Source: TObject; X, Y: Integer);
    begin
       ControlDragDrop(Sender,Source);
    end;end.