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
[7529] Re:[질문] TMainMenu의 Color..........
박지훈.임프 [cbuilder] 1811 읽음    2001-05-17 03:40
임펠리테리입니다.

메뉴의 경우 간단히 색깔을 바꿀 수는 없고, 오너드로우를 해야 합니다.
아주 복잡하지는 않고 스트링그리드 등의 오너드로우와 거의 비슷한 수준이죠.

먼저 메인메뉴의 OwnerDraw 프로퍼티를 true로 설정합니다.
그런 후 다음과 같은 함수를 새로 만듭니다.

void __fastcall TForm1::MenuDrawItem(TObject *Sender,
      TCanvas *ACanvas, TRect &ARect, bool Selected)
{
    if(Selected)
    {
        ACanvas->Brush->Color = 0x339900;
        ACanvas->Font->Color = clWhite;
    }
    else
    {
        ACanvas->Brush->Color = 0x99FFCC;
        ACanvas->Font->Color = clBlack;
    }
    ACanvas->TextRect(ARect, ARect.Left + 6, ARect.Top + 3, ((TMenuItem *)Sender)->Caption);
    Memo1->Lines->Add(((TMenuItem *)Sender)->Caption);
}

물론 폼 클래스 내에 이 함수의 선언도 해주어야겠지요.

다음으로, 메인메뉴의 각 아이템들을 선택한 후 오브젝트 인스펙터에서 이벤트 중 OnDrawItem을 선택하고
오른쪽에 나타나는 ∇ 버튼을 눌러 위에서 만든 MenuDrawItem 함수를 이벤트핸들러로 선택합니다.
모든 아이템을 다 선택해주어야 합니다. (메뉴 에디터에서 컨트롤+클릭하면 쉽게 선택할 수 있습니다.)

그대로 컴파일하고 실행하시면, 메뉴의 배경이 선택 안했을 때 연두색, 선택했을 때 진한 녹색으로 나올 겁니다.
제가 예제로 선택한 색깔이 맘에 드십니까? ^^;;

그럼 참고하시길...


서비 님이 쓰신 글 :
: 다른 컴포넌트와 같이
: TMainMenu의 색상을 바꿀수는 없나요?
:

+ -

관련 글 리스트
7472 [질문] TMainMenu의 Color.......... 서비 1724 2001/05/15
7529     Re:[질문] TMainMenu의 Color.......... 박지훈.임프 1811 2001/05/17
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.