例如,有一棵树,点击树节点后,某文本框有内容,如何拖动该树节点到某应用程序(例如,word,notepad等)时候,文本自动就过去了。
当然,如果选中文本,复制,粘贴,也可以实现,不过不如拖放那么方便。
哪位大侠能指点一下,感谢~~~~

解决方案 »

  1.   

    需要写个IDropSource类来实现OLE接口,确实需要点时间
      

  2.   

    参考
    http://community.csdn.net/Expert/topic/5383/5383877.xml?temp=.9527246
      

  3.   

    以下演示, “拖”往记事本测试成功。Word不成功。var
      H : HWND;
      S : string = 'abcdefghijklmn';//用这个字串代替你说的Text试验procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      H := WindowFromPoint(Mouse.CursorPos);
      if H <> 0 then
        if (GetKeyState(VK_LButton) and $8000) <> $8000 then
           //如果松开左键
           begin
           //这里WM_SetText发送的是S, 换成节点指向的Text应该也简单
           //并且这里应该判断鼠标指向的控件的类型, 这个你自己研究吧
           SendMessage(H, WM_SetText, 0, integer(PChar(S)));
           Timer1.Enabled := False;
           end;
    end;procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      //如果在TreeView上按下左键并拖动
      if Button = mbLeft then Timer1.Enabled := True;
    end;procedure TForm1.TreeView1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      Timer1.Enabled := False;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      Timer1.Interval := 100;
      Timer1.Enabled := False;
    end;