Q&A

  • TreeView에 내용이 '가나' 로 시작되는 것들을 찾아서 포커스를 그곳으로 이동시킬려고하는데...?
[질문] TreeView에 내용이 '가나' 로 시작되는 것들을 찾아서 포커스를 그곳으로 이동시킬려고하는데...?


어떻게 해야되나여..?

일단 트리뷰에서 포커스이동을 해놨는데...

정확하게 트리뷰의 내용이 맞는것만 이동됩니다.

제목 그대로


-가나다라
|
-가나다라마
|
-가나다라마바
|
-가나다라마바사


이런식으로 메달려있을때 에디터 창에서 "가나"만 입력하면

가나다라 이동되고 또 다음 에는 가나다라마 로 이동되고 ....

순차적으로 찾으면서 이동되게 하고싶은데...

어떻게 하면 되나여..???

될듯 싶은데...잘않되는군요...

고수님 답변 부탁 드립니다..

읽어주셔서 감사합니다.
2  COMMENTS
  • Profile
    KDDG_BaSTaD 2003.02.05 19:13

    ==> Depth는 없는 것인가요? 물론 Recursive하게 찾으면 문제가 되질 않겠지만, 1 Depth라면 Loop로 간단히 해결되죠.. ^^;

    1. 노드와 캡션을 파라미터로 해서 주어진 노드의 Next Sibling 노드중 주어진 캡션을 가진 노드를 찾아 리턴하는 함수를 만드세요..
        Hint)
          TTreeview.Items.GetFirstNode;
          TTreeNode.getFirstChild;
          TTreeNode.getNextSibling;

      function GetSiblingNodeWithCaption(APreNode: TTreeNode;
        ASubCaption: String): TTreeNode;
      var
        Node: TTreeNode;
      begin
        Result := nil;
        Node := APreNode.getNextSibling;
        while Assigned(Node) do
        begin
          if Pos(ASubCaption, Node.Caption) > 0 then
          begin
            Result := Node;
            Break;
          end;
          Node := Node.getNextSibling;
        end;
      end;

      2. 그리고 찾은 노드를 저장할 TTreeNode객체를 멤버변수로 선언합니다.
      찾기 액션이 있을때 마다, 1번에서 만든 함수를 호출해 주시면됩니다.
      최초로 할때는, Treeview의 첫번째 노드를 넘기시면 되구요, 그 결과를
      멤버변수로 선언한 변수에 저장하신후 다음 호출시 그것을 넘기시면 됩니다.


    ps. 즐프 & 즐스타(참고로 바로 작성한거라,, 확신은 ㅡ_ㅡ..죄송(_ _))
  • Profile
    델파이탐크루즈 2003.02.05 19:45