Q&A

  • <질문> 트리뷰에서 리스트박스로의 ADD 하는 방법이요. 길지만 봐 주세요.
아래와 같은 db 가 있습니다.



code |desc1 | desc2 | desc3

___________________________________________________

10000할인점

10100할인점 KAM SU

10101할인점 KAM SU 할인점 1팀

10102할인점 KAM SU 할인점 2팀

10103할인점 KAM SU 할인점 3팀

10104할인점 KAM SU 할인점 4팀

10105할인점 KAM SU 농협팀

10106할인점 KAM SU 경원팀

10107할인점 KAM SU 충청팀

10108할인점 KAM SU 호남팀

10109할인점 KAM SU 경북팀

10110할인점 KAM SU 경남팀

10200할인점 서울 SU

10201할인점 서울 SU 특판팀

10202할인점 서울 SU 백화점1팀

10300할인점 경원 SU

10301할인점 경원 SU 인천특판팀

10302할인점 경원 SU 수원지점

10400할인점 서부 SU

10403할인점 서부 SU 광주특판팀

10405할인점 서부 SU 순천지점

20000백화점

20100백화점 서울 SU

20101백화점 서울 SU 백화점1팀

20102백화점 서울 SU 백화점2팀

20200백화점 경원 SU

20201백화점 경원 SU 인천특판팀

20202백화점 경원 SU 안양지점

20300백화점 서부 SU

20301백화점 서부 SU 대전지점

20302백화점 서부 SU 광주특판팀

20303백화점 서부 SU 전주지점

20304백화점 서부 SU 순천지점

20400백화점 동부 SU

20401백화점 동부 SU 대구특판1팀

20402백화점 동부 SU 대구지점

20403백화점 동부 SU 포항지점

20404백화점 동부 SU 부산특판1팀

20405백화점 동부 SU 마산지점

20406백화점 동부 SU 울산지점

30000유통

30100유통 서울 SU

30101유통 서울 SU 유통1팀

30102유통 서울 SU 유통2팀

30200유통 경원 SU

30201유통 경원 SU 안양지점

30202유통 경원 SU 원주지점

30203유통 경원 SU 강릉지점

30300유통 서부 SU

30301유통 서부 SU 대전지점

30302유통 서부 SU 청주지점

30303유통 서부 SU 천안지점

30304유통 서부 SU 광주특판팀

30400유통 동부 SU

30401유통 동부 SU 포항지점

30402유통 동부 SU 부산특판1팀

30403유통 동부 SU 부산특판2팀

30404유통 동부 SU 마산지점

30405유통 동부 SU 진주지점

30406유통 동부 SU 울산지점

40000단위수퍼

40100단위수퍼 서울 SU

40101단위수퍼 서울 SU 강북수퍼

40102단위수퍼 서울 SU 동부수퍼

40103단위수퍼 서울 SU 강남수퍼

40200단위수퍼 경원 SU

40201단위수퍼 경원 SU 인천특판팀

40202단위수퍼 경원 SU 수원지점

40203단위수퍼 경원 SU 안양지점

40204단위수퍼 경원 SU 원주지점

40205단위수퍼 경원 SU 강릉지점

40300단위수퍼 서부 SU

40301단위수퍼 서부 SU 대전지점

40302단위수퍼 서부 SU 청주지점

40303단위수퍼 서부 SU 천안지점

40304단위수퍼 서부 SU 광주특판팀

40305단위수퍼 서부 SU 전주지점

40306단위수퍼 서부 SU 순천지점

40400단위수퍼 동부 SU

40401단위수퍼 동부 SU 대구특판2팀

40402단위수퍼 동부 SU 대구지점

40403단위수퍼 동부 SU 안동지점

40404단위수퍼 동부 SU 포항지점

40405단위수퍼 동부 SU 부산특판1팀

40406단위수퍼 동부 SU 마산지점

40407단위수퍼 동부 SU 진주지점

40408단위수퍼 동부 SU 울산지점

40409단위수퍼 동부 SU 제주지점

10303할인점 경원 SU 안양지점

10304할인점 경원 SU 원주지점

10401할인점 서부 SU 대전지점

10402할인점 서부 SU 천안지점

10404할인점 서부 SU 전주지점

10500할인점 동부 SU

10501할인점 동부 SU 대구특판1팀

10502할인점 동부 SU 포항지점

10503할인점 동부 SU 부산특판1팀

10504할인점 동부 SU 부산특판2팀

10505할인점 동부 SU 진주지점

10506할인점 동부 SU 울산지점

10507할인점 동부 SU 제주지점

40410단위수퍼 동부 SU 부산특판2팀



________________________________________________________________

해서, 아래와 같은 식으로 treeview에 각 노드를 추가하였습니다.





Treeview1.Items.Clear;

str := 'TOT.KOREA';

parent1 := Treeview1.Items.add(nil, str);



////////////////////// second code start /////////////////////////////

with dm.query1 do begin

Close;

Sql.Clear;

Sql.Add(' select distinct desc1 from market');

open;

if recordcount > 0 then begin

first;

While not EOF do begin

first_cd := FieldByName('desc1').AsString;

child1 := Treeview1.Items.Addchild(parent1, first_cd);



////////////////////// third code start /////////////////////////////

with dm.query2 do begin

Close;

Sql.Clear;

Sql.Add(' select distinct desc2 from market');

Sql.Add(' where desc1 = '''+first_cd+''' and desc2 is not null ');

open;

if recordcount > 0 then begin

first;



While not EOF do begin

second_cd := FieldByName('desc2').AsString;

child2 := Treeview1.Items.AddChild(child1, second_cd);



////////////////////// fourth code start /////////////////////////////

with dm.query3 do begin

Close;

Sql.Clear;

Sql.Add(' select distinct desc3 from market');

Sql.Add(' where desc1 = '''+first_cd+''' and desc2 = '''+second_cd+''' and desc3 is not null ');

open;

if recordcount > 0 then begin

first;



While not EOF do begin

third_cd := FieldByName('desc3').AsString;

child3 := Treeview1.Items.AddChild(child2, third_cd);

/////////////////////////////////////////////////////////////////////

next;

end;

end;

end;

///////////////////// fourth code end ///////////////////////////////



next;

end;

end;

end;

///////////////////// third code end ///////////////////////////////



next;

end;

end;

end;

///////////////////// second code end ///////////////////////////////

TREEVIEW1.FULLEXPAND;

_____________________________________________________________________________

위와 같이 해서, db의 자료를 treeview에 추가하였는데,

treeview의 각 노드 클릭 이벤트에서

노드를 클릭하면, ListBox에 추가하려고 하는데요....

procedure TForm2.TreeView1Click(Sender: TObject);

VAR

sql_str, tempstr : string;

Appnode, tempnode : TTreenode;

i,j : integer;

begin

If treeview1.selected.level = 0 then

exit;



Appnode := treeview1.selected;



// Listbox1.clear;

listbox1.items.add(Appnode.text);

for i:=0 to treeview1.items.count-1 do begin

if Appnode.level < treeview1.items.item[i].level then begin

tempnode := treeview1.items.item[i];

for j:=1 to treeview1.items.item[i].level-Appnode.level do begin

tempnode := tempnode.parent;

end; //for

if Appnode.text = tempnode.text then begin

LISTBOX1.Sorted := TRUE;



listbox1.items.add(treeview1.items.item[i].text);

end; //if

end; // if

end; //for







end;

---------------------------------------------------------------------

이렇게 하면, 여러번 클릭해도 계속 중복이 되고,.

한번 클릭한 것도 추가가 제대로 되지 않아요..

다른 방법은 없을까요?



4  COMMENTS
  • Profile
    최용일 2001.10.26 00:58
    안녕하세요. 최용일입니다.



    아래와 같이 해보세요...



    procedure TForm1.TreeView1Click(Sender: TObject);

    var

    AppNode: TTreenode;

    DuplicateIndex: Integer;

    begin

    AppNode := TreeView1.Selected;

    if (AppNode = nil) or (AppNode.level = 0) then

    Exit;



    // Listbox1.clear;

    DuplicateIndex := ListBox1.Items.IndexOf(AppNode.Text);

    if DuplicateIndex = -1 then

    ListBox1.Items.Add(Appnode.Text);



    ListBox1.Sorted := True;

    end;



    ^^ 항상 즐코하세요...



    헬프미 wrote:

    > 아래와 같은 db 가 있습니다.

    >

    > code |desc1 | desc2 | desc3

    > ___________________________________________________

    > 10000할인점

    > 10100할인점 KAM SU

    > 10101할인점 KAM SU 할인점 1팀

    > 10102할인점 KAM SU 할인점 2팀

    > 10103할인점 KAM SU 할인점 3팀

    > 10104할인점 KAM SU 할인점 4팀

    > 10105할인점 KAM SU 농협팀

    > 10106할인점 KAM SU 경원팀

    > 10107할인점 KAM SU 충청팀

    > 10108할인점 KAM SU 호남팀

    > 10109할인점 KAM SU 경북팀

    > 10110할인점 KAM SU 경남팀

    > 10200할인점 서울 SU

    > 10201할인점 서울 SU 특판팀

    > 10202할인점 서울 SU 백화점1팀

    > 10300할인점 경원 SU

    > 10301할인점 경원 SU 인천특판팀

    > 10302할인점 경원 SU 수원지점

    > 10400할인점 서부 SU

    > 10403할인점 서부 SU 광주특판팀

    > 10405할인점 서부 SU 순천지점

    > 20000백화점

    > 20100백화점 서울 SU

    > 20101백화점 서울 SU 백화점1팀

    > 20102백화점 서울 SU 백화점2팀

    > 20200백화점 경원 SU

    > 20201백화점 경원 SU 인천특판팀

    > 20202백화점 경원 SU 안양지점

    > 20300백화점 서부 SU

    > 20301백화점 서부 SU 대전지점

    > 20302백화점 서부 SU 광주특판팀

    > 20303백화점 서부 SU 전주지점

    > 20304백화점 서부 SU 순천지점

    > 20400백화점 동부 SU

    > 20401백화점 동부 SU 대구특판1팀

    > 20402백화점 동부 SU 대구지점

    > 20403백화점 동부 SU 포항지점

    > 20404백화점 동부 SU 부산특판1팀

    > 20405백화점 동부 SU 마산지점

    > 20406백화점 동부 SU 울산지점

    > 30000유통

    > 30100유통 서울 SU

    > 30101유통 서울 SU 유통1팀

    > 30102유통 서울 SU 유통2팀

    > 30200유통 경원 SU

    > 30201유통 경원 SU 안양지점

    > 30202유통 경원 SU 원주지점

    > 30203유통 경원 SU 강릉지점

    > 30300유통 서부 SU

    > 30301유통 서부 SU 대전지점

    > 30302유통 서부 SU 청주지점

    > 30303유통 서부 SU 천안지점

    > 30304유통 서부 SU 광주특판팀

    > 30400유통 동부 SU

    > 30401유통 동부 SU 포항지점

    > 30402유통 동부 SU 부산특판1팀

    > 30403유통 동부 SU 부산특판2팀

    > 30404유통 동부 SU 마산지점

    > 30405유통 동부 SU 진주지점

    > 30406유통 동부 SU 울산지점

    > 40000단위수퍼

    > 40100단위수퍼 서울 SU

    > 40101단위수퍼 서울 SU 강북수퍼

    > 40102단위수퍼 서울 SU 동부수퍼

    > 40103단위수퍼 서울 SU 강남수퍼

    > 40200단위수퍼 경원 SU

    > 40201단위수퍼 경원 SU 인천특판팀

    > 40202단위수퍼 경원 SU 수원지점

    > 40203단위수퍼 경원 SU 안양지점

    > 40204단위수퍼 경원 SU 원주지점

    > 40205단위수퍼 경원 SU 강릉지점

    > 40300단위수퍼 서부 SU

    > 40301단위수퍼 서부 SU 대전지점

    > 40302단위수퍼 서부 SU 청주지점

    > 40303단위수퍼 서부 SU 천안지점

    > 40304단위수퍼 서부 SU 광주특판팀

    > 40305단위수퍼 서부 SU 전주지점

    > 40306단위수퍼 서부 SU 순천지점

    > 40400단위수퍼 동부 SU

    > 40401단위수퍼 동부 SU 대구특판2팀

    > 40402단위수퍼 동부 SU 대구지점

    > 40403단위수퍼 동부 SU 안동지점

    > 40404단위수퍼 동부 SU 포항지점

    > 40405단위수퍼 동부 SU 부산특판1팀

    > 40406단위수퍼 동부 SU 마산지점

    > 40407단위수퍼 동부 SU 진주지점

    > 40408단위수퍼 동부 SU 울산지점

    > 40409단위수퍼 동부 SU 제주지점

    > 10303할인점 경원 SU 안양지점

    > 10304할인점 경원 SU 원주지점

    > 10401할인점 서부 SU 대전지점

    > 10402할인점 서부 SU 천안지점

    > 10404할인점 서부 SU 전주지점

    > 10500할인점 동부 SU

    > 10501할인점 동부 SU 대구특판1팀

    > 10502할인점 동부 SU 포항지점

    > 10503할인점 동부 SU 부산특판1팀

    > 10504할인점 동부 SU 부산특판2팀

    > 10505할인점 동부 SU 진주지점

    > 10506할인점 동부 SU 울산지점

    > 10507할인점 동부 SU 제주지점

    > 40410단위수퍼 동부 SU 부산특판2팀

    >

    > ________________________________________________________________

    > 해서, 아래와 같은 식으로 treeview에 각 노드를 추가하였습니다.

    >

    >

    > Treeview1.Items.Clear;

    > str := 'TOT.KOREA';

    > parent1 := Treeview1.Items.add(nil, str);

    >

    > ////////////////////// second code start /////////////////////////////

    > with dm.query1 do begin

    > Close;

    > Sql.Clear;

    > Sql.Add(' select distinct desc1 from market');

    > open;

    > if recordcount > 0 then begin

    > first;

    > While not EOF do begin

    > first_cd := FieldByName('desc1').AsString;

    > child1 := Treeview1.Items.Addchild(parent1, first_cd);

    >

    > ////////////////////// third code start /////////////////////////////

    > with dm.query2 do begin

    > Close;

    > Sql.Clear;

    > Sql.Add(' select distinct desc2 from market');

    > Sql.Add(' where desc1 = '''+first_cd+''' and desc2 is not null ');

    > open;

    > if recordcount > 0 then begin

    > first;

    >

    > While not EOF do begin

    > second_cd := FieldByName('desc2').AsString;

    > child2 := Treeview1.Items.AddChild(child1, second_cd);

    >

    > ////////////////////// fourth code start /////////////////////////////

    > with dm.query3 do begin

    > Close;

    > Sql.Clear;

    > Sql.Add(' select distinct desc3 from market');

    > Sql.Add(' where desc1 = '''+first_cd+''' and desc2 = '''+second_cd+''' and desc3 is not null ');

    > open;

    > if recordcount > 0 then begin

    > first;

    >

    > While not EOF do begin

    > third_cd := FieldByName('desc3').AsString;

    > child3 := Treeview1.Items.AddChild(child2, third_cd);

    > /////////////////////////////////////////////////////////////////////

    > next;

    > end;

    > end;

    > end;

    > ///////////////////// fourth code end ///////////////////////////////

    >

    > next;

    > end;

    > end;

    > end;

    > ///////////////////// third code end ///////////////////////////////

    >

    > next;

    > end;

    > end;

    > end;

    > ///////////////////// second code end ///////////////////////////////

    > TREEVIEW1.FULLEXPAND;

    > _____________________________________________________________________________

    > 위와 같이 해서, db의 자료를 treeview에 추가하였는데,

    > treeview의 각 노드 클릭 이벤트에서

    > 노드를 클릭하면, ListBox에 추가하려고 하는데요....

    > procedure TForm2.TreeView1Click(Sender: TObject);

    > VAR

    > sql_str, tempstr : string;

    > Appnode, tempnode : TTreenode;

    > i,j : integer;

    > begin

    > If treeview1.selected.level = 0 then

    > exit;

    >

    > Appnode := treeview1.selected;

    >

    > // Listbox1.clear;

    > listbox1.items.add(Appnode.text);

    > for i:=0 to treeview1.items.count-1 do begin

    > if Appnode.level < treeview1.items.item[i].level then begin

    > tempnode := treeview1.items.item[i];

    > for j:=1 to treeview1.items.item[i].level-Appnode.level do begin

    > tempnode := tempnode.parent;

    > end; //for

    > if Appnode.text = tempnode.text then begin

    > LISTBOX1.Sorted := TRUE;

    >

    > listbox1.items.add(treeview1.items.item[i].text);

    > end; //if

    > end; // if

    > end; //for

    >

    >

    >

    > end;

    > ---------------------------------------------------------------------

    > 이렇게 하면, 여러번 클릭해도 계속 중복이 되고,.

    > 한번 클릭한 것도 추가가 제대로 되지 않아요..

    > 다른 방법은 없을까요?

    >

  • Profile
    헬프미 2001.10.26 21:28
    답변 감사합니다.

    말씀하신 내용의 코딩으로, 중복되는 값을 피했는데요....

    문제는 중간노드와 그 상위 노드를 클릭시에,

    최하위 노드가 추가가 되지 않는 다는것 입니다.

    이것저것 해보았는데, 잘 안되는 군요....

    휴우,.. 무슨 방법 없나요?

    treeview는 지겨워요.. ㅠ.ㅜ



    최용일 wrote:

    > 안녕하세요. 최용일입니다.

    >

    > 아래와 같이 해보세요...

    >

    > procedure TForm1.TreeView1Click(Sender: TObject);

    > var

    > AppNode: TTreenode;

    > DuplicateIndex: Integer;

    > begin

    > AppNode := TreeView1.Selected;

    > if (AppNode = nil) or (AppNode.level = 0) then

    > Exit;

    >

    > // Listbox1.clear;

    > DuplicateIndex := ListBox1.Items.IndexOf(AppNode.Text);

    > if DuplicateIndex = -1 then

    > ListBox1.Items.Add(Appnode.Text);

    >

    > ListBox1.Sorted := True;

    > end;

    >

    > ^^ 항상 즐코하세요...

    >

    > 헬프미 wrote:

    > > 아래와 같은 db 가 있습니다.

    > >

    > > code |desc1 | desc2 | desc3

    > > ___________________________________________________

    > > 10000할인점

    > > 10100할인점 KAM SU

    > > 10101할인점 KAM SU 할인점 1팀

    > > 10102할인점 KAM SU 할인점 2팀

    > > 10103할인점 KAM SU 할인점 3팀

    > > 10104할인점 KAM SU 할인점 4팀

    > > 10105할인점 KAM SU 농협팀

    > > 10106할인점 KAM SU 경원팀

    > > 10107할인점 KAM SU 충청팀

    > > 10108할인점 KAM SU 호남팀

    > > 10109할인점 KAM SU 경북팀

    > > 10110할인점 KAM SU 경남팀

    > > 10200할인점 서울 SU

    > > 10201할인점 서울 SU 특판팀

    > > 10202할인점 서울 SU 백화점1팀

    > > 10300할인점 경원 SU

    > > 10301할인점 경원 SU 인천특판팀

    > > 10302할인점 경원 SU 수원지점

    > > 10400할인점 서부 SU

    > > 10403할인점 서부 SU 광주특판팀

    > > 10405할인점 서부 SU 순천지점

    > > 20000백화점

    > > 20100백화점 서울 SU

    > > 20101백화점 서울 SU 백화점1팀

    > > 20102백화점 서울 SU 백화점2팀

    > > 20200백화점 경원 SU

    > > 20201백화점 경원 SU 인천특판팀

    > > 20202백화점 경원 SU 안양지점

    > > 20300백화점 서부 SU

    > > 20301백화점 서부 SU 대전지점

    > > 20302백화점 서부 SU 광주특판팀

    > > 20303백화점 서부 SU 전주지점

    > > 20304백화점 서부 SU 순천지점

    > > 20400백화점 동부 SU

    > > 20401백화점 동부 SU 대구특판1팀

    > > 20402백화점 동부 SU 대구지점

    > > 20403백화점 동부 SU 포항지점

    > > 20404백화점 동부 SU 부산특판1팀

    > > 20405백화점 동부 SU 마산지점

    > > 20406백화점 동부 SU 울산지점

    > > 30000유통

    > > 30100유통 서울 SU

    > > 30101유통 서울 SU 유통1팀

    > > 30102유통 서울 SU 유통2팀

    > > 30200유통 경원 SU

    > > 30201유통 경원 SU 안양지점

    > > 30202유통 경원 SU 원주지점

    > > 30203유통 경원 SU 강릉지점

    > > 30300유통 서부 SU

    > > 30301유통 서부 SU 대전지점

    > > 30302유통 서부 SU 청주지점

    > > 30303유통 서부 SU 천안지점

    > > 30304유통 서부 SU 광주특판팀

    > > 30400유통 동부 SU

    > > 30401유통 동부 SU 포항지점

    > > 30402유통 동부 SU 부산특판1팀

    > > 30403유통 동부 SU 부산특판2팀

    > > 30404유통 동부 SU 마산지점

    > > 30405유통 동부 SU 진주지점

    > > 30406유통 동부 SU 울산지점

    > > 40000단위수퍼

    > > 40100단위수퍼 서울 SU

    > > 40101단위수퍼 서울 SU 강북수퍼

    > > 40102단위수퍼 서울 SU 동부수퍼

    > > 40103단위수퍼 서울 SU 강남수퍼

    > > 40200단위수퍼 경원 SU

    > > 40201단위수퍼 경원 SU 인천특판팀

    > > 40202단위수퍼 경원 SU 수원지점

    > > 40203단위수퍼 경원 SU 안양지점

    > > 40204단위수퍼 경원 SU 원주지점

    > > 40205단위수퍼 경원 SU 강릉지점

    > > 40300단위수퍼 서부 SU

    > > 40301단위수퍼 서부 SU 대전지점

    > > 40302단위수퍼 서부 SU 청주지점

    > > 40303단위수퍼 서부 SU 천안지점

    > > 40304단위수퍼 서부 SU 광주특판팀

    > > 40305단위수퍼 서부 SU 전주지점

    > > 40306단위수퍼 서부 SU 순천지점

    > > 40400단위수퍼 동부 SU

    > > 40401단위수퍼 동부 SU 대구특판2팀

    > > 40402단위수퍼 동부 SU 대구지점

    > > 40403단위수퍼 동부 SU 안동지점

    > > 40404단위수퍼 동부 SU 포항지점

    > > 40405단위수퍼 동부 SU 부산특판1팀

    > > 40406단위수퍼 동부 SU 마산지점

    > > 40407단위수퍼 동부 SU 진주지점

    > > 40408단위수퍼 동부 SU 울산지점

    > > 40409단위수퍼 동부 SU 제주지점

    > > 10303할인점 경원 SU 안양지점

    > > 10304할인점 경원 SU 원주지점

    > > 10401할인점 서부 SU 대전지점

    > > 10402할인점 서부 SU 천안지점

    > > 10404할인점 서부 SU 전주지점

    > > 10500할인점 동부 SU

    > > 10501할인점 동부 SU 대구특판1팀

    > > 10502할인점 동부 SU 포항지점

    > > 10503할인점 동부 SU 부산특판1팀

    > > 10504할인점 동부 SU 부산특판2팀

    > > 10505할인점 동부 SU 진주지점

    > > 10506할인점 동부 SU 울산지점

    > > 10507할인점 동부 SU 제주지점

    > > 40410단위수퍼 동부 SU 부산특판2팀

    > >

    > > ________________________________________________________________

    > > 해서, 아래와 같은 식으로 treeview에 각 노드를 추가하였습니다.

    > >

    > >

    > > Treeview1.Items.Clear;

    > > str := 'TOT.KOREA';

    > > parent1 := Treeview1.Items.add(nil, str);

    > >

    > > ////////////////////// second code start /////////////////////////////

    > > with dm.query1 do begin

    > > Close;

    > > Sql.Clear;

    > > Sql.Add(' select distinct desc1 from market');

    > > open;

    > > if recordcount > 0 then begin

    > > first;

    > > While not EOF do begin

    > > first_cd := FieldByName('desc1').AsString;

    > > child1 := Treeview1.Items.Addchild(parent1, first_cd);

    > >

    > > ////////////////////// third code start /////////////////////////////

    > > with dm.query2 do begin

    > > Close;

    > > Sql.Clear;

    > > Sql.Add(' select distinct desc2 from market');

    > > Sql.Add(' where desc1 = '''+first_cd+''' and desc2 is not null ');

    > > open;

    > > if recordcount > 0 then begin

    > > first;

    > >

    > > While not EOF do begin

    > > second_cd := FieldByName('desc2').AsString;

    > > child2 := Treeview1.Items.AddChild(child1, second_cd);

    > >

    > > ////////////////////// fourth code start /////////////////////////////

    > > with dm.query3 do begin

    > > Close;

    > > Sql.Clear;

    > > Sql.Add(' select distinct desc3 from market');

    > > Sql.Add(' where desc1 = '''+first_cd+''' and desc2 = '''+second_cd+''' and desc3 is not null ');

    > > open;

    > > if recordcount > 0 then begin

    > > first;

    > >

    > > While not EOF do begin

    > > third_cd := FieldByName('desc3').AsString;

    > > child3 := Treeview1.Items.AddChild(child2, third_cd);

    > > /////////////////////////////////////////////////////////////////////

    > > next;

    > > end;

    > > end;

    > > end;

    > > ///////////////////// fourth code end ///////////////////////////////

    > >

    > > next;

    > > end;

    > > end;

    > > end;

    > > ///////////////////// third code end ///////////////////////////////

    > >

    > > next;

    > > end;

    > > end;

    > > end;

    > > ///////////////////// second code end ///////////////////////////////

    > > TREEVIEW1.FULLEXPAND;

    > > _____________________________________________________________________________

    > > 위와 같이 해서, db의 자료를 treeview에 추가하였는데,

    > > treeview의 각 노드 클릭 이벤트에서

    > > 노드를 클릭하면, ListBox에 추가하려고 하는데요....

    > > procedure TForm2.TreeView1Click(Sender: TObject);

    > > VAR

    > > sql_str, tempstr : string;

    > > Appnode, tempnode : TTreenode;

    > > i,j : integer;

    > > begin

    > > If treeview1.selected.level = 0 then

    > > exit;

    > >

    > > Appnode := treeview1.selected;

    > >

    > > // Listbox1.clear;

    > > listbox1.items.add(Appnode.text);

    > > for i:=0 to treeview1.items.count-1 do begin

    > > if Appnode.level < treeview1.items.item[i].level then begin

    > > tempnode := treeview1.items.item[i];

    > > for j:=1 to treeview1.items.item[i].level-Appnode.level do begin

    > > tempnode := tempnode.parent;

    > > end; //for

    > > if Appnode.text = tempnode.text then begin

    > > LISTBOX1.Sorted := TRUE;

    > >

    > > listbox1.items.add(treeview1.items.item[i].text);

    > > end; //if

    > > end; // if

    > > end; //for

    > >

    > >

    > >

    > > end;

    > > ---------------------------------------------------------------------

    > > 이렇게 하면, 여러번 클릭해도 계속 중복이 되고,.

    > > 한번 클릭한 것도 추가가 제대로 되지 않아요..

    > > 다른 방법은 없을까요?

    > >

  • Profile
    최용일 2001.10.26 22:17
    TTreeNode.Item배열에 서브노드가 들어가 있습니다.



    for문으로 돌려서 넣으세요...



    헬프미 wrote:

    > 답변 감사합니다.

    > 말씀하신 내용의 코딩으로, 중복되는 값을 피했는데요....

    > 문제는 중간노드와 그 상위 노드를 클릭시에,

    > 최하위 노드가 추가가 되지 않는 다는것 입니다.

    > 이것저것 해보았는데, 잘 안되는 군요....

    > 휴우,.. 무슨 방법 없나요?

    > treeview는 지겨워요.. ㅠ.ㅜ

    >

    > 최용일 wrote:

    > > 안녕하세요. 최용일입니다.

    > >

    > > 아래와 같이 해보세요...

    > >

    > > procedure TForm1.TreeView1Click(Sender: TObject);

    > > var

    > > AppNode: TTreenode;

    > > DuplicateIndex: Integer;

    > > begin

    > > AppNode := TreeView1.Selected;

    > > if (AppNode = nil) or (AppNode.level = 0) then

    > > Exit;

    > >

    > > // Listbox1.clear;

    > > DuplicateIndex := ListBox1.Items.IndexOf(AppNode.Text);

    > > if DuplicateIndex = -1 then

    > > ListBox1.Items.Add(Appnode.Text);

    > >

    > > ListBox1.Sorted := True;

    > > end;

    > >

    > > ^^ 항상 즐코하세요...

    > >

    > > 헬프미 wrote:

    > > > 아래와 같은 db 가 있습니다.

    > > >

    > > > code |desc1 | desc2 | desc3

    > > > ___________________________________________________

    > > > 10000할인점

    > > > 10100할인점 KAM SU

    > > > 10101할인점 KAM SU 할인점 1팀

    > > > 10102할인점 KAM SU 할인점 2팀

    > > > 10103할인점 KAM SU 할인점 3팀

    > > > 10104할인점 KAM SU 할인점 4팀

    > > > 10105할인점 KAM SU 농협팀

    > > > 10106할인점 KAM SU 경원팀

    > > > 10107할인점 KAM SU 충청팀

    > > > 10108할인점 KAM SU 호남팀

    > > > 10109할인점 KAM SU 경북팀

    > > > 10110할인점 KAM SU 경남팀

    > > > 10200할인점 서울 SU

    > > > 10201할인점 서울 SU 특판팀

    > > > 10202할인점 서울 SU 백화점1팀

    > > > 10300할인점 경원 SU

    > > > 10301할인점 경원 SU 인천특판팀

    > > > 10302할인점 경원 SU 수원지점

    > > > 10400할인점 서부 SU

    > > > 10403할인점 서부 SU 광주특판팀

    > > > 10405할인점 서부 SU 순천지점

    > > > 20000백화점

    > > > 20100백화점 서울 SU

    > > > 20101백화점 서울 SU 백화점1팀

    > > > 20102백화점 서울 SU 백화점2팀

    > > > 20200백화점 경원 SU

    > > > 20201백화점 경원 SU 인천특판팀

    > > > 20202백화점 경원 SU 안양지점

    > > > 20300백화점 서부 SU

    > > > 20301백화점 서부 SU 대전지점

    > > > 20302백화점 서부 SU 광주특판팀

    > > > 20303백화점 서부 SU 전주지점

    > > > 20304백화점 서부 SU 순천지점

    > > > 20400백화점 동부 SU

    > > > 20401백화점 동부 SU 대구특판1팀

    > > > 20402백화점 동부 SU 대구지점

    > > > 20403백화점 동부 SU 포항지점

    > > > 20404백화점 동부 SU 부산특판1팀

    > > > 20405백화점 동부 SU 마산지점

    > > > 20406백화점 동부 SU 울산지점

    > > > 30000유통

    > > > 30100유통 서울 SU

    > > > 30101유통 서울 SU 유통1팀

    > > > 30102유통 서울 SU 유통2팀

    > > > 30200유통 경원 SU

    > > > 30201유통 경원 SU 안양지점

    > > > 30202유통 경원 SU 원주지점

    > > > 30203유통 경원 SU 강릉지점

    > > > 30300유통 서부 SU

    > > > 30301유통 서부 SU 대전지점

    > > > 30302유통 서부 SU 청주지점

    > > > 30303유통 서부 SU 천안지점

    > > > 30304유통 서부 SU 광주특판팀

    > > > 30400유통 동부 SU

    > > > 30401유통 동부 SU 포항지점

    > > > 30402유통 동부 SU 부산특판1팀

    > > > 30403유통 동부 SU 부산특판2팀

    > > > 30404유통 동부 SU 마산지점

    > > > 30405유통 동부 SU 진주지점

    > > > 30406유통 동부 SU 울산지점

    > > > 40000단위수퍼

    > > > 40100단위수퍼 서울 SU

    > > > 40101단위수퍼 서울 SU 강북수퍼

    > > > 40102단위수퍼 서울 SU 동부수퍼

    > > > 40103단위수퍼 서울 SU 강남수퍼

    > > > 40200단위수퍼 경원 SU

    > > > 40201단위수퍼 경원 SU 인천특판팀

    > > > 40202단위수퍼 경원 SU 수원지점

    > > > 40203단위수퍼 경원 SU 안양지점

    > > > 40204단위수퍼 경원 SU 원주지점

    > > > 40205단위수퍼 경원 SU 강릉지점

    > > > 40300단위수퍼 서부 SU

    > > > 40301단위수퍼 서부 SU 대전지점

    > > > 40302단위수퍼 서부 SU 청주지점

    > > > 40303단위수퍼 서부 SU 천안지점

    > > > 40304단위수퍼 서부 SU 광주특판팀

    > > > 40305단위수퍼 서부 SU 전주지점

    > > > 40306단위수퍼 서부 SU 순천지점

    > > > 40400단위수퍼 동부 SU

    > > > 40401단위수퍼 동부 SU 대구특판2팀

    > > > 40402단위수퍼 동부 SU 대구지점

    > > > 40403단위수퍼 동부 SU 안동지점

    > > > 40404단위수퍼 동부 SU 포항지점

    > > > 40405단위수퍼 동부 SU 부산특판1팀

    > > > 40406단위수퍼 동부 SU 마산지점

    > > > 40407단위수퍼 동부 SU 진주지점

    > > > 40408단위수퍼 동부 SU 울산지점

    > > > 40409단위수퍼 동부 SU 제주지점

    > > > 10303할인점 경원 SU 안양지점

    > > > 10304할인점 경원 SU 원주지점

    > > > 10401할인점 서부 SU 대전지점

    > > > 10402할인점 서부 SU 천안지점

    > > > 10404할인점 서부 SU 전주지점

    > > > 10500할인점 동부 SU

    > > > 10501할인점 동부 SU 대구특판1팀

    > > > 10502할인점 동부 SU 포항지점

    > > > 10503할인점 동부 SU 부산특판1팀

    > > > 10504할인점 동부 SU 부산특판2팀

    > > > 10505할인점 동부 SU 진주지점

    > > > 10506할인점 동부 SU 울산지점

    > > > 10507할인점 동부 SU 제주지점

    > > > 40410단위수퍼 동부 SU 부산특판2팀

    > > >

    > > > ________________________________________________________________

    > > > 해서, 아래와 같은 식으로 treeview에 각 노드를 추가하였습니다.

    > > >

    > > >

    > > > Treeview1.Items.Clear;

    > > > str := 'TOT.KOREA';

    > > > parent1 := Treeview1.Items.add(nil, str);

    > > >

    > > > ////////////////////// second code start /////////////////////////////

    > > > with dm.query1 do begin

    > > > Close;

    > > > Sql.Clear;

    > > > Sql.Add(' select distinct desc1 from market');

    > > > open;

    > > > if recordcount > 0 then begin

    > > > first;

    > > > While not EOF do begin

    > > > first_cd := FieldByName('desc1').AsString;

    > > > child1 := Treeview1.Items.Addchild(parent1, first_cd);

    > > >

    > > > ////////////////////// third code start /////////////////////////////

    > > > with dm.query2 do begin

    > > > Close;

    > > > Sql.Clear;

    > > > Sql.Add(' select distinct desc2 from market');

    > > > Sql.Add(' where desc1 = '''+first_cd+''' and desc2 is not null ');

    > > > open;

    > > > if recordcount > 0 then begin

    > > > first;

    > > >

    > > > While not EOF do begin

    > > > second_cd := FieldByName('desc2').AsString;

    > > > child2 := Treeview1.Items.AddChild(child1, second_cd);

    > > >

    > > > ////////////////////// fourth code start /////////////////////////////

    > > > with dm.query3 do begin

    > > > Close;

    > > > Sql.Clear;

    > > > Sql.Add(' select distinct desc3 from market');

    > > > Sql.Add(' where desc1 = '''+first_cd+''' and desc2 = '''+second_cd+''' and desc3 is not null ');

    > > > open;

    > > > if recordcount > 0 then begin

    > > > first;

    > > >

    > > > While not EOF do begin

    > > > third_cd := FieldByName('desc3').AsString;

    > > > child3 := Treeview1.Items.AddChild(child2, third_cd);

    > > > /////////////////////////////////////////////////////////////////////

    > > > next;

    > > > end;

    > > > end;

    > > > end;

    > > > ///////////////////// fourth code end ///////////////////////////////

    > > >

    > > > next;

    > > > end;

    > > > end;

    > > > end;

    > > > ///////////////////// third code end ///////////////////////////////

    > > >

    > > > next;

    > > > end;

    > > > end;

    > > > end;

    > > > ///////////////////// second code end ///////////////////////////////

    > > > TREEVIEW1.FULLEXPAND;

    > > > _____________________________________________________________________________

    > > > 위와 같이 해서, db의 자료를 treeview에 추가하였는데,

    > > > treeview의 각 노드 클릭 이벤트에서

    > > > 노드를 클릭하면, ListBox에 추가하려고 하는데요....

    > > > procedure TForm2.TreeView1Click(Sender: TObject);

    > > > VAR

    > > > sql_str, tempstr : string;

    > > > Appnode, tempnode : TTreenode;

    > > > i,j : integer;

    > > > begin

    > > > If treeview1.selected.level = 0 then

    > > > exit;

    > > >

    > > > Appnode := treeview1.selected;

    > > >

    > > > // Listbox1.clear;

    > > > listbox1.items.add(Appnode.text);

    > > > for i:=0 to treeview1.items.count-1 do begin

    > > > if Appnode.level < treeview1.items.item[i].level then begin

    > > > tempnode := treeview1.items.item[i];

    > > > for j:=1 to treeview1.items.item[i].level-Appnode.level do begin

    > > > tempnode := tempnode.parent;

    > > > end; //for

    > > > if Appnode.text = tempnode.text then begin

    > > > LISTBOX1.Sorted := TRUE;

    > > >

    > > > listbox1.items.add(treeview1.items.item[i].text);

    > > > end; //if

    > > > end; // if

    > > > end; //for

    > > >

    > > >

    > > >

    > > > end;

    > > > ---------------------------------------------------------------------

    > > > 이렇게 하면, 여러번 클릭해도 계속 중복이 되고,.

    > > > 한번 클릭한 것도 추가가 제대로 되지 않아요..

    > > > 다른 방법은 없을까요?

    > > >

  • Profile
    헬프미 2001.10.27 00:43
    자꾸 번거롭게 해드려서 죄송합니다.

    하지만, 문제점을 발견하고 아래와 같이 코드를 수정했습니다.

    그래서, 발견된 새로운 문제 ㅠ.ㅠ

    아래에 "*****" 표시된 라인...

    문제점을 풀이해 보면요.

    최하위노드의 상위 1단계의 노드의 텍스트가 동일하기 때문에..

    " if AppNode.text= TempNode.text then Begin "

    이와 같은 코딩을 하면, 그 노드가 어디에 있건 상관하지 않고 동일한 텍스트의 최하위

    노드들을 전부 끌어온다는 점입니다.



    처음에 올린 DB의 구조를 보면 아시겠지만,

    ____________________________________________________

    10202할인점 서울 SU 백화점1팀



    20102백화점 서울 SU 백화점2팀

    (할인점-서울SU 에는 백화점1팀 밖에 없습니다,,, 그렇지만,

    백화점-서울SU 에 백화점 2팀이 있기때문에,

    -->할인점-서울SU 를 클릭하면, 백화점1팀 과 백화점2팀이 LISTBOX에 추가되는 오류가 있습니다)





    procedure TForm2.TreeView1Click(Sender: TObject);

    var

    AppNode, TempNode: TTreenode;

    i, j, DuplicateIndex: Integer;

    begin

    AppNode := TreeView1.Selected;

    if (AppNode = nil) or (AppNode.level = 0) then

    Exit;







    DuplicateIndex := ListBox1.Items.IndexOf(AppNode.Text);

    if DuplicateIndex = -1 then

    listbox1.items.add(AppNode.text);



    for i:=1 to treeview1.items.Count-1 do Begin

    if AppNode.level < treeview1.items.item[i].level Then Begin

    TempNode:= treeview1.items.item[i];

    for j:=1 to treeview1.items.item[i].level-AppNode.level do Begin

    TempNode:= TempNode.Parent;

    end;

    ***** if AppNode.text= TempNode.text then Begin

    ListBox1.Sorted := True;

    if DuplicateIndex = -1 then

    ListBox1.items.add(treeview1.items.item[i].text);

    end;

    end;

    end; //for..



    end; ------------------->Coding 끝..





    최용일 wrote:

    > TTreeNode.Item배열에 서브노드가 들어가 있습니다.

    >

    > for문으로 돌려서 넣으세요...

    >

    > 헬프미 wrote:

    > > 답변 감사합니다.

    > > 말씀하신 내용의 코딩으로, 중복되는 값을 피했는데요....

    > > 문제는 중간노드와 그 상위 노드를 클릭시에,

    > > 최하위 노드가 추가가 되지 않는 다는것 입니다.

    > > 이것저것 해보았는데, 잘 안되는 군요....

    > > 휴우,.. 무슨 방법 없나요?

    > > treeview는 지겨워요.. ㅠ.ㅜ

    > >

    > > 최용일 wrote:

    > > > 안녕하세요. 최용일입니다.

    > > >

    > > > 아래와 같이 해보세요...

    > > >

    > > > procedure TForm1.TreeView1Click(Sender: TObject);

    > > > var

    > > > AppNode: TTreenode;

    > > > DuplicateIndex: Integer;

    > > > begin

    > > > AppNode := TreeView1.Selected;

    > > > if (AppNode = nil) or (AppNode.level = 0) then

    > > > Exit;

    > > >

    > > > // Listbox1.clear;

    > > > DuplicateIndex := ListBox1.Items.IndexOf(AppNode.Text);

    > > > if DuplicateIndex = -1 then

    > > > ListBox1.Items.Add(Appnode.Text);

    > > >

    > > > ListBox1.Sorted := True;

    > > > end;

    > > >

    > > > ^^ 항상 즐코하세요...

    > > >

    > > > 헬프미 wrote:

    > > > > 아래와 같은 db 가 있습니다.

    > > > >

    > > > > code |desc1 | desc2 | desc3

    > > > > ___________________________________________________

    > > > > 10000할인점

    > > > > 10100할인점 KAM SU

    > > > > 10101할인점 KAM SU 할인점 1팀

    > > > > 10102할인점 KAM SU 할인점 2팀

    > > > > 10103할인점 KAM SU 할인점 3팀

    > > > > 10104할인점 KAM SU 할인점 4팀

    > > > > 10105할인점 KAM SU 농협팀

    > > > > 10106할인점 KAM SU 경원팀

    > > > > 10107할인점 KAM SU 충청팀

    > > > > 10108할인점 KAM SU 호남팀

    > > > > 10109할인점 KAM SU 경북팀

    > > > > 10110할인점 KAM SU 경남팀

    > > > > 10200할인점 서울 SU

    > > > > 10201할인점 서울 SU 특판팀

    > > > > 10202할인점 서울 SU 백화점1팀

    > > > > 10300할인점 경원 SU

    > > > > 10301할인점 경원 SU 인천특판팀

    > > > > 10302할인점 경원 SU 수원지점

    > > > > 10400할인점 서부 SU

    > > > > 10403할인점 서부 SU 광주특판팀

    > > > > 10405할인점 서부 SU 순천지점

    > > > > 20000백화점

    > > > > 20100백화점 서울 SU

    > > > > 20101백화점 서울 SU 백화점1팀

    > > > > 20102백화점 서울 SU 백화점2팀

    > > > > 20200백화점 경원 SU

    > > > > 20201백화점 경원 SU 인천특판팀

    > > > > 20202백화점 경원 SU 안양지점

    > > > > 20300백화점 서부 SU

    > > > > 20301백화점 서부 SU 대전지점

    > > > > 20302백화점 서부 SU 광주특판팀

    > > > > 20303백화점 서부 SU 전주지점

    > > > > 20304백화점 서부 SU 순천지점

    > > > > 20400백화점 동부 SU

    > > > > 20401백화점 동부 SU 대구특판1팀

    > > > > 20402백화점 동부 SU 대구지점

    > > > > 20403백화점 동부 SU 포항지점

    > > > > 20404백화점 동부 SU 부산특판1팀

    > > > > 20405백화점 동부 SU 마산지점

    > > > > 20406백화점 동부 SU 울산지점

    > > > > 30000유통

    > > > > 30100유통 서울 SU

    > > > > 30101유통 서울 SU 유통1팀

    > > > > 30102유통 서울 SU 유통2팀

    > > > > 30200유통 경원 SU

    > > > > 30201유통 경원 SU 안양지점

    > > > > 30202유통 경원 SU 원주지점

    > > > > 30203유통 경원 SU 강릉지점

    > > > > 30300유통 서부 SU

    > > > > 30301유통 서부 SU 대전지점

    > > > > 30302유통 서부 SU 청주지점

    > > > > 30303유통 서부 SU 천안지점

    > > > > 30304유통 서부 SU 광주특판팀

    > > > > 30400유통 동부 SU

    > > > > 30401유통 동부 SU 포항지점

    > > > > 30402유통 동부 SU 부산특판1팀

    > > > > 30403유통 동부 SU 부산특판2팀

    > > > > 30404유통 동부 SU 마산지점

    > > > > 30405유통 동부 SU 진주지점

    > > > > 30406유통 동부 SU 울산지점

    > > > > 40000단위수퍼

    > > > > 40100단위수퍼 서울 SU

    > > > > 40101단위수퍼 서울 SU 강북수퍼

    > > > > 40102단위수퍼 서울 SU 동부수퍼

    > > > > 40103단위수퍼 서울 SU 강남수퍼

    > > > > 40200단위수퍼 경원 SU

    > > > > 40201단위수퍼 경원 SU 인천특판팀

    > > > > 40202단위수퍼 경원 SU 수원지점

    > > > > 40203단위수퍼 경원 SU 안양지점

    > > > > 40204단위수퍼 경원 SU 원주지점

    > > > > 40205단위수퍼 경원 SU 강릉지점

    > > > > 40300단위수퍼 서부 SU

    > > > > 40301단위수퍼 서부 SU 대전지점

    > > > > 40302단위수퍼 서부 SU 청주지점

    > > > > 40303단위수퍼 서부 SU 천안지점

    > > > > 40304단위수퍼 서부 SU 광주특판팀

    > > > > 40305단위수퍼 서부 SU 전주지점

    > > > > 40306단위수퍼 서부 SU 순천지점

    > > > > 40400단위수퍼 동부 SU

    > > > > 40401단위수퍼 동부 SU 대구특판2팀

    > > > > 40402단위수퍼 동부 SU 대구지점

    > > > > 40403단위수퍼 동부 SU 안동지점

    > > > > 40404단위수퍼 동부 SU 포항지점

    > > > > 40405단위수퍼 동부 SU 부산특판1팀

    > > > > 40406단위수퍼 동부 SU 마산지점

    > > > > 40407단위수퍼 동부 SU 진주지점

    > > > > 40408단위수퍼 동부 SU 울산지점

    > > > > 40409단위수퍼 동부 SU 제주지점

    > > > > 10303할인점 경원 SU 안양지점

    > > > > 10304할인점 경원 SU 원주지점

    > > > > 10401할인점 서부 SU 대전지점

    > > > > 10402할인점 서부 SU 천안지점

    > > > > 10404할인점 서부 SU 전주지점

    > > > > 10500할인점 동부 SU

    > > > > 10501할인점 동부 SU 대구특판1팀

    > > > > 10502할인점 동부 SU 포항지점

    > > > > 10503할인점 동부 SU 부산특판1팀

    > > > > 10504할인점 동부 SU 부산특판2팀

    > > > > 10505할인점 동부 SU 진주지점

    > > > > 10506할인점 동부 SU 울산지점

    > > > > 10507할인점 동부 SU 제주지점

    > > > > 40410단위수퍼 동부 SU 부산특판2팀

    > > > >

    > > > > ________________________________________________________________

    > > > > 해서, 아래와 같은 식으로 treeview에 각 노드를 추가하였습니다.

    > > > >

    > > > >

    > > > > Treeview1.Items.Clear;

    > > > > str := 'TOT.KOREA';

    > > > > parent1 := Treeview1.Items.add(nil, str);

    > > > >

    > > > > ////////////////////// second code start /////////////////////////////

    > > > > with dm.query1 do begin

    > > > > Close;

    > > > > Sql.Clear;

    > > > > Sql.Add(' select distinct desc1 from market');

    > > > > open;

    > > > > if recordcount > 0 then begin

    > > > > first;

    > > > > While not EOF do begin

    > > > > first_cd := FieldByName('desc1').AsString;

    > > > > child1 := Treeview1.Items.Addchild(parent1, first_cd);

    > > > >

    > > > > ////////////////////// third code start /////////////////////////////

    > > > > with dm.query2 do begin

    > > > > Close;

    > > > > Sql.Clear;

    > > > > Sql.Add(' select distinct desc2 from market');

    > > > > Sql.Add(' where desc1 = '''+first_cd+''' and desc2 is not null ');

    > > > > open;

    > > > > if recordcount > 0 then begin

    > > > > first;

    > > > >

    > > > > While not EOF do begin

    > > > > second_cd := FieldByName('desc2').AsString;

    > > > > child2 := Treeview1.Items.AddChild(child1, second_cd);

    > > > >

    > > > > ////////////////////// fourth code start /////////////////////////////

    > > > > with dm.query3 do begin

    > > > > Close;

    > > > > Sql.Clear;

    > > > > Sql.Add(' select distinct desc3 from market');

    > > > > Sql.Add(' where desc1 = '''+first_cd+''' and desc2 = '''+second_cd+''' and desc3 is not null ');

    > > > > open;

    > > > > if recordcount > 0 then begin

    > > > > first;

    > > > >

    > > > > While not EOF do begin

    > > > > third_cd := FieldByName('desc3').AsString;

    > > > > child3 := Treeview1.Items.AddChild(child2, third_cd);

    > > > > /////////////////////////////////////////////////////////////////////

    > > > > next;

    > > > > end;

    > > > > end;

    > > > > end;

    > > > > ///////////////////// fourth code end ///////////////////////////////

    > > > >

    > > > > next;

    > > > > end;

    > > > > end;

    > > > > end;

    > > > > ///////////////////// third code end ///////////////////////////////

    > > > >

    > > > > next;

    > > > > end;

    > > > > end;

    > > > > end;

    > > > > ///////////////////// second code end ///////////////////////////////

    > > > > TREEVIEW1.FULLEXPAND;

    > > > > _____________________________________________________________________________

    > > > > 위와 같이 해서, db의 자료를 treeview에 추가하였는데,

    > > > > treeview의 각 노드 클릭 이벤트에서

    > > > > 노드를 클릭하면, ListBox에 추가하려고 하는데요....

    > > > > procedure TForm2.TreeView1Click(Sender: TObject);

    > > > > VAR

    > > > > sql_str, tempstr : string;

    > > > > Appnode, tempnode : TTreenode;

    > > > > i,j : integer;

    > > > > begin

    > > > > If treeview1.selected.level = 0 then

    > > > > exit;

    > > > >

    > > > > Appnode := treeview1.selected;

    > > > >

    > > > > // Listbox1.clear;

    > > > > listbox1.items.add(Appnode.text);

    > > > > for i:=0 to treeview1.items.count-1 do begin

    > > > > if Appnode.level < treeview1.items.item[i].level then begin

    > > > > tempnode := treeview1.items.item[i];

    > > > > for j:=1 to treeview1.items.item[i].level-Appnode.level do begin

    > > > > tempnode := tempnode.parent;

    > > > > end; //for

    > > > > if Appnode.text = tempnode.text then begin

    > > > > LISTBOX1.Sorted := TRUE;

    > > > >

    > > > > listbox1.items.add(treeview1.items.item[i].text);

    > > > > end; //if

    > > > > end; // if

    > > > > end; //for

    > > > >

    > > > >

    > > > >

    > > > > end;

    > > > > ---------------------------------------------------------------------

    > > > > 이렇게 하면, 여러번 클릭해도 계속 중복이 되고,.

    > > > > 한번 클릭한 것도 추가가 제대로 되지 않아요..

    > > > > 다른 방법은 없을까요?

    > > > >