천재들
--아인슈타인
--비트겐슈타인
--홍길동
위에서 treeview의 '천재들'이란 노드를 listview에 드래그앤드롭하면
하위노드인 '아인슈타인'과 '비트겐슈타인' 그리고 '홍길동' 모두가
listview에 들어갈 수 있도록 하고 싶은데 아래처럼 코딩했더니 선택된
노드 하나만 달랑 들어가는군요. 어떻게 해야 할까요?
고수님들의 애정어린 설명 부탁드립니다.
procedure TfrmChat.ListView1DragDrop(Sender, Source: TObject; X,
Y: Integer);
var
i: Integer;
begin
for i := 0 to Treeview1.Items.Count-1 do
if Treeview1.Items[i].Selected then
with Listview1.Items.Add do
begin
Caption := Treeview1.Items[i].Text;
SubItems.add(table1.fieldbyname('ip').asstring);
SubItems.add(table1.fieldbyname('position').asstring);
end;
end;
procedure TfrmChat.ListView1DragDrop(Sender, Source: TObject; X,
Y: Integer);
var
i: Integer;
UserList : TStringList;
begin
UserList:=Tstringlist.Create;
UserList.clear;
UserList.text:=UserLists(TreeView_group.Selected,'');
for i := 0 to UserList.Count-1 do
if Treeview1.Items[i].Selected then
with Listview1.Items.Add do
begin
Caption := UserList.Strings[i];
SubItems.add(table1.fieldbyname('ip').asstring); ->적당히 알아서..
SubItems.add(table1.fieldbyname('position').asstring); ->적당히 알아서..
end;
UserList.Free;
end;
Function TForm1.UserLists(Seltreelist :TTreeNode;ListStr:String):String;
var i : integer;
ListS : string;
begin
ListS:=ListStr;
if Seltreelist.Count > 0 then
begin
for i:=0 to Seltreelist.Count-1 do
begin
if Seltreelist.Item[i].HasChildren then
Lists:=UserLists(Seltreelist.Item[i],ListS)
else
ListS:=ListS+Seltreelist.Item[i].Text+#13+#10;
end
end
else
ListS:=TreeView1.Selected.Text;
result:=ListS;
end;