Como posso alterar a cor do texto da legenda em TabSheet?
Dia bom!
Preciso alterar a cor do texto da legenda de alguma TabSheet no TPageControl. Algo parecido com isso na foto
Eu sei como isso pode ser feito usando OnDrawTab. Mas se eu habilitado OwnerDraw, decoração do tema do Windows XP desaparece. É por isso que tento desenhar essa decoração manualmente. É assim que tentei fazer isso:
procedure TForm1.PageControl1DrawTab(Control: TCustomTabControl;
TabIndex: Integer; const Rect: TRect; Active: Boolean);
var
FRect: TRect;
Text: string;
begin
FRect := Control.TabRect(TabIndex);
if Active then
ThemeServices.DrawElement(Control.Canvas.Handle, ThemeServices.GetElementDetails(ttTabItemHot), FRect)
else
ThemeServices.DrawElement(Control.Canvas.Handle, ThemeServices.GetElementDetails(ttTabItemNormal), FRect);
Text := PageControl1.Pages[TabIndex].Caption;
Control.Canvas.Brush.Style := bsClear;
if not Active then
FRect.Top := FRect.Top + 4;
DrawText(Control.Canvas.Handle, PChar(Text), Length(Text), FRect, DT_SINGLELINE or DT_CENTER or DT_VCENTER);
end;
E eu tenho esse
(esquerda - versão OwnerDraw, direita - desenho padrão)
Como você pode ver, o TabSheets tem algumas bordas que não são descobertas. E eu não posso ultrapassar essas fronteiras.
Como posso desenhar o fundo da aba corretamente (como o PageControl à direita)?