Kolor tytułu zakładki

0

Witam.
Czy da sięzmienić kolor tekstu w tytule zakładki w PageContorl1 i jak to zrobić ?

1

Da się. Zdarzenie PageControlDrawTab.

0

dzięki, ale jak to wywołać, mam coś takiego:

 if
(PageControl1.ActivePage.Controls[0] as TSynMemo).Modified
Then 

i po tym chce: żeby jeśli jest zmodyfikowany to to kolor tekstu w tytule zakładki ma być czerwony a jeśli zapisany to czarny

0

Ustawić PageControl1.OwnerDraw:=True;

Poniżej szkic rozwiązania, do samodzielnego dopracowania.

procedure TForm1.PageControl1DrawTab(Control: TCustomTabControl;
  TabIndex: Integer; const Rect: TRect; Active: Boolean);
var
  t:TTabSheet;
begin
  t:=PageControl1.Pages[TabIndex];
  with PageControl1.Canvas do
  begin
    FillRect(Rect);
    if (PageControl1.ActivePage.Controls[0] as TSynMemo).Modified then Font.Color:=clRed else Font.Color:=clBlack;
    TextOut(Rect.Left,Rect.Top,t.Caption);
  end;
end;
0

Jeszcze jedna rzecz może Ci się przydać. Aby odświeżyć zakładkę (wymusić ponowne odrysowanie) wołaj PageControl1.Refresh.

0

Jak ustawie OwnerDraw na true całkiem giną mi tytułu zakładek

0

Faktycznie. Winny jest chyba ten styl nowszych Windowsów powyżej XP. Niestety porady z http://www.experts-exchange.com/Programming/Languages/Pascal/Delphi/Q_22114989.html nie działają. Moduł z metodą VistaFix sprawdzał się w innej mojej aplikacji, ale nie dla PageControlów. Także jeżeli korzystasz z Delphi 7 być może musisz zmienić Delphi na nowsze albo na odpowiednik na przykład Lazarus.

0

Także jeżeli korzystasz z Delphi 7 być może potrzebna będzie nowsza wersja środowiska na przykład Lazarus

Lazarus nie jest nowszą wersją Delphi7.

0

Także jeżeli korzystasz z Delphi 7. Być może potrzebna będzie nowsza wersja środowiska do pisania w Delphi - na przykład Lazarus.

  1. Najpierw piszesz poprawione potem poprawiasz...
  2. To nie po polskiemu.

Masz patcha: Być może musisz zmienić Delphi na nowsze albo na odpowiednik np. Lazarus.

0

Dobra, jest jak chciałeś @-123oho, Nawet mnie się musisz czepiać ;/ Przecież wiadomo co miałem na myśli i wiadomo co to jest Lazarus. A jeśli nie - można wygooglować, Wiadomo też, że jest nadal rozwijany, więc PageControle oraz inne komponenty powinny się zachowywac przy OwnerDraw prawidłowo, rownież pod nowszymi Windowsami niż XP.

0

Nawet mnie się musisz czepiać ;/

Dlaczego miałbym być niesprawiedliwy... Czepiam się głupoty a nie ludzi. Jak człowiek gada głupio to nie patrze na to kim jest...

Przecież wiadomo co miałem na myśli i wiadomo co to jest Lazarus

My to wiemy, nie znaczy że wszyscy... A forum jest nie po to żeby każdy mógł mówić jak dużo wie, ale żeby każdy mógł się czegoś nowego dowiedzieć... :P

0

Aha a czy przy nowszej wersji delphi będę musiał pisać to co już mam od nowa czy ten kod który napisałem w delphi 7 będzie poprawnie działał np. w delphi 10 ??

2

Tego się dowiemy, gdy Delphi 10 zostanie stworzone.

0

Powiedziałem przykładowo, równie dobrze mogłem powiedzieć a na delphi 20 będzie chodzić, a na delphi 2010 ??

1 użytkowników online, w tym zalogowanych: 0, gości: 1