现在的想法:
1、主窗体做窗口,窗体中的图标列表都为FORM,可以实现360桌面的效果.但是拖出主窗体时,需要把图标窗体的PARENT换成nil,这时,拖动就失效了.无法衔接拖动动作。
2、主窗体做窗口,窗体中为图标,拖动时,用一窗体模拟原图标拖动,但是也是拖动事件无法从图标衔接到图标窗体上去。使用DOCK倒是可以拖出,但是我无法实现360桌面的效果。有没有好的思路能接点一下,谢谢。

解决方案 »

  1.   

    FORM拖出父窗体时,如果PARENT变化的话,拖动就失效了.如何才能在父窗体改变的情况下,拖动仍然有效?
      

  2.   

    暂时找了一个办法凑和.
    主窗体里内嵌多个只显示一个图标的无边框窗体,当点击图标窗体后,切换父窗体为nil,可以拖出主窗体.除了有时会闪一下,勉强满足要求.
    procedure TForm3.Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
    if  Button=mbLeft then
    begin
      if Form3.Parent=form1 then
      begin
      Form3.Parent:=nil;
      Form3.Left:=Form1.Left+form3.left;
      Form3.top:=Form1.top+form3.top;
      Form3.Refresh;
      end;
      ReleaseCapture;
      SendMessage(Handle, WM_SYSCOMMAND, $F012, 0);end;
    end;坐等高人更好的方法.