Q&A

  • 트리뷰 활용 (급해요,도와주세요)
회사의 각 부서별 코드북을 만들고 있어요.

에디트 박스에서 자동으로 생성되는 코드와

필드값을(지사,부서명) 키입력해서 아래와 같이

드리뷰로 생성하여 (추가,삭제,수정)을 하려고 합니다.



제주지사(A10)

영업부(100)

제1영업부(100)

제2영업부(110)

...

관리부(200)

하나(100)

둘(110)

셋(120)

경기지사(B10)

영업부(100)

제1영업(110)

제2영업(120)

총무부(300)

기획(100)

조정(110)

업무(120)



와 같이 분류하여

부서명과 코드를 트리로 표시하려 하는데....



문1) 제주지사의 제1영업과 경기지사의 제1영업을 각각 부르는 방법은

문2) 트리구조의 각 아이템을 부르고, 또 경로를 알수있는지.

예) *표시된 조정이 제주지사간 경기지사인가를 구분하는 법





3  COMMENTS
  • Profile
    최용일 2000.03.08 00:44
    다음과 같이 하시면 됩니다..



    문제 1) 예제

    이 함수를 응용하시면 어떤 노드도 찾으실 수 있을겁니다...

    function TForm1.FindNode(Branch, Part: string): TTreeNode;

    // Branch -지사, Part - 부

    var

    I: Integer;

    BranchNode: TTreeNode;

    begin

    Result := nil;



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

    if Pos(Branch, TreeView1.Items[I].Text) <> 0 then

    begin

    BranchNode := TreeView1.Items[I];

    Break;

    end;



    for I := 0 to BranchNode.Count - 1 do

    if Pos(Part, BranchNode.Item[I].Text) <> 0 then

    begin

    Result := BranchNode.Item[I];

    Break;

    end;

    end;



    문2) 예제

    아이템을 부를땐 TTreeView의 Items프로퍼티나 TTreeNode의 Item프로프티를 이용

    하시면 됩니다. 경로를 지정하시는 방법은 여러가지가 있겠지만 디렉토리 패스를

    지정하는 방식으로 만들어 보았습니다...

    예) 제주지사(A10) 영업부(100)제1영업부(100) <== 이런식으로요...

    function TForm1.GetNodePath(Node: TTreeNode): string;

    var

    TempNode: TTreeNode;

    begin

    TempNode := Node;

    Result := '';

    while TempNode <> nil do

    begin

    Result := TempNode.Text + '' + Result;

    TempNode := TempNode.Parent;

    end;

    end;



  • Profile
    델초보 2000.03.08 01:55
    정말 감사합니다. 용일님.

    초보라서 그럽니다.

    아레 질문을 또 부탁 드립니다.





    문3) ADD,DELETE를 수행하고 UPDATE를 해야 한다는데....

    또 기존 아이템을 수정할수도 있나요.(edit등을 사용해서..)



    문4) 텝콘트롤을 사용하였는데 1페이지에서 사용하던 트리를 다른페이지에서(텝) 사용할때는 어떻게 하는지...



  • Profile
    최용일 2000.03.08 04:27
    답3) 굳이 update를 하실 필요는 없읍니다. 트리뷰에서 알아서 업데이트를

    해주거든요... 물론 기존 아이템도 수정가능합니다.. 먼저 수정하고 싶은

    노드를 얻어야하죠. 노드는 TTreeView의 Items나 TTreeNode의 Item속성을

    이용하셔서 얻으시면됩니다. TTreeNode.Text속성을 바꿔주시면 원하시는

    작업을 하실수 있습니다.



    답4)몇가지 방법이 있겠지만 파일(LoadFromFile, SaveToFile)과 스트림(LoadFromStream,

    SaveToStream)을 이용하시는게 가장 쉽습니다. 다음은 파일을 이용하여 트리를 복사하

    는 예제입니다.

    procedure CopyTree(SourceTree, DestTree);

    begin

    SourceTree.SaveToFile('txtFile.txt');

    DestTree.LoadFromFile('txtFile.txt');

    end;



    델초보 wrote:

    > 정말 감사합니다. 용일님.

    > 초보라서 그럽니다.

    > 아레 질문을 또 부탁 드립니다.

    >

    >

    > 문3) ADD,DELETE를 수행하고 UPDATE를 해야 한다는데....

    > 또 기존 아이템을 수정할수도 있나요.(edit등을 사용해서..)

    >

    > 문4) 텝콘트롤을 사용하였는데 1페이지에서 사용하던 트리를 다른페이지에서(텝) 사용할때는 어떻게 하는지...

    >