如何实现listview的拖动功能?
我想做一个类似于windows 浏览器的东西。要实现像浏览器里拖动文件的功能(从一个目录考贝到另一个目录,是在同一个listview)。
但我发现那个listview ondragover事件里有两个参数“Sender, Source: TObject”。
看它参数好像实现的是在两个控件这间的。
但要实现像我这样在一个控件的功能要怎么做呢?请高手多多关注,谢谢。
问题点数:100、回复次数:6Top
1 楼lixif(今生再添一业)回复于 2002-03-04 17:52:29 得分 0
你到www.netgocn.com去下载软件看看,那个软件所做的效果是否就是你想要的(它是100%的Delphi写成)?如果是的话,可以给我来信,我能来这里的时间不多。Top
2 楼eagleldj(亚洲飞鹰)回复于 2002-03-06 12:38:22 得分 100
在FORM1上放一个ListView1,建立几个Items,一个ImageList1,ImageList1里面放几个图标~~
设置ListView1.LargeImages :=ImageList1;
procedure TForm1.ListView1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
accept:=Source is TlistView;
end;
procedure TForm1.ListView1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
PosPoint:TPoint;
begin
PosPoint.x:=X-16;
PosPoint.y:=Y-16;
(Source As TListView).Selected.SetPosition(PosPoint);
end;
procedure TForm1.ListView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if button=mbleft then
begin
with sender as TListview do
begin
if GetItemAt(x,y)<>nil then
begindrag(false);
end;
end;
end;
可以拖动一个Item。
至于多个Item的拖动我也还在识。
Top
3 楼eagleldj(亚洲飞鹰)回复于 2002-03-06 13:00:56 得分 0
哈哈,搞定
sx,sy: integer;
procedure TForm1.ListView1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
accept:=Source is TlistView;
end;
procedure TForm1.ListView1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
i:integer;
PosPoint:Tpoint;
begin
sx:=sx-x;
sy:=sy-Y;
with sender as TListview do
for i:=0 to Items.Count-1 do
if Items[i].Selected then
begin
PosPoint.x:=Items[i].Left - sx;
PosPoint.y:=Items[i].Top - sy;
Items[i].SetPosition(PosPoint);
end;
Refresh;
end;
procedure TForm1.ListView1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if button=mbleft then
with sender as TListview do
if GetItemAt(x,y)<>nil then begindrag(false);
sx:=x; sy:=y;
end;Top
4 楼awaitpram(期待)回复于 2002-03-08 17:07:23 得分 0
真的非常非常感谢你。
虽然你没有直接的解决了我的问题(可能是你还没有理解清楚我的意图吧),我要的是类似把文件考进目录用拖动来完成的。而你给我的代码是关于如何把一个文件放到其它地方去。
不过在你的代码给了我很大的启示。使我能顺利的完成任务。你要是想我的代码的话可以给我mail。我的mail:awaitlq@163.net,希望我们能够经常交流一起成长。再次感谢你。Top
5 楼awaitpram(期待)回复于 2002-03-08 17:15:56 得分 0
100分全部给你:)Top
6 楼lixif(今生再添一业)回复于 2002-03-09 21:57:12 得分 0
可惜!Top
相关问题
- 如何在listview中实现拖动,各位大虾救命
- 请问如何实现ShellListView 和ListView之间的拖动效果?
- 请问如何实现一个图形的拖动功能
- ListView条目拖动
- 如何在ListView中实现拖动?并且如何保存它们的位置?
- 一百五十分!!!从DBGrid拖动项目到ListView/TreeView,能否实现?
- 如何实现从LISTVIEW中一次拖动多个ITEM到TREEVIEW中来???(内空)
- 关于listview控件内实现多个选项(图标)拖动的问题?
- 关于listview控件内实现多个选项(图标)拖动的问题?
- 如何实现ViewStyle为vsReport的ListView鼠标拖动改变行排列顺序




