|
임펠리테리입니다.
메뉴의 경우 간단히 색깔을 바꿀 수는 없고, 오너드로우를 해야 합니다.
아주 복잡하지는 않고 스트링그리드 등의 오너드로우와 거의 비슷한 수준이죠.
먼저 메인메뉴의 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의 색상을 바꿀수는 없나요?
:
|