源程序下载地址: http://hanbin.533.net/delphi/delphi.rar在这个程序中Panel2 直接拖拽到 Panel1自动平铺形成一个关闭的x按钮,有没有办法按ok键直接让Panel2铺平到Panel1中形成x按钮呢? 不能拖拽Panel2哦,谢谢我在线等啊

解决方案 »

  1.   

    程序描述
    建立一个delphi工程 添加Panel1、Panel2和一个Button1按钮
    设置 Panel1的DockSite为False
    设置 Panel2的DragKind为dkDock
    设置 Panel2的DragMode为dmAutomatic
    在这个程序中Panel2 直接拖拽到 Panel1自动平铺形成一个关闭的x按钮,有没有办法按Button1键直接让Panel2铺平到Panel1中形成x按钮呢? 不能拖拽Panel2哦,谢谢我在线等啊
      

  2.   

    晕更改错误 把Panel1的DockSite为False 改为 Panel1的DockSite为True程序描述
    建立一个delphi工程 添加Panel1、Panel2和一个Button1按钮
    设置 Panel1的DockSite为True
    设置 Panel2的DragKind为dkDock
    设置 Panel2的DragMode为dmAutomatic
    在这个程序中Panel2 直接拖拽到 Panel1自动平铺形成一个关闭的x按钮,有没有办法按Button1键直接让Panel2铺平到Panel1中形成x按钮呢? 不能拖拽Panel2哦,谢谢我在线等啊
      

  3.   

    你发送到[email protected]的邮件由于以下原因被退回:
    SMTP error, RCPT TO: 550 mailbox of [email protected] is full (#5.5.4) 晕 你的邮箱是不是有问题啊
      

  4.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      SetCursorPos(self.Left+Panel1.Left+55,self.Top+ Panel1.Top+55);
      panel2.BeginDrag(true);
      Panel2.EndDrag(true);
    end;这样写可以实现,只是还需要研究一下为什么 self.Left+Panel1.Left 的值和鼠标在同一位置的值有个差值。也就是说,取鼠标的位置和用delphi中的的属性值算出来的位置不一样。取鼠标位置可以这样做:
    procedure TForm1.Button2Click(Sender: TObject);
    var
      pt: TPoint;
    begin
      GetCursorPos(pt);
      ShowMessage(inttostr(pt.x)+';'+inttostr(pt.y));
    //pt.x:横坐标
    //pt.y:纵坐标 
    end;这样应该算数了吧,快给分哦