Zmiana koloru tekstu niektórych komponentów

dział ogólny

Zmiana koloru tekstu niektórych komponentów

Nowy postprzez Android » sobota, 16 kwietnia 2011, 15:23

Witam,
Chciałbym zmienic kolor tekstu w takich komponentach jak CheckBox, GroupBox i ListView. Niestety nie reagują one na zmiane właściwości Font->Color. Label z takim zapisem działa a pozostałe komponenty niestety nie (przynajmniej te, które wymieniłem). W jaki sposób można zmienić kolor czcionki w nagłówku GroupBox lub tekście wyświetlanym w CheckBox?
P.S. Zmiana innych parametrów właściwości Font następuje normalnie - zmiana rodzaju czcionki = efekt, wielkość, pogrubienie, kursywa itd też, nie działa tylko zmiana koloru.
Korzystam ze środowiska C++Builder 2010.
Z góry dziękuję za pomoc
Avatar użytkownika
Android
Bladawiec
Bladawiec
 
Posty: 46
Dołączył(a): poniedziałek, 5 kwietnia 2010, 16:51
Podziękował : 16
Otrzymał podziękowań: 2
System operacyjny: Windows 7 Pro x64
Kompilator: C++ Builder XE2
Gadu Gadu: 0
    Windows 7Firefox

Re: Zmiana koloru tekstu niektórych komponentów

Nowy postprzez Cyfrowy Baron » sobota, 16 kwietnia 2011, 18:31

W przypadku CheckBox i GroupBox nie da się zmienić koloru czcionki, to elementy interfejsu API i kolor czcionki jest na stałe ustawiony przez system. Pobierz sobie paczkę darmowych komponentów LMD Tools SE 2011, darmowa jest tylko wersja SE. Znajdziesz tam komponenty podobne do ChekBox i GroupBox pozwalające na większe modyfikacje.
Co się tuczy ListView to podałem już rozwiązanie w tym poście: http://programowanie.cal.pl/forum/viewtopic.php?f=2&t=1167&p=8218&hilit#p8218
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4727
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 444
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Zmiana koloru tekstu niektórych komponentów

Nowy postprzez Android » sobota, 16 kwietnia 2011, 22:20

W kwestii CheckBox i GroupBox mozna obejsc problem nagłówka wstawiając w Caption " " (n spacji) i w to miejsce nad komponentem umieścić inny komponent Label ale miałem nadzieje, że można to prościej zrobić :)
W kwestii ListView - widziałem, że opis w tym wątku odnosi się do zmian w komórkach a chciałbym jeszcze zmienić tytuł (napis na belce na górze gdy ustawione jest ViewStyle="vsReport").
Sprawdze czy zadziała też w tym przypadku :)
Dziękuję za pomoc :)
Avatar użytkownika
Android
Bladawiec
Bladawiec
 
Posty: 46
Dołączył(a): poniedziałek, 5 kwietnia 2010, 16:51
Podziękował : 16
Otrzymał podziękowań: 2
System operacyjny: Windows 7 Pro x64
Kompilator: C++ Builder XE2
Gadu Gadu: 0
    Windows 7Firefox

Re: Zmiana koloru tekstu niektórych komponentów

Nowy postprzez Cyfrowy Baron » niedziela, 17 kwietnia 2011, 08:23

Android napisał(a):W kwestii ListView - widziałem, że opis w tym wątku odnosi się do zmian w komórkach a chciałbym jeszcze zmienić tytuł (napis na belce na górze gdy ustawione jest ViewStyle="vsReport").
Sprawdze czy zadziała też w tym przypadku :)


Nie da się, gdyż klasa TListView nie umożliwia dostępu do tegoż nagłówka w zdarzeniu OnDrawItem.

Elementy interfejsu API mają już to do siebie, że ich wyglądu nie da się modyfikować dowolnie, gdyż steruje tym Windows, a aplikacja wysyła tylko do API info gdzie i jak te komponenty maja się zachowywać, ale tylko w dozwolonych granicach. Można stosować różne nakładki na powłokę SHELL, tak jak to zrobiłem w programie Babilon dostępnym na tym forum w dziale Programy, to jednak też na ogół wymaga dodatkowych bibliotek o ile nie chcesz tworzyć wszystkiego od podstaw, szczególnie jeżeli ma to działać prawidłowo zarówno w Win XP/Vista/7.

Proponowałem Tobie zainstalowanie komponentów LMD, gdyż mają większe możliwości niż komponenty standardowe. Ja np. zakupiłem pudełkową wersję środowiska i u mnie na dodatkowej płycie Partner CD te komponenty i wiele innych były już dołączone.

Android napisał(a):W kwestii CheckBox i GroupBox mozna obejsc problem nagłówka wstawiając w Caption " " (n spacji) i w to miejsce nad komponentem umieścić inny komponent Label ale miałem nadzieje, że można to prościej zrobić :)


To co dobrze wygląda w Windows 7 po przeniesieniu na Windows XP będzie już wyglądać inaczej i może się okazać, że ten Label nie leży tam gdzie powinien. Równie dobrze możesz użyć obiektu Panel z obiektem Bevel i Label, a w przypadku CheckBox-a można użyć Image w połączeniu z Label. Można też stworzyć samemu takie komponenty stosując właśnie takie kombinacje. Zamiast takiego łączenia komponentów można by jeszcze posłużyć się np. klasą TPanel i wszystko na niej rysować z wykorzystaniem TCanvas, efekt będzie dużo lepszy, a jeżeli stworzysz taki komponent to będziesz mógł tego używać wielokrotnie, zamiast wprowadzania kodu ręcznie.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4727
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 444
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Google [Bot] i 1 gość

cron