안녕하세요.
정성훈.해미입니다.
자동으로 리스트뷰으 세로중앙에 찾은 아이템(칼럼)이 오게 한 소스입니다.
검색 방법도 조금 변경했으니 참고하세요.
//리스트뷰의 맨 처음 아이템을 가져온다
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;
: : : }
: : : }