Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem VCL Styles - Delphi

Zdravím.
Bych mněl jen dotaz.
V Project - options - aplication - apparance si mohu přepnout vzhled programu.
Vypadá to docela dobře, jenže mi to překresluje i barevné texty v komponentách.
U některých komponentu pomůže v object inspektor - StyleElements vypnout překreslovaní fontu, ale u některých mám problém.

Hlavně bych to potřebovál pořešít s komponentou PageControl.

PageControl1.OwnerDraw:=true


procedure TForm1.PageControl1DrawTab(Control: TCustomTabControl;
  TabIndex: Integer; const Rect: TRect; Active: Boolean);
var
sCaption : String;
iTop : Integer;
iLeft : Integer;
begin
sCaption := TPageControl(Control).Pages[TabIndex].Caption;

iTop := Rect.Top + ((Rect.Bottom - Rect.Top - Control.Canvas.TextHeight(sCaption)) div 2) + 1;
iLeft := Rect.Left + ((Rect.Right - Rect.Left - Control.Canvas.TextWidth (sCaption)) div 2) + 1;

if Active then
Control.Canvas.Font.Color := clRed
else
Control.Canvas.Font.Color := clBlack;
Control.Canvas.TextOut(iLeft,iTop,sCaption);
end;

Všechny záložky jsou černé, jen ta aktivní je červena.

Když však zapnu to překreslovaní vzhledu, nefunguje to a text je furt černý.
Pujde to nějak pořešit?
Děkují.

Předmět Autor Datum
Jde to pořešit uživatelským vykreslováním. Je třeba použít DrawElement a pomocí něj vykreslovat zálo… poslední
Jan Fiala 24.02.2019 19:57
Jan Fiala

Jde to pořešit uživatelským vykreslováním. Je třeba použít DrawElement a pomocí něj vykreslovat záložky.
Jen pak vykresluješ komplet záložku.
Pokud totiž použiješ uživatelské styly, pak se vykreslování řídí pomocí stylů a už není možné do toho až tak zasahovat.

Případně použij komponentu TabControlEx, která má lepší podporu pro vykreslování

Zpět do poradny Odpovědět na původní otázku Nahoru