Q&A

  • [제발 도와주세요]계층을 어떻게 표현할지...?
어제에 이어 또 요청합니다..

좀 도와주세요.. 제 생사가 달려있어요..



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;

0  COMMENTS