Article View: pl.comp.lang.delphi
Article #335065Re: Upgrade do XE2
From: krzynio
Date: Tue, 07 Feb 2012 09:53
Date: Tue, 07 Feb 2012 09:53
108 lines
6274 bytes
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-mailReferences:
<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