If you just need to get a slightly complicated solution that works only on Windows with themes disabled , try the following:
Uncheck the Use manifest file to enable themes (Windows only) option in the Project / Project Options ... project settings dialog box and paste the following code into your block using the page control. It uses an inserted class, so it will only work in units where you insert this code.
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;
This is how it looks (ugly :)

TLama source share