[질문] TreeView에 내용이 '가나' 로 시작되는 것들을 찾아서 포커스를 그곳으로 이동시킬려고하는데...?
어떻게 해야되나여..?
일단 트리뷰에서 포커스이동을 해놨는데...
정확하게 트리뷰의 내용이 맞는것만 이동됩니다.
제목 그대로
-가나다라
|
-가나다라마
|
-가나다라마바
|
-가나다라마바사
이런식으로 메달려있을때 에디터 창에서 "가나"만 입력하면
가나다라 이동되고 또 다음 에는 가나다라마 로 이동되고 ....
순차적으로 찾으면서 이동되게 하고싶은데...
어떻게 하면 되나여..???
될듯 싶은데...잘않되는군요...
고수님 답변 부탁 드립니다..
읽어주셔서 감사합니다.
==> 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. 즐프 & 즐스타(참고로 바로 작성한거라,, 확신은 ㅡ_ㅡ..죄송(_ _))