大虾们救我,关于鼠标拖拉操作的问题,重金那!(200分)

  • 主题发起人 主题发起人 LeoWang
  • 开始时间 开始时间
L

LeoWang

Unregistered / Unconfirmed
GUEST, unregistred user!
我有三个listview,我要鼠标在第一个listview中拖拉出listitem,放到其他的两个<br>listview中,删除拖动的listitem,如何做,清说出具体的编码方法。<br>能有源程序最好!信箱w.xiaohai@263.net<br>还有windows中的鼠标拖拉操作到底是如何实现的,机制如何?请大虾们指点,那些<br>东东困扰我很久了!<br>谢谢了啊!
 
以前写了个“轻轻松松背单词词库维护程序“里面就用了3个ListView进行相互间子项的拖动操作,<br>待我回去找找看,摘段代码给你。
 
先说好,windows全局当中的拖放,和delphi程序内的拖放是不同的。
 
俺自己解决了,就是在ondragover事件中,将accept设置为true,同时在<br>ondragdrop中写增加和删除操作!<br>谢谢两位的解答!<br>但分数还是要给的,请大家给我讲讲拖放技术的其他方面,比如WINDOWS的拖放之类的<br>谢谢!
 
&nbsp;嘻嘻,我来说一下Windows的拖放吧,我是在网吧所以没有办法给源程序。<br>涉及到的Api主要是DragQueryFile,你自己去查一下帮助文档好了,相关的数据都会在<br>在这个函数里说明白的。
 
提问者:<br>如果你还要继续讨论请定期提前你的帖子,如果不想继续讨论请结束帖子。<br>请认真阅读大富翁论坛规则说明 &nbsp;http://www.delphibbs.com/delphibbs/rules.asp
 
还有beginDrag,EndDrag等等方法你可以考虑着用
 
文件拖动响应WM_DROPFILES消息!
 
代码:<br>procedure TForm1.ListBox1MouseDown(Sender: TObject; Button: TMouseButton;<br>&nbsp; Shift: TShiftState; X, Y: Integer);<br>begin<br>&nbsp; &nbsp; &nbsp;if Button = mbLeft then<br>&nbsp; &nbsp; &nbsp;begin<br>&nbsp; &nbsp; &nbsp; Listbox1.DragMode := dmManual;<br>&nbsp; &nbsp; &nbsp; Listbox1.BeginDrag(False,-1);<br>&nbsp; &nbsp; &nbsp;end;<br>end;<br><br>procedure TForm1.Label1DragDrop(Sender, Source: TObject; X, Y: Integer);<br>begin<br>&nbsp; if (Sender is TLabel) and (Source is TListBox) then<br>&nbsp; begin<br>&nbsp; &nbsp; with Sender as Tlabel do<br>&nbsp; &nbsp; begin<br>&nbsp; &nbsp; &nbsp; Font := (Source as Tlistbox).Font;<br>&nbsp; &nbsp; &nbsp; Color := (Source as TlistBox).Color;<br>&nbsp; &nbsp; &nbsp; Caption := (Source as TlistBox).Items[(Source as TlistBox).ItemIndex]<br>&nbsp; &nbsp; end;<br>&nbsp; end;<br>end;<br><br>procedure TForm1.Label1DragOver(Sender, Source: TObject; X, Y: Integer;<br>&nbsp; State: TDragState; var Accept: Boolean);<br>begin<br>&nbsp;Accept := Source is TLIstBox;<br>end;<br><br>procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;<br>&nbsp; State: TDragState; var Accept: Boolean);<br>begin<br>&nbsp;Accept := Source is TLIstBox;<br>end;<br><br>procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);<br>begin<br>&nbsp; With (Sender as TTreeView) do<br>&nbsp; begin<br>&nbsp; &nbsp; GetNodeAt(X,Y).Text := (Source as TListBox).Items[(Source as TlistBox).ItemIndex];<br>&nbsp; end;<br>end;<br><br>end.<br>
 
多人接受答案了。
 
后退
顶部