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
[26963] Re:[질문]combobox에서 각 item의 글씨채들을 각각 다르게 할 수 는 없을까요?
박지훈.임프 [cbuilder] 1385 읽음    2003-08-28 01:03
'오너드로우'라고 부르는 방법을 쓰면 됩니다. 오너드로우란 컴포넌트의 그리는 방법을 컴포넌트 자체의
루틴이 아니라 컴포넌트를 사용하는 프로그램에서 직접 그려주는 걸 말하는데, 콤보박스나 리스트박스,
스트링그리드/드로우그리드, 리스트뷰 등에서 지원합니다.

콤보박스에서 오너드로우를 하려면, 먼저 콤보박스의 Style 프로퍼티를 csOwnerDrawFixed이나
csOwnerDrawVariable로 설정합니다. 둘중에서 어느 것을 선택하느냐는 그려질 콤보박스의 아이템들이
일정한 높이이냐 아니면 각각의 아이템이 서로 다른 높이를 갖느냐인데, 모든 아이템에 같은 크기의 폰트를
그려주려는 목적일 테니 csOwnerDrawFixed를 선택하면 될 겁니다.

그런 후에 오브젝트 인스펙터에서 OnDrawItem 이벤트를 더블클릭해서 이벤트 핸들러를 만듭니다.
자동으로 생성된 이벤트 핸들러 함수에는 그려질 아이템의 인덱스(몇번째냐), 그려질 영역(TRect),
그리고 그려질 방법(상태) 등이 인자로 넘어오는데, 이것들을 이용해서 직접 그려주면 됩니다.

해당 폰트에 맞추어 그려주어야 할 테니, 콤보박스.Canvas.Font를 원하는 폰트로 수정해준 다음,
콤보박스.Canvas.TextOut(Rect.Left+2, Rect.Top, 콤보박스.Items[Index]) 정도로 호출해주면 될
겁니다. 참, 상태에 따라 포커스 여부나 선택된 여부(파란색 반전) 등도 그려주어야 하는데..
이 정도는 직접 찾아보세요.

그럼...


신현준 님이 쓰신 글 :
:  폰트 다이얼로그를 사용하지 않고...
:
:  폰트 다이얼로그의 여러 폰트들을 직접 선택할 수 있도록 하려고 합니다.
:
:  헌데.. 이 여러 폰트들의 종류를 콤보박스에서 아이템들로 관리 하려고 하는데요..
:
:  이때 각 아이템들을 각 폰트에 맞게 보여지게 할 수는 없을런지요..
:
:  그리고..  혹... 폰트 다이얼로그의 여러 폰트들을 콤보박스의 아이템들로 등록시키는 쉬운 방법은 없을까요?
:
:  고수님들의 답변 부탁드립니다..

+ -

관련 글 리스트
26960 [질문]combobox에서 각 item의 글씨채들을 각각 다르게 할 수 는 없을까요? 신현준 927 2003/08/27
26963     Re:[질문]combobox에서 각 item의 글씨채들을 각각 다르게 할 수 는 없을까요? 박지훈.임프 1385 2003/08/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.