🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Upgrade do XE2

#335065
From: krzynio
Date: Tue, 07 Feb 2012 09:53
108 lines
6274 bytes
W dniu 2012-02-07 08:38, Krzysztof Szyszka pisze:
> 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.
>

Dziękuję za obszerne wyjaśnienie. Naprowadziło mnie ono trochę na 
kierunek, który przyjmują zarówno Delphi jak i Windows. Z jednej strony 
normalizacja i standardy wyglądają ładnie i jest to pozytywne, z drugiej 
ograniczają elastyczność programowania interfejsu lub posuwając się 
dalej ograniczają wolność programisty Delphi.
Ah! Gdzie te czasy nieograniczonej wolności, gdy Amigę programowało się 
tylko w assemblerze :')

Pozdrawiam,
Krzysztof

PS. W ramach downgrade zainstalowałem Delphi XE, przetestowałem jedną 
aplikację otwierając projekty XE2. O dziwo otworzyły się. Trzeba było 
przekompilować dll-ki, poprawić DBNavigatory (Property Kind unknown) i 
usunąć Theme Managera. Prawie wszystko wydaje się działać jak należy. 
Kolory są. Wyjątkiem pozostał uparty ToolBar, który przy 
ShowCaptions=True ustala Color=btnFace nie zależnie od właściwości Color.
W pobranych podręcznikach do D9 i 10 doczytałem też o wielu zmianach w 
działaniu niektórych komponentów w stosunku do mojej leciwej ale 
stabilnej D7. Handbooka do pobrania dla  XE ani dla XE2 nie zauważyłem 
jeszcze.
Technical Details
Message-ID: <4f30f49e$0$1255$65785112@news.neostrada.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!wsisiz.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-a-02.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
References: <4f2fdc9e$0$1212$65785112@news.neostrada.pl> <jgp5j9$jt3$1@inews.gazeta.pl> <4f30c038$0$26685$65785112@news.neostrada.pl> <jgqkdh$cbv$1@inews.gazeta.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!wsisiz.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-a-02.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
Date: Tue, 07 Feb 2012 10:53:33 +0100
From: krzynio <krzysztof@krzynio.net>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:11.0) Gecko/20120202 Firefox/11.0 Thunderbird/11.0
MIME-Version: 1.0
Newsgroups: pl.comp.lang.delphi
Subject: Re: Upgrade do XE2
References: <4f2fdc9e$0$1212$65785112@news.neostrada.pl> <jgp5j9$jt3$1@inews.gazeta.pl> <4f30c038$0$26685$65785112@news.neostrada.pl> <jgqkdh$cbv$1@inews.gazeta.pl>
In-Reply-To: <jgqkdh$cbv$1@inews.gazeta.pl>
Lines: 109
Message-ID: <4f30f49e$0$1255$65785112@news.neostrada.pl>
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 80.55.150.218
X-Trace: 1328608414 unt-rea-a-02.news.neostrada.pl 1255 80.55.150.218:51242
X-Complaints-To: abuse@news.neostrada.pl
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit