아래와 같은 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;
---------------------------------------------------------------------
이렇게 하면, 여러번 클릭해도 계속 중복이 되고,.
한번 클릭한 것도 추가가 제대로 되지 않아요..
다른 방법은 없을까요?
아래와 같이 해보세요...
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;
> ---------------------------------------------------------------------
> 이렇게 하면, 여러번 클릭해도 계속 중복이 되고,.
> 한번 클릭한 것도 추가가 제대로 되지 않아요..
> 다른 방법은 없을까요?
>