Kolor tytułu zakładki

Kolor tytułu zakładki
DK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 64
0

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

Rekman
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 148
1

Da się. Zdarzenie PageControlDrawTab.

DK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 64
0

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

Kopiuj
 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

pelsta
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 819
0

Ustawić PageControl1.OwnerDraw:=True;

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

Kopiuj
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;
adf88
  • Rejestracja: dni
  • Ostatnio: dni
0

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

DK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 64
0

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

olesio
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
  • Postów: 4191
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.

  • Rejestracja: dni
  • Ostatnio: dni
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.

  • Rejestracja: dni
  • Ostatnio: dni
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.

olesio
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
  • Postów: 4191
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.

  • Rejestracja: dni
  • Ostatnio: dni
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

DK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 64
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 ??

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
2

Tego się dowiemy, gdy Delphi 10 zostanie stworzone.

DK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 64
0

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.