어제에 이어 또 요청합니다..
좀 도와주세요.. 제 생사가 달려있어요..
ListView2에서 treeview1로 드래그&드롭 했을때
결과는
┼─A01 공구
│ └ A01A10 *****
│ └ A01A1010 ******
┟─B01 &&
│ └ B01A10 &&&&
│ └B01A1010 &&&&&
이런식이어야 하는데..
아래 코딩의 결과는
┼─A01 공구
│ └ A01A10 *****
│ └ A01A1010 ******
│ └ B01A1010 &&&&&
┟─B01 &&
│ └ B01A10 &&&&
│ └ B01A1010 &&&&&
이런 식으로 나오거든요..
왜 근런지.. 모르겠어요..
procedure Tces002pf.TreeView1DragDrop(Sender, Source: TObject; X,
Y: Integer);
var
TargetNode, SourceNode :TTreeNode;
SelectedItem : TListItem;
Str, techcd, jobareacd: String;
i, k: integer;
begin
inherited;
// Treeview1.Items.Clear;
SelectedItem := nil;
TargetNode := nil;
TargetNode := Treeview1.GetNodeAt(X, Y);
case TargetNode.Level of
0: begin
techcd := Copy(TargetNode.Text,1,1);
jobareacd := Copy(TargetNode.Text,2,2);
end;
1: begin
techcd := Copy(TargetNode.Parent.Text,1,1);
jobareacd := Copy(TargetNode.Parent.Text,2,2);
end;
2: begin
techcd := Copy(TargetNode.Parent.Parent.Text,1,1);
jobareacd := Copy(TargetNode.Parent.Parent.Text,2,2);
end;
end;
SelectedItem := ListView2.Selected;
i := 0;
k := 0;
if (TargetNode <> nil) then
begin
for i := 0 to (ListView2.SelCount-1) do
begin
if s = copy(SelectedItem.Caption, 1,3) then
begin
targetNode := nil;
TargetNode := Treeview1.GetNodeAt(X, Y);
TargetNode := Treeview1.Items.Item[0];
Inc(k);
Str := Techcd+Jobareacd+SelectedItem.Caption+' '+SelectedItem.SubItems[0];
TreeView1.Items.AddChild(TargetNode, str);
JobTypeQ.Append;
JobTypeQ.FieldValues['Pjtcd'] := GPjtcd;
JobTypeQ.FieldValues['Techcd'] := TechQ.FieldValues['Techcd'];
JobTypeQ.FieldValues['Jobareacd'] := TechQ.FieldValues['Jobareacd'];
JobTypeQ.FieldValues['JobTypecd'] := SelectedItem.Caption;
JobTypeQ.FieldValues['JobTPnm'] := SelectedItem.SubItems[0];
JobTypeQ.FieldValues['Dongcnt'] := TechQ.FieldValues['Dongcnt'];
JobTypeQ.FieldValues['prtseq'] := Count2;
JobTypeQ.FieldValues['Prtgrp'] := TechQ.FieldValues['prtgrp'];
JobTypeQ.FieldByName('Ajobtpcd').AsString := '';
JobTypeQ.FieldByname('SumFlag').AsInteger := 0;
JobTypeQ.Post;
Count2 := Count2+1;
S := copy(SelectedItem.Caption, 1,3);
end
else begin
targetNode := nil;
TargetNode := Treeview1.GetNodeAt(X, Y);
s := SelectedItem.Caption;
with JobCodeQ do
begin
close;
sql.clear;
sql.Add('select * ');
Sql.Add('from ces002ct ');
Sql.Add('Where Jobtypecd = '''+s+''' ');
Open;
end;
s := copy(SelectedItem.Caption, 1,3);
Treeview1.Items.AddChildObject(TargetNode, Techcd+jobareacd+s+' '+JobCodeQ.FieldValues['Jobtpnm'],SourceNode);
TargetNode := Treeview1.Items.Item[k];
inc(k);
Str := Techcd+Jobareacd+SelectedItem.Caption+' '+SelectedItem.SubItems[0];
TreeView1.Items.AddChild(TargetNode, str);
JobTypeQ.Append;
JobTypeQ.FieldValues['Pjtcd'] := GPjtcd;
JobTypeQ.FieldValues['Techcd'] := TechQ.FieldValues['Techcd'];
JobTypeQ.FieldValues['Jobareacd'] := TechQ.FieldValues['Jobareacd'];
JobTypeQ.FieldValues['JobTypecd'] := copy(SelectedItem.Caption, 1,3);
JobTypeQ.FieldValues['JobTPnm'] := jobCodeQ.FieldValues['Jobtpnm'];
JobTypeQ.FieldValues['Dongcnt'] := TechQ.FieldValues['Dongcnt'];
JobTypeQ.FieldValues['prtseq'] := Count2;
JobTypeQ.FieldValues['Prtgrp'] := TechQ.FieldValues['prtgrp'];
JobTypeQ.FieldByName('Ajobtpcd').AsString := '';
JobTypeQ.FieldByname('SumFlag').AsInteger := 0;
JobTypeQ.Post;
Count2 := Count2+1;
JobTypeQ.Append;
JobTypeQ.FieldValues['Pjtcd'] := GPjtcd;
JobTypeQ.FieldValues['Techcd'] := TechQ.FieldValues['Techcd'];
JobTypeQ.FieldValues['Jobareacd'] := TechQ.FieldValues['Jobareacd'];
JobTypeQ.FieldValues['JobTypecd'] := SelectedItem.Caption;
JobTypeQ.FieldValues['JobTPnm'] := SelectedItem.SubItems[0];
JobTypeQ.FieldValues['Dongcnt'] := TechQ.FieldValues['Dongcnt'];
JobTypeQ.FieldValues['prtseq'] := Count2;
JobTypeQ.FieldValues['Prtgrp'] := TechQ.FieldValues['prtgrp'];
JobTypeQ.FieldByName('Ajobtpcd').AsString := '';
JobTypeQ.FieldByname('SumFlag').AsInteger := 0;
JobTypeQ.Post;
Count2 := Count2+1;
S := copy(SelectedItem.Caption, 1,3);
end;
if Listview2.SelCount = 1 then
SelectedItem := Nil
else
SelectedItem := (Source as TListView).GetNextItem(SelectedItem, sdBelow, [isSelected]);
end;
end;
end;