C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[20959] 지저분하고 완벽하지는 않지만... 보완하시면.. (__)
초짜 [] 984 읽음    2002-08-22 18:51
skjoon 님이 쓰신 글 :
: 트리뷰의 노드들 중에서 검색을 해서 해당되는 노드를 선택으로 해주고, 스크롤 바를 이동시켜 해당 노드의 위치를 트리뷰의 가운데 오게 하려고 합니다.
: MSDN을 보니 SetScrollPos()라는 함수가 있어서 쓰려고 하는데요..
:
: int nPos = ....;    // 이부분을...
: SetScrollPos(TreeView1->Handle, SB_VERT, nPos, true );
:
: 스크롤의 위치를 계산하지를 못하겠습니다..
:
: 고수님들 도움 부탁드립니다..

    for ( int i = 0; i < TreeView1->Items->Count; i++)  {
        if ( TreeView1->Items->Item[i]->Text == sFindText ) {          << Compare..
            nFindPos = i;
            TreeView1->Selected = TreeView1->Items->Item[i];
            NodeLevel = TreeView1->Items->Item[i]->Level;
            break;
        }
    }

검색을 해서 해당하는 노드를 찾았지요?

그런 다음 노드의 레벨도 알아냅니다.

    for ( int index = 0; index < nFindPos; index++) {
        if ( NodeLevel > TreeView1->Items->Item[index]->Level )
            nPos++;
    }

여기까지는 무슨 소리인지 아시겠죠?

그런데 중간으로 하는 것은 문제가 있네요..

스크롤이 자동으로 되면 몰라도 이상하게 안되서리.. 전 그냥 꽁수를 썼습니다.

꽁수라하믄

    if ( nPos > 9)
        nPos -= 8;

-_- 중간에 오도록 스크롤 시키는거지용.. (__)

    SetScrollPos(TreeView1->Handle, SB_VERT, nPos, true );

    TreeView1->SetFocus();


완벽하지는 않지만.... 보완을 좀 하시면 되지 않을까 싶어서..올려봅니다. (__) 그럼 수고하시길..

+ -

관련 글 리스트
20920 [질문] TTreeView에서 스크롤바를 원하는 위치로 이동 skjoon 867 2002/08/21
20959     지저분하고 완벽하지는 않지만... 보완하시면.. (__) 초짜 984 2002/08/22
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.