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
[1293] [답변] JSK365/ 콤보박스(ComboBox)에 대하여.../프포
박지훈.임프 [cbuilder] 3589 읽음    1999-04-29 19:08
안녕하세요. 천리안 프로그래머 포럼 C++Builder 담당 임펠리테리입니다.

메일로 다시 질문을 보내셨는데.. 저는 메일로 보내신 질문에는 답변하지 않습니다만

마침 잠시 시간이 남아서 답변을 적어봅니다. 다음번에는 게시판을 이용해주시기

바랍니다.

빈 폼에 콤보박스 하나를 떨어뜨리고, 폼의 OnCreate 핸들러와 콤보박스의

OnDrawItem 이벤트에 핸들러를 다음과 같이 작성합니다.

void __fastcall TForm1::FormCreate(TObject *Sender)
{
    ComboBox1->Style = csOwnerDrawFixed;

    AnsiString ColorName;
    for(int i=0; i<sizeof(IntColors)/sizeof(TColor); i++)
    {
        ColorToIdent(IntColors[i], ColorName);
        ComboBox1->Items->Add(ColorName);
    }
}

void __fastcall TForm1::ComboBox1DrawItem(TWinControl *Control, int Index,
    TRect &Rect, TOwnerDrawState State)
{
    ComboBox1->Canvas->Brush->Color = State.Contains(odSelected) ? clNavy : clWhite;
    ComboBox1->Canvas->FillRect(Rect);

    ComboBox1->Canvas->Pen->Color = IntColors[Index];
    ComboBox1->Canvas->Pen->Width = 3;
    ComboBox1->Canvas->MoveTo(Rect.Left+2, Rect.Top+8);
    ComboBox1->Canvas->LineTo(Rect.Right-2, Rect.Top+8);
}

위에서 사용된 IntColors는 컬러들의 값을 가지고 있는 TColor 형 배열입니다.

위 함수들의 위쪽에 그냥 다음과 같이 써주시면 되죠.

TColor IntColors[] = { clBlack, clMaroon, clGreen, clOlive, clNavy, clPurple,
    clTeal, clGray, clSilver, clRed, clLime, clYellow, clBlue, clFuchsia, clAqua, clWhite };

실행해보시면 콤보박스에 열여섯가지 색깔의 컬러 띠가 나오는 것을 보실 수 있을

겁니다. 또, 콤보박스에 들어간 각 아이템은 컬러들의 이름인데, OnDrawItem에서

직접 그려줄 수 있습니다. 이것은 직접 해보시기 바랍니다. 그리 어렵진 않을겁니다.

그럼 참고하시길...



임펠리테리 박지훈이었습니다.

(cbuilder, cbuilder@thrunet.com)



+ -

관련 글 리스트
1288 [질문] 콤보박스(ComboBox)에 대하여.../프포 jsk365 3653 1999/04/28
1293     [답변] JSK365/ 콤보박스(ComboBox)에 대하여.../프포 박지훈.임프 3589 1999/04/29
1290     [답변] JSK365/ 콤보박스(ComboBox)에 대하여.../프포 박지훈.임프 3553 1999/04/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.