Witam.
Czy da sięzmienić kolor tekstu w tytule zakładki w PageContorl1 i jak to zrobić ?
Da się. Zdarzenie PageControlDrawTab.
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
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;
Jeszcze jedna rzecz może Ci się przydać. Aby odświeżyć zakładkę (wymusić ponowne odrysowanie) wołaj PageControl1.Refresh
.
Jak ustawie OwnerDraw na true całkiem giną mi tytułu zakładek
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.
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.
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.
- Najpierw piszesz poprawione potem poprawiasz...
- To nie po polskiemu.
Masz patcha: Być może musisz zmienić Delphi na nowsze albo na odpowiednik np. Lazarus.
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.
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
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 ??
Tego się dowiemy, gdy Delphi 10 zostanie stworzone.
Powiedziałem przykładowo, równie dobrze mogłem powiedzieć a na delphi 20 będzie chodzić, a na delphi 2010 ??