Zmiana koloru czcionki

Odpowiedz Nowy wątek
2011-08-04 19:21
0

Witam Wszystkich .

Mam na formie kilkanaście labeli , ComboBoxów , GroupBoxów i CheckBoxów . Pytanie moje jest takie : jak najprościej zmienić kolor czcionki we wszystkich komponentach na raz ?

Z góry dziękuję za podpowiedź .

edytowany 1x, ostatnio: pagosa747, 2011-08-04 19:22

Pozostało 580 znaków

2011-08-04 19:37
0

Ustawić wszystkim ParentFont:=True (ustawienie domyślne) i zmienić Font.Color parenta (w tym przyp. formy).

Pozostało 580 znaków

2011-08-04 20:25
0

Albo edytować moduł z tymi komponentami i ustawić wartość domyślną na pożądany kolor.


char mander; bool basaur;
Taaa, ciekawe jak mając wersję nie Enterprise na przykład Delphi 7 Personal i brak kodu źródlowego standardowych modułów jak Forms czy Buttons miałby to zrobić, chyba tylko śledzić swój kod na przykład Ollym i edytować później moduły *.dcu pod Hex Edytorem. Taka technika jak VCL patching nieraz działa, ale nie wiem czy udała by się także w takim przypadku. - olesio 2011-08-04 21:15

Pozostało 580 znaków

2011-08-04 20:51
0

Chodziło mi o zmianę koloru w czasie działania aplikacji ( wybrany przez użytkownika) , ParentFont niestety odpada , bo rozmiar czcionki jest różny dla różnych komponentów .

Pozostało 580 znaków

2011-08-04 21:31

Najprościej bez rozróżniania typu to można zrobić tak:

var
  I : integer;
  Lab : TLabel;
begin
  for I := 0 to Self.ComponentCount - 1 do
  begin
    Lab := TLabel(Self.Components[I]);
    Lab.Color := clRed;
  end;
end;

Rzutujesz tutaj na TLabel, ale czytając bodajże pewne artykuły w google po polsku na temat dynamicznego tworzenia komponentów, można wyczytać, że rzutując na TLabel jeśli wskażemy TButton to również zmienimy jego własnośc jeżeli mają wspólnego przodka. Opisano to choćby pod koniec w tym artykule na: http://pl.wikibooks.org/wiki/[...]amiczne_tworzenie_komponentów


To Self można pominąć. - TomRiddle 2011-08-04 21:37

Pozostało 580 znaków

2011-08-04 21:45
0

Pytający wedle mnie sformułował pytanie tak, że chce zmienić wszystkie kontrolki należące do formatki różnego typu, to pokazałem jak to zrobić. Self jest po to żeby pokazać że dotyczy to obiektu w którym zastosowano kod, więc jest to najbardziej potrzebne według mnie. A nie wiem co Ty tam wymyślasz z rzutowaniem Sendera, ja wyczytałem w helpie Dephi, że własnośc Color pochodzi niby od TControl, ale nie znalazłem wspólnego typu klasy rodzica, dla którego zawsze istnieje własnośc TColor, a więc zrobiłem to przykładowo przez rzutowanie na TLabel, który takową własność na pewno posiada. Jak ktoś zna inny sposób to może napisać.


Nie, Self nie jest konieczne. Robiłem tak wiele razy (tj. bez Self) i jakoś działało. - TomRiddle 2011-08-04 21:50

Pozostało 580 znaków

2011-08-04 21:49
0

Dzięki olesio .
Takie rozwiązanie znacząco uprości sprawę , bo obecnie procedura zmiany koloru ma tyle linii ile komponentów na formie razy dwa :)

Czemu razy dwa? - TomRiddle 2011-08-04 21:53

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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