Q&A

  • 트리뷰 노드의 비교->텍스트 말고 다른건 없을까요?
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;

2  COMMENTS
  • Profile
    홍성락 2001.10.31 06:02
    헬프미 wrote:

    > 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 로해보세요.



  • Profile
    헬프미 2001.10.31 23:02
    홍성락 wrote:

    > 헬프미 wrote:

    > > 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 로해보세요.

    >