|
고스트 님이 쓰신 글 :
: 안녕하세여
: 초보 빌더맨인데여
:
: void __fastcall TForm1::ListBox1DrawItem(TWinControl *Control, int Index,
: TRect &Rect, TOwnerDrawState State)
:
: 리스트박스에서 아이템을 선택하면 선택한 구역에 PatBlt로 검정색을 칠한다음에요
: 다른걸 선택하면 처음 선택된곳은 화이트로 칠하려고 하걸랑요
: 그러니까 선택된곳만 검정색으로 영역이 잡히게 하려고여
:
: 글데 아이템을 선택했다는 메세지를 어케표현할지를 모르겠습니다
: 도움말을 보면
:
: if(State == odSelected)
:
: 요로케 하면 맞는것도 같은데 이것도 아닌것같구.....
: 쩝....고수님 좀 도와주세여....
: 그럼...이만 꾸바닥......
임펠리테리입니다.
리스트박스에서 기본적으로 선택된 아이템은 navy색으로 나오는 것을 단순히 검은색으로 나오도록 하려는 건가요? 그럼 오너드로우로 하면 되고...
먼저 리스트박스의 Style을 lbOwnerDrawFixed로 세팅하고, 이벤트 중에서 OnDrawItem을 더블클릭해서 핸들러를 만든 후 다음과 같이 코딩하세요.
void __fastcall TForm1::ListBox1DrawItem(TWinControl *Control, int Index,
TRect &Rect, TOwnerDrawState State)
{
if(State.Contains(odSelected))
{
ListBox1->Canvas->Font->Color = clWhite;
ListBox1->Canvas->Brush->Color = clBlack;
}
else
{
ListBox1->Canvas->Font->Color = clBlack;
ListBox1->Canvas->Brush->Color = clWhite;
}
ListBox1->Canvas->TextRect(Rect, Rect.Left, Rect.Top, ListBox1->Items->Strings[Index]);
}
그럼 참고하시길...
|