Strona 1 z 1

Zmiana koloru tekstu niektórych komponentów

Nowy postNapisane: sobota, 16 kwietnia 2011, 15:23
przez Android
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

Re: Zmiana koloru tekstu niektórych komponentów

Nowy postNapisane: sobota, 16 kwietnia 2011, 18:31
przez Cyfrowy Baron
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

Re: Zmiana koloru tekstu niektórych komponentów

Nowy postNapisane: sobota, 16 kwietnia 2011, 22:20
przez Android
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 :)

Re: Zmiana koloru tekstu niektórych komponentów

Nowy postNapisane: niedziela, 17 kwietnia 2011, 08:23
przez Cyfrowy Baron
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.