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
[52047] [답변] 리스트뷰 중앙(세로)에 찾은 아이템(칼럼)이 오게 하기
정성훈.해미 [sage5nor] 1704 읽음    2008-01-24 16:53
안녕하세요.
정성훈.해미입니다.

자동으로 리스트뷰으 세로중앙에 찾은 아이템(칼럼)이 오게 한 소스입니다.
검색 방법도 조금 변경했으니 참고하세요.

   //리스트뷰의 맨 처음 아이템을 가져온다
   TListItem *Item = ListView1->Items->Item[0];

   //아이템이 있으면 반복
   while(Item) 
   {
      //리포트 형태로 보이는 아이템의 2번째 칼럼(SubItems->String[0])의 내용이 같은지 검사
      if(Item->SubItems->Strings[0] == Edit1->Text.Trim())
      {
          //리스트뷰의 선택 아이템으로 설정한다
          ListView1->Selected = Item;  
          //해당 아이템이 리스트뷰 중앙에 오게 스크롤한다
          ListView1->Scroll(0, Item->GetPosition().y-ListView1->Height/2);
          //리스트뷰에 포커스
          ListView1->SetFocus();   
          //반복문 종료
          break;   
      }
      //리스트뷰에서 다음 아이템을 찾는다.
      Item = ListView1->GetNextItem(Item, sdAll, TItemStates()<<isNone);
   }


//----------------------------------------
//  ┏┓
//  ┣┻┓┏   ┃┃     작은 생각이 세상을 바꾼다
//  ┃♡┃┣   ┣┫┏┓
//  ┗━┛┗   ┃┃┣┫┏┓┏┓      - 정성훈.해미
//  ━━━━━━━━━┣┛┣┛┗┫━━━━━━
//  Web Site: http://www.hemistory.net
//  e-mail: sage5nor@chol.com
//----------------------------------------

오전&오후 님이 쓰신 글 :
: 답변감사합니다.
: 선택되는거는 되는데 선택된 항목이 화면에 보여줘야 되는데
:  ListView1->SetFocus();    //리스트뷰에 포커스
: 자동스크롤은 안되나 보네요 선택된 항목으로 자동스크롤되게 하려면 어덯게 해야되나요 ㅜㅜ;;;
: 여러가지로 생각해 보는데 생각이 잘안되네요 답변부탁드립니다.
:
: 정성훈.해미 님이 쓰신 글 :
: : 안녕하세요.
: : 정성훈.해미입니다.
: :
: : 리스트뷰를 리포트스타일로 사용하신가 보군요.
: : 아이템의 Selected를 true로 하고, 리스트뷰의 SetFocus()함수만 부르면 선택된 상태로 포커스가 갑니다.
: :
: : [예]
: :     for(int i=0 ; i<ListView1->Items->Count; i++)    //리스트뷰의 아이템 개수만큼 반복
: :     {
: :          //리포트 형태로 보이는 아이템의 2번째 칼럼(SubItems->String[0])의 내용중에 같은 것이 있는지 검색
: :         if(ListView1->Items->Item[i]->SubItems->Strings[0] == Edit10->Text.Trim())
: :         {
: :             ListView1->Items->Item[i]->Selected = true;    //해당 아이템을 선택
: :             ListView1->SetFocus();    //리스트뷰에 포커스
: :             break;
: :         }
: :     }
: : //----------------------------------------
: : //  ┏┓
: : //  ┣┻┓┏   ┃┃     작은 생각이 세상을 바꾼다
: : //  ┃♡┃┣   ┣┫┏┓
: : //  ┗━┛┗   ┃┃┣┫┏┓┏┓      - 정성훈.해미
: : //  ━━━━━━━━━┣┛┣┛┗┫━━━━━━
: : //  Web Site: http://www.hemistory.net
: : //  e-mail: sage5nor@chol.com
: : //----------------------------------------
: :
: : 오전&오후 님이 쓰신 글 :
: : : ListView에서 특정값을 검색해서
: : : 검색한 데이타가 있을경우 해당데이타가 선택되고 포커스가 거기로 이동하게 할려고 하는데
: : : 어떻게 해야되나요?
: : :
: : : 밑에처럼 해봤는데 안되네요 방법을 아시는분 답변좀 부탁드립니다.
: : :
: : : for(int i=0 ; i < ListView1->Items->Count - 1 ; i++){
: : :                 if(ListView1->Items->Item[i]->SubItems[0].Strings[0] == Edit10->Text.Trim()){
: : :                         ListView1->Items->Item[i]->Selected = true;
: : :                         ListView1->Items->Item[i]->Focused = true;
: : :                         ListView1->Update();
: : :                         break;
: : :                 }
: : :         }

+ -

관련 글 리스트
52030 ListView에서 검색후 오전&오후 1173 2008/01/23
52032     Re:ListView에서 검색후 정성훈.해미 1840 2008/01/23
52045         Re:Re:ListView에서 검색후 오전&오후 1677 2008/01/24
52047             [답변] 리스트뷰 중앙(세로)에 찾은 아이템(칼럼)이 오게 하기 정성훈.해미 1704 2008/01/24
52051                 Re:[답변] 리스트뷰 중앙(세로)에 찾은 아이템(칼럼)이 오게 하기 오전&오후 1456 2008/01/24
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.