당신이 테마를 윈도우에서만 작동 이 다음 시도하지 않도록 조금 까다로운 솔루션을 얻을하는 것이 충분하면 다음
는
Project/Project Options ...
프로젝트에서 Use manifest file to enable themes (Windows only)
옵션을 취소합니다 설정 대화 상자에서 다음 코드를 페이지 컨트롤을 사용하여 유닛에 붙여 넣으십시오. 삽입 된 클래스를 사용하므로이 코드를 붙여 넣은 단위에서만 작동합니다. 여기
uses
ComCtrls, Windows, LCLType;
type
TPageControl = class(ComCtrls.TPageControl)
private
procedure CNDrawItem(var Message: TWMDrawItem); message WM_DRAWITEM;
protected
procedure CreateParams(var Params: TCreateParams); override;
end;
implementation
procedure TPageControl.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
with Params do
begin
if not (csDesigning in ComponentState) then
Style := Style or TCS_OWNERDRAWFIXED;
end;
end;
procedure TPageControl.CNDrawItem(var Message: TWMDrawItem);
var
BrushHandle: HBRUSH;
BrushColor: COLORREF;
begin
with Message.DrawItemStruct^ do
begin
case itemID of
0: BrushColor := RGB(235, 24, 33);
1: BrushColor := RGB(247, 200, 34);
2: BrushColor := RGB(178, 229, 26);
else
BrushColor := ColorToRGB(clBtnFace);
end;
BrushHandle := CreateSolidBrush(BrushColor);
FillRect(hDC, rcItem, BrushHandle);
SetBkMode(hDC, TRANSPARENT);
DrawTextEx(hDC, PChar(Page[itemID].Caption), -1, rcItem, DT_CENTER or
DT_VCENTER or DT_SINGLELINE, nil);
end;
Message.Result := 1;
end;
는 내가 질문을받을 모르겠지만, 거기 (추한 :
처럼 안녕을 보이는 방법이다. 대신에'TTabControl'을 사용하려고 했습니까? 필요한 OnDrawTab 이벤트가 게시되었습니다. 나사로는 델파이의 다른 'TPageControl' 조상으로부터 왔습니다. – TLama
나는 이와 같은 것을하고 싶다. [예제] http://imgur.com/cNMko – user1174918
이것은 정말로 훌륭하다. @TLama ..... 내가하고 싶은 일은 괜찮아. 매우 감사. – user1174918