왕꼼수이지만
다음과 같은 식으로 하니.. ListBox의 가운데에 원하는 Item이 오네요..
void __fastcall TForm1::Button3Click(TObject *Sender)
{
int cnt=ListBox1->ClientHeight / ListBox1->ItemHeight;
ListBox1->ItemIndex=50+cnt/2;
ListBox1->ItemIndex=50;
}
//---------------------------------------------------------------------------
위코드는 50번째 Item을 Listbox의 세로로 가운데 쯤에 오도록 한것인데..
문제점은 좀 있습니다.
* ListBox의 Item의 갯수가 ( SelectIndex + 화면ItemCount /2 ) 보다 작을때..
* SelectIndex가 (화면ItemCount /2 ) 보다 작을때 등..
그럼..
일월영측 님이 쓰신 글 :
: m_fpDoing = fopen(szInfo,"r+");
: // nLine는 파일안에 쓰여져 있는 전체 라인수를 의미합니다.
: for(int i=0; i<nLine; i++)
: {
: fgets(szInfo, 255,m_fpDoing); // 파일 안의 라인 데이터를 얻어오는데 사용
: sprintf(szFinal,"No.%04d %s",i,szInfo);
: listDoFileInfo->Items->Add(szFinal);
: }
: fclose(m_fpDoing)
: 이렇게 리스트 박스에 파일의 내용을 추가를 합니다.
:
: 그 후
: listDoFileInfo->ItemIndex = 100;
: listDoFileInfo->SetFocus();
:
: 이렇게 소스를 작성하면, 현재 리스트 박스에 100번째 줄에 위치한 곳으로 포커스가 이동하면서
: 화면도 그쪽으로 이동하게 되는데 리스트 박스 맨 밑부분에 표시가 됩니다.
:
: 이 위치를 리스트 박스 가운데로 옮기는 방법이 없을까요??