Q&A

  • TreeView 의 특정 노드와 하위 노드들의 값(텍스트)를 어떻게 얻을 수 있을지
..



항상 많은 고수님들의 도움 감사드립니다.



음...이번에두 도움을 구하려고 합니다.



트리뷰의 특정 노드하위에 있는 자식노드들의 모든 값(텍스트)를 얻어오려고 하는데..



잘 되질 않네요..도와주세요.



아래처럼 하긴 했는데, 도저히 자식 노드들의 텍스트 값들은 얻을 수가 없어요.



고수님들의 지도 부탁드립니다.

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



var

nodeChild: TTreeNode;

MyList : TStringList;

nLoop:integer;

begin

nodeChild := Node.GetFirstChild;

while nodeChild <> nil

do

begin

MyList.Add(Node.Text);

Tree2List(nodeChild); // recurse for all Node's child nodes

ShowMessage(MyChild.Text);

nodeChild := Node.GetNextChild(nodeChild);

end

;

end;

1  COMMENTS
  • Profile
    홍성락 2001.09.26 04:01
    초보임다. wrote:

    > ..

    >

    > 항상 많은 고수님들의 도움 감사드립니다.

    >

    > 음...이번에두 도움을 구하려고 합니다.

    >

    > 트리뷰의 특정 노드하위에 있는 자식노드들의 모든 값(텍스트)를 얻어오려고 하는데..

    >

    > 잘 되질 않네요..도와주세요.

    >

    > 아래처럼 하긴 했는데, 도저히 자식 노드들의 텍스트 값들은 얻을 수가 없어요.

    >

    > 고수님들의 지도 부탁드립니다.

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

    >

    > var

    > nodeChild: TTreeNode;

    > MyList : TStringList;

    > nLoop:integer;

    > begin

    > nodeChild := Node.GetFirstChild;

    > while nodeChild <> nil

    > do

    > begin

    > MyList.Add(Node.Text);

    > Tree2List(nodeChild); // recurse for all Node's child nodes

    > ShowMessage(MyChild.Text);

    > nodeChild := Node.GetNextChild(nodeChild);

    > end

    > ;

    > end;

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

    아래예제는 선택된 노드의 자식 텍스트를 리스트박스에 넣은후 DB를 지우는 예제입니다.

    수정해서 써보세요. 속도를 내려고 Level를 검색 걸러낸후 Level만큼 Parent를 구해

    걸러내거든요, 문론 다른 펑션이 있는지는 모르겠습니다.

    procedure TForm1.delete1Click(Sender: TObject);

    var

    sql_str, TempStr : string;

    DelNode, TempNode : TTreeNode;

    i, j : integer;

    begin

    if TreeView1.Selected.Level = 0 then exit;



    DelNode := TreeView1.Selected;



    //삭제할 서브 노드 리스트 모으기

    ListBox1.Clear;

    ListBox1.Items.Add( DelNode.Text );

    for i := 0 to TreeView1.Items.Count-1 do begin

    if DelNode.Level < TreeView1.Items.Item[i].Level then begin

    TempNode := TreeView1.Items.Item[i];

    for j := 1 to TreeView1.Items.Item[i].Level-DelNode.Level do begin

    TempNode := TempNode.Parent;

    end;

    if DelNode.Text = TempNode.Text then begin

    ListBox1.Items.Add( TreeView1.Items.Item[i].Text );

    end;

    end;

    end;



    for i := 0 to ListBox1.Items.Count-1 do begin

    TempStr := ListBox1.Items.Strings[i];

    sql_str := 'Delete from 생산트리 where 생산트리.Pcod = ''' + TempStr + '''';

    SqlExecQuery(sql_str);

    end;

    DelNode.Parent.Selected := True;

    TreeView1.Items.Delete(DelNode);

    end;