🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.delphi
Article #335064

Re: Upgrade do XE2

#335064
From: Krzysztof Szyszka
Date: Tue, 07 Feb 2012 07:38
77 lines
5065 bytes
Użytkownik "krzynio" napisał w wiadomości ...
>W dniu 2012-02-06 19:14, Krzysztof Szyszka pisze:
>> Użytkownik "krzynio" napisał w wiadomości ...
>>> Witam!
>>>
>>> Dałem się skusić na upgrade do XE2. Przyznaję, że użytkowany dotąd D7
>>> był już nieco leciwy i nie obsługiwał nowszych technologii ani unicode
>>> ani x64.
>>> Niestety XE2 wydaje się być mocno niedopracowany. Nawet tak prozaiczne
>>> kontrolki jak TToolBar czy TComboBox nieprawidłowo wyświetlają kolory.
>>> Np. TToolBar przy ShowCaptions=True nie wyświetla się w kolorze
>>> ustawionym we właściwości Color.
>>> Kolor TComboBox działa tylko przy ustawionym stylu formy na Windows i
>>> to pod warunkiem, że styl w Windowsie jest ustawiony na standardowy
>>> kwadratowy. Inaczej co by nie wpisał do Color będzie wyświetlany w
>>> kolorze motywu.
>>
>> Bo przecież na tym polega ustawienie stylu w XE2 (Custom Styles).
>>
>> Jeśli ustawisz styl inny niż Windows, to wszystkie informacje o kolorach
>> są pobierane ze StyleManagera. Chyba nie chciałbyś wyświetlać domyślnego
>> czarnego tekstu na czarnym tle dla stylów typu Aqua/Golden/Ruby Graphite
>> ? ;-)
>>
>
> Dzięki za wyjaśnienie!
> Problem tkwi w tym, że w zależności od zawartości ComboBoxa chciałbym by ów ComboBox przybierał 
> inny kolor.
> Stary program skompilowany w Delphi 7 tak właśnie działał, niezależnie od stylu Windowsa (standard 
> czy włączone wizualne kompozycje) tło ComboBoxa _zawsze_ zmienia kolor.
>
> Ten sam program skompilowany w XE 2 działa różnie.
>
> Case1: Gdy korzystam, ze stylu Windows to w zależności od tego czy mam w Windowsie włączony 
> standard (kwadratowe okna) czy włączone wizualne kompozycje, ComboBox jest kolorowany lub nie. W 
> tym przypadku w D7 był kolorowany zawsze.
>
> Case2: Jeżeli włączę kompozycję w projekcie Delphi np. Emerald zawsze kolor ComboBoxa pobierany 
> jest z kompozycji, niezależnie od właściwości Color komponentu.
>
> O ile Twoje wyjaśnienie tłumaczy drugi "case" to pierwszy wydaje się działać nieprawidłowo, bądź w 
> Delphi 7 - co akurat mi pasowało - bądź w Delphi XE2 - co mi nie pasuje.
>
> Czy jest na to jakieś obejście?

Nie twierdzę, że w XE2 wszystko co dotyczy stylów działa już dobrze,
bo sam wczoraj zgłosiłem do QC poważnego buga, ale z tego co widzę
w kodzie VCLa, to należy przyjąć taką zasadę, że kolory tła i czcionki
można ustawiać tylko dla stylu Windows i to też nie zawsze działa, bo
np. kolor tekstu dla TButton będzie zawsze = clWindowText.

Dla innych kontrolek/kompozycji windows mogą być podobne ograniczenia
i Delphi nie będzie tu nic winne, bo ono tylko korzysta z kontrolek dostępnych
w Windows i w tych przypadkach zasady narzuca Windows, a Delphi XE2 je
tylko honoruje. ThemeManager z Delphi 7 mógł nie honorować wszystkich
zasadach i dlatego coś wcześniej działało, a teraz już nie.

W przypadku Custom Styles wszystkie wzory i reguły są zapisane w StyleManagerze
i zastępują wszelkie ustawienia kolorów zapisane we właściwościach kontrolki.

Problem z użyciem Custom Styles polega na tym, że te wzory i reguły nie przewidują
żadnych dodatkowych efektów graficznych wprowadzanych w różnych rozszerzeniach
podstawowych kontrolek (np. w moim XDBGridzie), a czasem nawet nie obsługują
w pełni podstawowych funkcjonalności danej kontrolki. Np. dla standardowego DBGrida
możesz zapomnieć o kolorowaniu tytułów kolumn (Column.Title.Color), czy wyróżnianiu
jakiejś kolumny danych innym kolorem (Column.Color). Takich ograniczeń jest dość sporo,
co trudno uznać za błąd, ale też stawia pod dużym znakiem zapytania sensowność ich
stosowania dla wielu programów, gdzie różnorodność kolorów odgrywa dużą rolę, np. w
programach Neurona.

-- 
pozdrowienia
Krzysztof Szyszka, X-Files Software
Developer of X-Files Components
Borland/CodeGear/Embarcadero Technology Partner
_________________________________________
Website: http://www.x-files.pl/  E-mail: news@x-files.pl
Technical Details
Message-ID: <jgqkdh$cbv$1@inews.gazeta.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
References: <4f2fdc9e$0$1212$65785112@news.neostrada.pl> <jgp5j9$jt3$1@inews.gazeta.pl> <4f30c038$0$26685$65785112@news.neostrada.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
From: "Krzysztof Szyszka" <nomail@gazeta.pl>
Newsgroups: pl.comp.lang.delphi
Subject: Re: Upgrade do XE2
Date: Tue, 7 Feb 2012 08:38:19 +0100
Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
Lines: 78
Message-ID: <jgqkdh$cbv$1@inews.gazeta.pl>
References: <4f2fdc9e$0$1212$65785112@news.neostrada.pl> <jgp5j9$jt3$1@inews.gazeta.pl> <4f30c038$0$26685$65785112@news.neostrada.pl>
NNTP-Posting-Host: amon.pke.pl
Mime-Version: 1.0
X-Trace: inews.gazeta.pl 1328600305 12671 195.245.224.251 (7 Feb 2012 07:38:25 GMT)
X-Complaints-To: usenet@agora.pl
NNTP-Posting-Date: Tue, 7 Feb 2012 07:38:25 +0000 (UTC)
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6157
X-Priority: 3
X-Newsreader: Microsoft Outlook Express 6.00.2900.5931
X-User: kszyszka1
X-MSMail-Priority: Normal
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit