W jaki sposób mogę zmienić kolor tekstu motywu „TabSheet”?
Dobry dzień!
Muszę zmienić kolor tekstu podpisu niektórych arkuszy w TPageControl. Coś takiego na zdjęciu
Wiem, jak można to zrobić za pomocą OnDrawTab. Ale jeśli włączyłem OwnerDraw, dekoracja motywu Windows XP zniknie. Dlatego staram się ręcznie rysować tę dekorację. W ten sposób próbowałem to zrobić:
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;
I mam to
(po lewej - wersja OwnerDraw, prawa - rysowanie domyślne)
Jak widać, Arkusze Tab mają pewne obramowania, które nie są przerysowane. I nie mogę przecenić tych granic.
Jak poprawnie narysować tło karty (jak PageControl po prawej stronie)?