treeview의 structure는
大
|_中1
| |_小1
|
|_中2
| |_小2
|
|_中3
|_小3
"
"
"
'
이렇게 되있는데, 中(Node)를 선택했을때, 그 하위 노드들을 ListBox에 넣어주려고 합니다.
하지만, 아래와 같은 Coding은 中(Node)의 .Text가 같으면, 그 하위 노드들을 전부 가져옵니다.
그렇다면, 中(Node)의 .Text 가 서로 같은걸 조건으로 하는 방법 말고, 다른 방법은 없을까요?
부탁드립니다.
___________________________________________________________________________________
아래와 같은 코딩을 하였습니다.
procedure TForm2.TreeView1Click(Sender: TObject);
var
AppNode, TempNode: TTreenode;
i, j, DuplicateIndex: Integer;
begin
AppNode := TreeView1.Selected; //선택된 것: AppNode !
if (AppNode = nil) or (AppNode.level = 0) then Exit;
//FOR 루프로 Looping을 돌린다..
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 //선택된 노드가 하위노드를 가진 item일 때.
begin
TempNode:= treeview1.items.item[i]; //TempNode
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 = 0 then
ListBox1.items.add(treeview1.items.item[i].text);
end;
end;
end; //for..
end;
> treeview의 structure는
>
> 大
> |_中1
> | |_小1
> |
> |_中2
> | |_小2
> |
> |_中3
> |_小3
> "
> "
> "
> '
> 이렇게 되있는데, 中(Node)를 선택했을때, 그 하위 노드들을 ListBox에 넣어주려고 합니다.
> 하지만, 아래와 같은 Coding은 中(Node)의 .Text가 같으면, 그 하위 노드들을 전부 가져옵니다.
> 그렇다면, 中(Node)의 .Text 가 서로 같은걸 조건으로 하는 방법 말고, 다른 방법은 없을까요?
> 부탁드립니다.
> ___________________________________________________________________________________
>
>
>
> 아래와 같은 코딩을 하였습니다.
>
>
> procedure TForm2.TreeView1Click(Sender: TObject);
> var
> AppNode, TempNode: TTreenode;
> i, j, DuplicateIndex: Integer;
> begin
> AppNode := TreeView1.Selected; //선택된 것: AppNode !
> if (AppNode = nil) or (AppNode.level = 0) then Exit;
>
> //FOR 루프로 Looping을 돌린다..
>
> 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 //선택된 노드가 하위노드를 가진 item일 때.
> begin
> TempNode:= treeview1.items.item[i]; //TempNode
>
> 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 = 0 then
> ListBox1.items.add(treeview1.items.item[i].text);
> end;
> end;
> end; //for..
> end;
////////////////////////////////////////////////////////////////////////
자료실의 트리뷰와DB를연결한간단한예제의 생산_트리는 동일 아이템명을 허용치 않기때문에 텍스트로 검색한건데요.
if AppNode.text= TempNode.text then 을
if AppNode= TempNode then 로해보세요.