unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls;type
TForm1 = class(TForm)
ListView1: TListView;
TreeView1: TTreeView;
procedure TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Accept := True;
end;procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
i:integer;
begin
if Source = ListView1 then
begin
for i := 0 to ListView1.Items.Count - 1 do
begin
if ListView1.Items[i].Selected then
begin
TreeView1.Items.AddChild(nil,ListView1.Items[i].Caption);//这句要怎么修改才能实现拖拉到任何结点.请代码告知.
end;
ListView1.Items[i].delete; //出错,要怎么修改实现拖拉ListView1中记录到TreeView1结点,ListView1中记录删除.
end;
end;
end;
end.
这是实现ListView1中记录(可多选)拖拉到TreeView1任何结点的功能.
同时还想实现,从TreeView1任何结点内容(可多选)拖拉到ListView1中,同样拖拉的内容要删除,谢谢.
请代码指导,我比较菜,文字指导我可能要试很久,麻烦代码指导下,谢谢.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls;type
TForm1 = class(TForm)
ListView1: TListView;
TreeView1: TTreeView;
procedure TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Accept := True;
end;procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
i:integer;
begin
if Source = ListView1 then
begin
for i := 0 to ListView1.Items.Count - 1 do
begin
if ListView1.Items[i].Selected then
begin
TreeView1.Items.AddChild(nil,ListView1.Items[i].Caption);//这句要怎么修改才能实现拖拉到任何结点.请代码告知.
end;
ListView1.Items[i].delete; //出错,要怎么修改实现拖拉ListView1中记录到TreeView1结点,ListView1中记录删除.
end;
end;
end;
end.
这是实现ListView1中记录(可多选)拖拉到TreeView1任何结点的功能.
同时还想实现,从TreeView1任何结点内容(可多选)拖拉到ListView1中,同样拖拉的内容要删除,谢谢.
请代码指导,我比较菜,文字指导我可能要试很久,麻烦代码指导下,谢谢.
procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
i:integer;
begin
if Source = ListView1 then
begin
for i := 0 to ListView1.Items.Count - 1 do
begin
if ListView1.Items[i].Selected then
begin
TreeView1.Items.AddChild(nil,ListView1.Items[i].Caption);//这句要怎么修改才能实现拖拉到任何结点.请代码告知.
ListView1.Items[i].delete;//放这试试
end;
end;
end;
end;
end.
下面的方法根据鼠标位置取得接点,拖拽事件中都有鼠标坐标参数
TreeView1.GetNodeAt(x,y)
ListView1.GetItemAt(x,y)
Shift: TShiftState; X, Y: Integer);
var
i:integer;
node: TTreeNode;
begin
node:= self.TreeView1.GetNodeAt(x,y);
if node <> nil then
begin
self.TreeView1.Items.AddFirst(nil,ListView1.Items[i].Caption);
end;
end;end.
这样好象也不行,麻烦帮看看
TreeView1.Items.AddChild(node,ListView1.Items[i].Caption);//添加子节点
兄弟,建议你先学习treeview的基本操作吧,你这么问,什么时候是个头呀
Shift: TShiftState; X, Y: Integer);
var
i:integer;
node: TTreeNode;
begin
node:= self.TreeView1.GetNodeAt(x,y);
if node <> nil then
begin
TreeView1.Items.AddChild(node,ListView1.Items[i].Caption);//添加子节点
end;
end; 这样写还是不能拖拉到指定的位置,首先我只要点TreeView1中一项就弹错
然后也不能在指定位置添加内容,
大哥,既然这样你就一次帮忙到底,写出你的方法给我看看,不然我猛问你也觉得到不了头
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls;type
TForm1 = class(TForm)
tv1: TTreeView;
tv2: TTreeView;
lv1: TListView;
procedure tv1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure tv1DragDrop(Sender, Source: TObject; X, Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.tv1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Accept := True;
end;procedure TForm1.tv1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
i:Integer;
list:TListItem;
Node: TTreeNode;
begin
if Source is TTreeView then begin
for i:=0 to TTreeView(Source).Items.Count-1 do begin
if TTreeView(Source).Items[i].Selected then begin
list:=TListView(Sender).Items.Add;
list.Caption:=TTreeView(Source).Items[i].Text;
end;
end;
TTreeView(Source).Selected.Delete;
end; if Source is TListView then begin
node:=TTreeView(Sender).GetNodeAt(x,y);
for i:=0 to TListView(Source).Items.Count-1 do begin
if TListView(Source).Items[i].Selected then
TTreeView(Sender).Items.AddChild(node,TListView(Source).Items[i].Caption)
end;
TListView(Source).DeleteSelected;
end;
end;end.
2.ListView以上两个事件指向TreeView控件.
我是基础太差,所以问的问题都有点低级
谢谢,以后会努力的