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
[3845] Re:[질문] TListBox에서 오너드로우
박지훈.임프 [cbuilder] 4664 읽음    2000-07-29 00:00
고스트 님이 쓰신 글 :
: 안녕하세여
: 초보 빌더맨인데여
:
: 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]);
}

그럼 참고하시길...

+ -

관련 글 리스트
3825 [질문] 왕왕 초보입니다 한번만 읽어주세여 고스트 3382 2000/07/27
3845     Re:[질문] TListBox에서 오너드로우 박지훈.임프 4664 2000/07/29
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.