Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

ANN: X-DBGrid Component 5.1 i X-Files Components 5.1!

122 views
Skip to first unread message

Krzysztof Szyszka

unread,
Apr 2, 2012, 4:24:13 AM4/2/12
to
Witam,

miło mi poinformować, że ukazała się nowa wersja pakietów X-DBGrid Component 5.1
i X-Files Components 5.1.


Co nowego w wersji 5.1 ?
====================

- Pełne wsparcie dla Custom Styles we wszystkich komponentach (RAD Studio XE2)!!!
Zobacz nowe zrzuty ekranu zamieszczone na stronie: http://www.x-files.pl/pl/components/

- Przywrócono TXDBGrid.DoubleBuffered dla trybu right-to-left od 2007 (brak migotania)
- Ulepszono rysowanie dla TXDBGrid.DataCol/RowLinesColor=clNone (gdy brak linii danych)
- Nowa opcja dgMarkerClearAllowed w TXDBGridOptionExt
- Nowa właściwość published TXDBGrid.DrawingOptions
- Nowa właściwość published TXDBGrid.Gradient.ShadowFactor (luminancja gradientu)
- Poprawiono buga w TXDBGrid.LinkActive, gdy potomek TXDBGrida tworzy własny DataSet
- Poprawiono buga występującego podczas korzystania z TXDBGridSettings.DefaultSection
- Poprawiono kilka drobniejszych bugów zauważonych w komponencie TXDBGrid

- Nowa właściwość published TXDBNavigator.DrawingStyle (classic, gradient, themed)
- Nowa właściwość published TXDBNavigator.ApplyTheme (themed buttons)
- Nowa właściwość published TXDBNavigator.Kind (vertical navigator)
- Nowa właściwość published TXDBNavigator.Gradient.ShadowFactor (luminancja)

- Nowe podstawowe demo XDBGridDesign (z użyciem ClientDataSet i Custom Styles w XE2)
- Nowe podstawowe demo XDBNavigators (z użyciem ClientDataSet i Custom Styles w XE2)
- Odnowione demo XDBControls (z użyciem pionowego nawigatora dla każdej wersji Delphi)

- Nowa publiczna funkcja StylesEnabled (RAD Studio XE2)
- Nowa publiczna procedura klasowa TXFGradient.FillCanvas
- Nowa publiczna funkcja klasowa TXFGradient.ShadowColor
- Nowa właściwość published TXFGradient.ShadowFactor
- Rozszerzona i ulepszona metoda TXFGradient.FillCell

- Nowa właściwość published DrawingStyle dla TXFButton, TXFBitBtn, TXFSpeedButton
- Nowa właściwość published ApplyTheme dla TXFButton, TXFBitBtn, TXFSpeedButton
- Nowa właściwość Gradient.ShadowFactor dla TXFButton, TXFBitBtn, TXFSpeedButton

- Nowa właściwość published TXFPanel.ShowCaption
- Nowa właściwość published TXFGroupBox.PartialBackground
- Nowa właściwość published TXFRadioGroup.PartialBackground
- Nowa właściwość published TXFCheckGroup.PartialBackground
- Nowa właściwość published TXDBRadioGroup.PartialBackground

- Odnowione demo XFButtons (z użyciem gradientowych przycisków i Custom Styles w XE2)
- Odnowione demo XFButtons (z użyciem gradientowych przycisków pod Windows Themes)
- Odnowione demo XFControls (z użyciem właściwości PartialBackground)

zapraszam do odwiedzenia serwisu na stronie http://www.x-files.pl/pl/


pozdrowienia,

Krzysztof Szyszka, X-Files Software
Developer of X-Files Components
Borland/CodeGear/Embarcadero Technology Partner
___________________________________________
Website: http://www.x-files.pl/pl/ E-mail: ne...@x-files.pl

jh

unread,
Apr 2, 2012, 5:38:23 AM4/2/12
to
W dniu 02.04.2012 10:24, Krzysztof Szyszka pisze:
> miło mi poinformować, że ukazała się nowa wersja pakietów X-DBGrid Component 5.1

> - Pełne wsparcie dla Custom Styles we wszystkich komponentach (RAD
> Studio XE2)!!!

No ładnie to wygląda (oglądałem skompilowane dema). Firmowo mam XE2 i
DevExpressowego grida. Prywatnie jednak zupgrade'owałem się ostatecznie
do XE2 w ostatnim dniu promocji. Z D2007, więc wybór miałem średni -
Delphi, albo VS ;) Poszedłem na lenistwo i stwierdziłem, że jeszcze
trochę zostanę z Delphi. I stoję przed dylematem grida. Wiele z
funkcjonalności Quantum Grida mogę sobie jakoś zastąpić. Natomiast
korzystam z wbudowanego grupowania i (ponoć niechlubnego) układu
master-detail - czyli pod wierszem (master) mam grid (tu: widok) z
detalami. Czy Twój grid pozwala grupować dane? Ten master-detail
teoretycznie można zasymulować, jeżeli pod jakąś (primary key?) kolumnę
podłączę inplace edytor, który wyświetli mi drugiego grida - da się tak?

Jacek

Krzysztof Szyszka

unread,
Apr 2, 2012, 8:02:24 AM4/2/12
to
Użytkownik "jh" napisał w wiadomości ...
>W dniu 02.04.2012 10:24, Krzysztof Szyszka pisze:
>> miło mi poinformować, że ukazała się nowa wersja pakietów X-DBGrid Component 5.1
>
>> - Pełne wsparcie dla Custom Styles we wszystkich komponentach (RAD Studio XE2)!!!
>
> No ładnie to wygląda (oglądałem skompilowane dema). Firmowo mam XE2 i DevExpressowego grida.
> Prywatnie jednak zupgrade'owałem się ostatecznie do XE2 w ostatnim dniu promocji. Z D2007, więc
> wybór miałem średni - Delphi, albo VS ;) Poszedłem na lenistwo i stwierdziłem, że jeszcze trochę
> zostanę z Delphi.

I słusznie. Po co masz przerabiać takie same, albo i inne problemy z nowym narzędziem?
Oswojony wróg jest zawsze lepszy on tego nieznanego ;-)

> I stoję przed dylematem grida. Wiele z funkcjonalności Quantum Grida mogę sobie jakoś zastąpić.
> Natomiast korzystam z wbudowanego grupowania i (ponoć niechlubnego) układu master-detail - czyli
> pod wierszem (master) mam grid (tu: widok) z detalami. Czy Twój grid pozwala grupować dane?

Mój grid zawsze pokazuje takie dane, jakie Ty mu dostarczysz w DataSet.
Sam nie wykonuje grupowania, bo nie posiada wewnętrznego DataSetu
do manipulacji na danych, ale typowe (potrzebne) grupowania zawsze można
przygotować samemu. Ja przynajmniej tak robię i podpinam gotowe wersje
grupowania pod przyciski dla użytkownika. Jeśli jednak potrzebujesz dać
możliwość dowolnego grupowania użytkownikowi, to mój grid tego nie wspiera.

> Ten master-detail teoretycznie można zasymulować, jeżeli pod jakąś (primary key?) kolumnę podłączę
> inplace edytor, który wyświetli mi drugiego grida - da się tak?

Da się tak. Tylko nie wiem, czy nakładanie kolejnych gridów na siebie jest takie
wygodne dla użytkownika. Wygląda to może i efektownie, choć ja wolę klasyczny
układ, gdzie dane Master są na górze, a pod spodem mam np. PageControl
z różnymi zakładkami z danymi Detail i w każdej chwili mogę się przełączyć
na takie dane, jakie chcę obejrzeć, albo całkowicie wyłączyć panel z danymi
Detail. Oczywiście aktywnymi połączeniami master-detail zarządam podczas
przełączania zakładek, żeby nie pobierać danych, których akurat nie widać.

W moich programach przykładowych masz nawet taki gotowy przykład z
układem Master-Detail (XDBGridTestADO/BDE/IBX). Jest tam również
pokazana namiastka grupowania danych, ale to grupowanie dotyczy
realizacji różnych sposobów podsumowań wykonywanych automatycznie
przez XDBGrida dla wszystkich widocznych w nim danych i/lub tylko dla
zaznaczonych rekordów. Przykład ma za zadanie pokazać między innymi
szybkość realizacji podsumowań przy układzie master-detail.

Ja nie podejmę za Ciebie decyzji, jakiego grida wybrać, ale wiem,
że sporo osób korzysta z obydwu, bo każdy ma swoje wady i zalety.
Posiadając obydwa, zawsze można skorzystać z tego, w którym
łatwiej/szybciej da się uzyskać to, co w danej chwili potrzebujesz.

A na koniec zobacz sobie na ostatni wpis na tej stronie
http://www.x-files.pl/pl/about/index.html

--
pozdrowienia
Krzysztof Szyszka, X-Files Software
Developer of X-Files Components
Borland/CodeGear/Embarcadero Technology Partner
_________________________________________
Website: http://www.x-files.pl/ E-mail: ne...@x-files.pl

Przemyslaw Osmanski

unread,
Apr 2, 2012, 8:25:55 AM4/2/12
to
W dniu 2012-04-02 14:02, Krzysztof Szyszka pisze:

> Ja nie podejmę za Ciebie decyzji, jakiego grida wybrać, ale wiem,
> że sporo osób korzysta z obydwu, bo każdy ma swoje wady i zalety.
> Posiadając obydwa, zawsze można skorzystać z tego, w którym
> łatwiej/szybciej da się uzyskać to, co w danej chwili potrzebujesz.
>
> A na koniec zobacz sobie na ostatni wpis na tej stronie
> http://www.x-files.pl/pl/about/index.html

Czy reklamować produkt Kolegi czy nie? Oto jest pytanie...

Powiem tak, ja mam dokładnie tak jak we wpisie, we większości aplikacji
używam XDBGrid'a. Bardziej mi pasuje (choć kiedyś muszę się zagłębić w
źródła żeby zrobić rysowania ala produkty InsERTu), jest prostszy, ma
mniejszy narzut pamięci i ogólnie mi bardziej przypadł do gustu (może
dlatego że używałem go jako pierwszego).
DevEx jest fajny, ale praca z nim to po większości przekopywanie
dokumentacji, bo używanie tego AS IS może zrobić duże "kuku" autorowi i
użytkownikowi. Przynajmniej do momentu zaznajomienia się z nim na
odpowiednim poziomie.
Tak w sumie to DevEx i XDBGrid są nieporównywalne. Mają IMHO inne
zastosowania.


--
pozdrawiam,
Przemek O.

SoftSYSTEM - www.soft-system.pl
Mały Kangurek - Sale zabaw dla dzieci - www.malykangurek.pl

jh

unread,
Apr 2, 2012, 9:28:38 AM4/2/12
to
W dniu 02.04.2012 14:02, Krzysztof Szyszka pisze:
> A na koniec zobacz sobie na ostatni wpis na tej stronie
> http://www.x-files.pl/pl/about/index.html

To fakt. Dla wygody często sięga się do rzeczy, które są szybkie w
przygotowaniu. Cóż, ściągam triala :)

jh

Krzysztof Szyszka

unread,
Apr 2, 2012, 2:24:54 PM4/2/12
to
Użytkownik "Przemyslaw Osmanski" napisał w wiadomości ...

> (choć kiedyś muszę się zagłębić w źródła żeby zrobić rysowania ala produkty InsERTu)

Czy możesz rozwinąć ten temat? Co konkretnie potrzebujesz?
Może coś podpowiem, albo Ty mnie czymś zainspirujesz.

jh

unread,
Apr 2, 2012, 3:50:54 PM4/2/12
to
W dniu 02.04.2012 14:25, Przemyslaw Osmanski pisze:
> Tak w sumie to DevEx i XDBGrid są nieporównywalne. Mają IMHO inne zastosowania.

A ja w międzyczasie zerknąłem na konkurencję: Woll2Woll i EhLib.
Woll2Woll jest niby taki powerful... Ok, ale wizualnie i na demie
absolutnie tego nie widać. Za kasę prawie tę samą co DevEx to nie umieją
się sprzedać. Wygląda koszmarnie, podobnie jak ich strona internetowa :P
Natomiast EhLib funkcjonalnie ma to, o czym pisałem w poście obok -
master-detail i grupowanie. Fakt, to drugie na własnym in-memory
datasecie, ale jednak. Tyle, że wyglądem daleko mu do XDBGrida :) O
helpie/pozostałych funkcjonalnościach nawet nie wspominam... Zatem,
gdyby tak do XDBGrida dodać te dwie funkcjonalności
(master-detail/grupowanie) to wykosiłby konkurencję, IMHO. A jakby go do
tego nauczyć korzystać z takich makr w AnyDAC, to owo grupowanie,
sortowanie po stronie serwera itd. pewnie byłoby cud-miód-malina :P

jh

Przemek O

unread,
Apr 2, 2012, 4:10:56 PM4/2/12
to
W dniu 2012-04-02 20:24, Krzysztof Szyszka pisze:
> Użytkownik "Przemyslaw Osmanski" napisał w wiadomości ...
>
>> (choć kiedyś muszę się zagłębić w źródła żeby zrobić rysowania ala
>> produkty InsERTu)
>
> Czy możesz rozwinąć ten temat? Co konkretnie potrzebujesz?
> Może coś podpowiem, albo Ty mnie czymś zainspirujesz.

Już kiedyś o tym dyskutowaliśmy mailowo (dawno temu). Chodzi o efekt
wyrysowania grida na całości komponentu nawet jeśli nie ma tam danych i
jeśli danych jest mniej niż linii to odkreślenie ich (coś jak OpionsEx -
dgBlankRow ale nie dla jednego row, a z uwzględnieniem wysokości row z
danymi).
Wejdź na
http://www.insert.com.pl/programy_dla_firm/sprzedaz/subiekt_gt/ekrany.html
i zobacz przykładowe ekrany, to będziesz wiedział o co mi chodzi.
Tłumaczę mętnie, bo w sumie to taki graficzny bajer i nie wnosi nic do
funkcjonalności. Ale mi się podoba :) I chciałbym go zastosować.
Pamiętam że wtedy odpowiedziałeś, że wprost się tego nie da zrobić z
racji dziedziczenia po DBGrid. Ja temat odpuściłem bo nie miałem na to
czasu, ale i tak kiedyś to zrobię :)

pozdrawiam,
Przemek O.

Przemek O

unread,
Apr 2, 2012, 4:16:42 PM4/2/12
to
W dniu 2012-04-02 21:50, jh pisze:

> datasecie, ale jednak. Tyle, że wyglądem daleko mu do XDBGrida :) O

Zakładając zgodność z stylami VCL (a jest wersja XE2) to nie ma
znaczenia :/ Zresztą AlphaSkin potrafi skinować ehLiba.

pozdrawiam,
Przemek O.

arturs

unread,
Apr 2, 2012, 4:24:01 PM4/2/12
to

> Powiem tak, ja mam dokładnie tak jak we wpisie, we większości aplikacji
> używam XDBGrid'a. Bardziej mi pasuje (choć kiedyś muszę się zagłębić w
> źródła żeby zrobić rysowania ala produkty InsERTu), jest prostszy, ma
> mniejszy narzut pamięci i ogólnie mi bardziej przypadł do gustu (może
> dlatego że używałem go jako pierwszego).
> DevEx jest fajny, ale praca z nim to po większości przekopywanie
> dokumentacji, bo używanie tego AS IS może zrobić duże "kuku" autorowi i
> użytkownikowi. Przynajmniej do momentu zaznajomienia się z nim na
> odpowiednim poziomie.
> Tak w sumie to DevEx i XDBGrid są nieporównywalne. Mają IMHO inne
> zastosowania.
>

Mam dokładnie tak samo - x-dbgrida używam od chyba wersji 3.x do teraz..
jak wiesz od paru tygodni używam cxgrida - i ciężko to porównać.. widzę
że devex będzie się świetnie spisywał jak będzie trzeba zrobić coś na
szybko - dosłownie wyklikać całość - wiem że wloochacz zaraz mnie
opieprzy że to nie tak powinno się robić ale tak to wygląda z mojego
niskiego poziomu..

> gdyby tak do XDBGrida dodać te dwie funkcjonalności
> (master-detail/grupowanie) to wykosiłby konkurencję, IMHO. A jakby go do
> tego nauczyć korzystać z takich makr w AnyDAC, to owo grupowanie,
> sortowanie po stronie serwera itd. pewnie byłoby cud-miód-malina :P
>

no dokładnie - a po ostatnich zmianach (dodaniu tego panelu
konfiguracyjnego co wszystko ładnie widać to naprawdę super) - nie
instalowałem jeszcze dzisiejszej wersji bo nie mam czasu ale kiedyś się
wezmę ;)aha - zapomniałeś o filtrowaniu -
(master-detail/grupowanie/filtrowanie)

Pozdrawiam

Krzysztof Szyszka

unread,
Apr 3, 2012, 2:26:28 AM4/3/12
to
Użytkownik "Przemek O" napisał w wiadomości ...
>W dniu 2012-04-02 20:24, Krzysztof Szyszka pisze:
>> Użytkownik "Przemyslaw Osmanski" napisał w wiadomości ...
>>
>>> (choć kiedyś muszę się zagłębić w źródła żeby zrobić rysowania ala
>>> produkty InsERTu)
>>
>> Czy możesz rozwinąć ten temat? Co konkretnie potrzebujesz?
>> Może coś podpowiem, albo Ty mnie czymś zainspirujesz.
>
> Już kiedyś o tym dyskutowaliśmy mailowo (dawno temu). Chodzi o efekt wyrysowania grida na całości
> komponentu nawet jeśli nie ma tam danych i jeśli danych jest mniej niż linii to odkreślenie ich
> (coś jak OpionsEx - dgBlankRow ale nie dla jednego row, a z uwzględnieniem wysokości row z
> danymi).
> Wejdź na http://www.insert.com.pl/programy_dla_firm/sprzedaz/subiekt_gt/ekrany.html i zobacz
> przykładowe ekrany, to będziesz wiedział o co mi chodzi.

OK. Obejrzałem te obrazki i wydawać by się mogło, że dla tak prostej wersji
siatki wymalowanie wirtualnych linii nie powinno stanowić problemu i jeśli
rzeczywiście używasz XDBGrida w tak prostej postaci, to dla konkretnych
ustawień jego konfiguracji możesz się pokusić o domalowanie brakujących
linii w jego potomku pokrywając metodę Paint, ale ja musiałbym to zrobić
dla każdej konfiguracji ustawień, co jest zadaniem lekko karkołomnych,
a uzyskany efekt byłby niespółmierny do nakładu pracy (kodu) potrzebnego
do jego uzyskania. Poza tym, takie "drobiazgi" zwykle później stwarzają
masę probemów przy innych funkcjach, ot chociażby przy malowaniu zebry
dla wierszy danych, których tak naprawdę nie ma

> Tłumaczę mętnie, bo w sumie to taki graficzny bajer i nie wnosi nic do funkcjonalności. Ale mi się
> podoba :) I chciałbym go zastosować.
> Pamiętam że wtedy odpowiedziałeś, że wprost się tego nie da zrobić z racji dziedziczenia po
> DBGrid. Ja temat odpuściłem bo nie miałem na to czasu, ale i tak kiedyś to zrobię :)

TXDBGrid dziedziczy po TCustomGrid, który jest odpowiedzialny za malowanie
samej siatki grida zanim jeszcze XDBGrid namaluje na niej konkretne komórki.
Siatka jest malowana niejako hurtem dla wszystkich wierszy i kolumn, które zostały
zdefiniowane w klasie TCustomGrid. Obszary, w których nie ma komórek, nie są
w ogólne udostępniane do malowania w klasach potomnych, więc nie są dostępne
dla XDBGrida w typowy sposób (z podaniem współrzędnych komórki). Można
jedynie coś domalować na całym canvasie w metodzie Paint wyliczając samemu,
gdzie ten rysunek ma się pojawić. Dla prostej siatki możesz spróbować to zrobić,
ale dla dowolnych ustawień grida to raczej niewykonalne.

wloochacz

unread,
Apr 3, 2012, 3:52:11 AM4/3/12
to
W dniu 2012-04-02 22:24, arturs pisze:
>
>> Powiem tak, ja mam dokładnie tak jak we wpisie, we większości aplikacji
>> używam XDBGrid'a. Bardziej mi pasuje (choć kiedyś muszę się zagłębić w
>> źródła żeby zrobić rysowania ala produkty InsERTu), jest prostszy, ma
>> mniejszy narzut pamięci i ogólnie mi bardziej przypadł do gustu (może
>> dlatego że używałem go jako pierwszego).
>> DevEx jest fajny, ale praca z nim to po większości przekopywanie
>> dokumentacji, bo używanie tego AS IS może zrobić duże "kuku" autorowi i
>> użytkownikowi. Przynajmniej do momentu zaznajomienia się z nim na
>> odpowiednim poziomie.
>> Tak w sumie to DevEx i XDBGrid są nieporównywalne. Mają IMHO inne
>> zastosowania.
>>
>
> Mam dokładnie tak samo - x-dbgrida używam od chyba wersji 3.x do teraz..
> jak wiesz od paru tygodni używam cxgrida - i ciężko to porównać.. widzę
> że devex będzie się świetnie spisywał jak będzie trzeba zrobić coś na
> szybko - dosłownie wyklikać całość - wiem że wloochacz zaraz mnie
> opieprzy że to nie tak powinno się robić ale tak to wygląda z mojego
> niskiego poziomu..
Nie mam zamiaru - po prostu, nie wszystko jest dla wszystkich.
I ja też używałem XDBGrida, ale tak do wersji 2.x chyba ;-)

/ciach/

--
wloochacz

wloochacz

unread,
Apr 3, 2012, 4:03:02 AM4/3/12
to
W dniu 2012-04-02 20:24, Krzysztof Szyszka pisze:
> Użytkownik "Przemyslaw Osmanski" napisał w wiadomości ...
>
>> (choć kiedyś muszę się zagłębić w źródła żeby zrobić rysowania ala
>> produkty InsERTu)
>
> Czy możesz rozwinąć ten temat? Co konkretnie potrzebujesz?
> Może coś podpowiem, albo Ty mnie czymś zainspirujesz.
>
Dobra, ale liczę na upust :D

Widzę, że w koncu (proszę nie bić, od dawna nie jestem w temacie
X-DBGirda) pojawił się footer w gidzie (pojawił się?) to może czas iść
za ciosem, a mam na myśli:

FilterRow
http://demos.devexpress.com/aspxgridviewdemos/filtering/FilterRow.aspx

AutoFilter (tu zwany Header Filter)
http://demos.devexpress.com/aspxgridviewdemos/filtering/HeaderFilter.aspx
Tu ciut spartolony, bo zdecydowanie lepje jest wtedy kiedy można
zaznaczyć wiele pozycji na liście do filtrowania.

IncementalSearching
Czyli w aktywnej kolumnie piszemy sobie a grid to ładnie szuka i
podświetla wynik.

Stopka kolumn
Aby można tam pokazać dodtkowe dane - najczęściej będzie to pewnie wynik
działania funkcji agregującej na danych w kolumnie.

I teraz tak - ja rozumiem (z grubsza), jak działa taki grid i że nie
wszystko da się zrobić. I w tym przypadku nie chodzi o to, żeby grid
filtrował dane, pozyskiwał je automatycznie do listy AutoFilter itd.
Chodzi o to, żeby grid udostępniał API, gdzie obsługując odpowiednie
zdarzenia użytkownik może oprogramować takiego grida tak jak chce, nie
przejmując się sposobem prezentacji. Bo tę kwestię załatwia za niego
komponent.

--
wloochacz

Krzysztof Szyszka

unread,
Apr 3, 2012, 5:36:11 AM4/3/12
to
U�ytkownik "wloochacz" napisa� w wiadomo�ci ...
>W dniu 2012-04-02 20:24, Krzysztof Szyszka pisze:
>> U�ytkownik "Przemyslaw Osmanski" napisa� w wiadomo�ci ...
>>
>>> (cho� kiedy� musz� si� zag��bi� w �r�d�a �eby zrobi� rysowania ala
>>> produkty InsERTu)
>>
>> Czy mo�esz rozwin�� ten temat? Co konkretnie potrzebujesz?
>> Mo�e co� podpowiem, albo Ty mnie czym� zainspirujesz.
>>
> Dobra, ale liczďż˝ na upust :D

Nie m�w, �e chcesz wr�ci� do X-DBGrida, bo i tak nie uwierz� ;-)

> Widz�, �e w koncu (prosz� nie bi�, od dawna nie jestem w temacie X-DBGirda) pojawi� si� footer w
> gidzie (pojawiďż˝ siďż˝?)

No pojawi� si�, tylko �e to by�o w tym czasie, gdy wysz�o Delphi 2007 ;-), co
�atwo sprawdzi� w historii: http://www.x-files.pl/pl/download/whatsnew.html

> to mo�e czas i�� za ciosem, a mam na my�li:
> Tu ciut spartolony, bo zdecydowanie lepje jest wtedy kiedy mo�na zaznaczy� wiele pozycji na li�cie
> do filtrowania.

Ja ju� nawet prawie sko�czy�em sw�j FilterBar w zesz�ym roku, ale ostatecznie
nie zdecydowa�em si� go udost�pni�, bo nie by�em z niego do ko�ca zadowolony
i uzna�em, �e wymaga jednak kilku istotnych zmian. A potem pojawi�o si� XE2
i trzeba by�o zaj�� si� opracowaniem pakiet�w dla nowej wersji Delphi.

Pewnie czas do niego wr�ci�, cho� jak widz� po tych trzech r�nych elementach
w kategorii Filtering, to chyba chcia�em zrobi� zbyt du�o na raz w ramach mojego
jednego FilterBar. Musz� sobie to na nowo przemy�le� i uporz�dkowa�.

> IncementalSearching
> Czyli w aktywnej kolumnie piszemy sobie a grid to �adnie szuka i pod�wietla wynik.

To w�a�ciwie "wyjdzie samo" jak ju� b�dzie dzia�aj�cy FilterBar. Jedyny problem,
jaki tu wyst�puje, to gdzie najlepiej b�dzie pokaza� tekst pisany przez u�ytkownika?

> Stopka kolumn
> Aby mo�na tam pokaza� dodtkowe dane - najcz�ciej b�dzie to pewnie wynik dzia�ania funkcji
> agreguj�cej na danych w kolumnie.

To ju� jest dawno dost�pne. Wprowadzone razem z podsumowaniami, ale tych
dodatkowych wierszy stopki mo�na sobie utworzy� wiele i umieszcza� w nich
r�ne dane. Wynik podsumowania kolumny, to tylko jedna z opcji.

> I teraz tak - ja rozumiem (z grubsza), jak dzia�a taki grid i �e nie wszystko da si� zrobi�. I w
> tym przypadku nie chodzi o to, �eby grid filtrowa� dane, pozyskiwa� je automatycznie do listy
> AutoFilter itd.
> Chodzi o to, �eby grid udost�pnia� API, gdzie obs�uguj�c odpowiednie zdarzenia u�ytkownik mo�e
> oprogramowa� takiego grida tak jak chce, nie przejmuj�c si� sposobem prezentacji. Bo t� kwesti�
> za�atwia za niego komponent.

Tu si� dok�adnie z Tob� zgadzam, cho� akurat sporo rzeczy mo�na tu te�
przygotowaďż˝ automatycznie.

wloochacz

unread,
Apr 3, 2012, 5:52:33 AM4/3/12
to
W dniu 2012-04-03 11:36, Krzysztof Szyszka pisze:
> Użytkownik "wloochacz" napisał w wiadomości ...
>> W dniu 2012-04-02 20:24, Krzysztof Szyszka pisze:
>>> Użytkownik "Przemyslaw Osmanski" napisał w wiadomości ...
>>>
>>>> (choć kiedyś muszę się zagłębić w źródła żeby zrobić rysowania ala
>>>> produkty InsERTu)
>>>
>>> Czy możesz rozwinąć ten temat? Co konkretnie potrzebujesz?
>>> Może coś podpowiem, albo Ty mnie czymś zainspirujesz.
>>>
>> Dobra, ale liczę na upust :D
>
> Nie mów, że chcesz wrócić do X-DBGrida, bo i tak nie uwierzę ;-)
Skoro już tak sobie dywagujemy, to powiem Ci co mnie skłoniło do
nieużywania raz na zawsze.
Brak wsparcia dla FastReport'a - pisałem w tej sprawie dawno temu,
odpowiedź jaką dostałem była, eufemistycznie rzecz ujmując,
niesatysfakcjonująca.
A teraz mogę powiedzieć - wyszło i tak na moje, QR zdechł, a FR pojawił
się jako oficjalny Report Manager.
Ot, chichot historii...

>> Widzę, że w koncu (proszę nie bić, od dawna nie jestem w temacie
>> X-DBGirda) pojawił się footer w gidzie (pojawił się?)
>
> No pojawił się, tylko że to było w tym czasie, gdy wyszło Delphi 2007
> ;-), co
> łatwo sprawdzić w historii: http://www.x-files.pl/pl/download/whatsnew.html
>
>> to może czas iść za ciosem, a mam na myśli:
>> Tu ciut spartolony, bo zdecydowanie lepje jest wtedy kiedy można
>> zaznaczyć wiele pozycji na liście do filtrowania.
>
> Ja już nawet prawie skończyłem swój FilterBar w zeszłym roku, ale
> ostatecznie
> nie zdecydowałem się go udostępnić, bo nie byłem z niego do końca
> zadowolony
> i uznałem, że wymaga jednak kilku istotnych zmian. A potem pojawiło się XE2
> i trzeba było zająć się opracowaniem pakietów dla nowej wersji Delphi.
>
> Pewnie czas do niego wrócić, choć jak widzę po tych trzech różnych
> elementach
> w kategorii Filtering, to chyba chciałem zrobić zbyt dużo na raz w
> ramach mojego
> jednego FilterBar. Muszę sobie to na nowo przemyśleć i uporządkować.
OK.
Ale FilterBar zajmuje miejsce i jest używany przez 10-15% użytkowników;
u mnie domyślnie wyłączony.
Za to wszyscy namiętnie używają AutoFilter - bo to proste i skuteczne.
Pod maską i tak siedzi dokładnie ten sam silnik, a więc... do dzieła!

Przy okazji AutoFiltr - zwróć uwagę na bogate przetwarzanie filtrowania
dla typu TDateTime (chodzi o to, żeby z daty wyciągać i autmatycznie
filtroweać zakresy - np. ten tydzień, poprzednie dwa tygodnie, bieżący
misiąc, kwartał, rok - itd.), wtedy np. Neuron nie będzie musiał
implementować swojego mega-wypasionego-maskaratoro-iniektora daty :D

>> IncementalSearching
>> Czyli w aktywnej kolumnie piszemy sobie a grid to ładnie szuka i
>> podświetla wynik.
>
> To właściwie "wyjdzie samo" jak już będzie działający FilterBar. Jedyny
> problem,
> jaki tu występuje, to gdzie najlepiej będzie pokazać tekst pisany przez
> użytkownika?
Można nigdzie nie pokazywać, tak działa w DevExpress - user pisze, a
grid podświetla to co pasuje do wzorca (niestety, tylko pierwsze
wystąpienie).
A jak już koniecznie chcesz pokazywać, to polecam przyjrzenie się
przeglądarkom internetowym.

>> Stopka kolumn
>> Aby można tam pokazać dodtkowe dane - najczęściej będzie to pewnie
>> wynik działania funkcji agregującej na danych w kolumnie.
>
> To już jest dawno dostępne. Wprowadzone razem z podsumowaniami, ale tych
> dodatkowych wierszy stopki można sobie utworzyć wiele i umieszczać w nich
> różne dane. Wynik podsumowania kolumny, to tylko jedna z opcji.
Ekstra.
Tylko, że to jest mało przydatne - po co mieć kilka stopek? I tak
użytkownik tego nie ogarnia - lepiej zrobić coś innego, np. drukowanie
do FR'a :D

>> I teraz tak - ja rozumiem (z grubsza), jak działa taki grid i że nie
>> wszystko da się zrobić. I w tym przypadku nie chodzi o to, żeby grid
>> filtrował dane, pozyskiwał je automatycznie do listy AutoFilter itd.
>> Chodzi o to, żeby grid udostępniał API, gdzie obsługując odpowiednie
>> zdarzenia użytkownik może oprogramować takiego grida tak jak chce, nie
>> przejmując się sposobem prezentacji. Bo tę kwestię załatwia za niego
>> komponent.
>
> Tu się dokładnie z Tobą zgadzam, choć akurat sporo rzeczy można tu też
> przygotować automatycznie.
Zgoda - ale osobiście nie przesadzałbym z tą automatyką, czasem to
więcej przeszkadza niż pomogą. Nie ma problemu, jak można to wyłączyć i
całkowicie zmienić/zrezygnować z automatycznego zachowania.

--
wloochacz

jh

unread,
Apr 3, 2012, 5:56:21 AM4/3/12
to
To ja jeszcze dorzucę:
http://www.ehlib.com/dbgrideh1.htm

Pewnie znasz. Zwracam uwagę na ten układ master-detail. To naprawdę
wygodne. EhLib też jest oparty o standardowego grida. Jest filtrowanie,
sortowanie (lokalne/server - do wyboru, wspiera to AnyDAC). Grupowanie
działa oczywiście dla własnego in-memory datasetu, niemniej od biedy da
się to obejść też inaczej i nie jest aż tak ważne.

Gdybym w XDBGridzie miał to filtrowanie i master detail... :) Czasem
warto słuchać klientów :P I nie tylko obecnych, ale i potencjalnych :)

jh

Krzysztof Szyszka

unread,
Apr 3, 2012, 6:53:44 AM4/3/12
to
Użytkownik "wloochacz" napisał w wiadomości ...
>W dniu 2012-04-03 11:36, Krzysztof Szyszka pisze:
>> Użytkownik "wloochacz" napisał w wiadomości ...
>>> W dniu 2012-04-02 20:24, Krzysztof Szyszka pisze:
>>>> Użytkownik "Przemyslaw Osmanski" napisał w wiadomości ...
>>>>
>>>>> (choć kiedyś muszę się zagłębić w źródła żeby zrobić rysowania ala
>>>>> produkty InsERTu)
>>>>
>>>> Czy możesz rozwinąć ten temat? Co konkretnie potrzebujesz?
>>>> Może coś podpowiem, albo Ty mnie czymś zainspirujesz.
>>>>
>>> Dobra, ale liczę na upust :D
>>
>> Nie mów, że chcesz wrócić do X-DBGrida, bo i tak nie uwierzę ;-)
> Skoro już tak sobie dywagujemy, to powiem Ci co mnie skłoniło do nieużywania raz na zawsze.
> Brak wsparcia dla FastReport'a - pisałem w tej sprawie dawno temu, odpowiedź jaką dostałem była,
> eufemistycznie rzecz ujmując, niesatysfakcjonująca.

Za to była prawdziwa. Może nie nauczyłem się (i pewnie nigdy się nie
nauczę metod nowoczesnego marketingu), ale jeśli nie mam czegoś
w najbliższych planach, to mówię/piszę to otwarcie, z pełną świadomością
tego, że pytający poszuka czegoś innego u konkurencji, zamiast ściemniać
każdemu, że już za tydzień/miesiąc/kwartał dostanie to, o co pyta.

> A teraz mogę powiedzieć - wyszło i tak na moje, QR zdechł, a FR pojawił się jako oficjalny Report
> Manager.
> Ot, chichot historii...

Po drodze był/jest jeszcze RaveReport, do którego też mnie niektórzy
namawiali, ale ja zbyt dużo czasu poświęciłem na opracowanie TXQRGrida,
żeby kolejny raz uzależniać swój produkt, od kaprysów innych firm. W okresie
gdy powstawał TXQRGrid, QuickReport miał dla mnie jedną podstawową zaletę
- był dostarczany jako fragment VCLa przez Borlanda - zawsze razem z Delphi.

>>> Widzę, że w koncu (proszę nie bić, od dawna nie jestem w temacie
>>> X-DBGirda) pojawił się footer w gidzie (pojawił się?)
>>
>> No pojawił się, tylko że to było w tym czasie, gdy wyszło Delphi 2007
>> ;-), co
>> łatwo sprawdzić w historii: http://www.x-files.pl/pl/download/whatsnew.html
>>
>>> to może czas iść za ciosem, a mam na myśli:
>>>
>>> FilterRow
>>> http://demos.devexpress.com/aspxgridviewdemos/filtering/FilterRow.aspx
>>>
>>> AutoFilter (tu zwany Header Filter)
>>> http://demos.devexpress.com/aspxgridviewdemos/filtering/HeaderFilter.aspx
>>> Tu ciut spartolony, bo zdecydowanie lepje jest wtedy kiedy można
>>> zaznaczyć wiele pozycji na liście do filtrowania.
>>
>> Ja już nawet prawie skończyłem swój FilterBar w zeszłym roku, ale ostatecznie
>> nie zdecydowałem się go udostępnić, bo nie byłem z niego do końca zadowolony
>> i uznałem, że wymaga jednak kilku istotnych zmian. A potem pojawiło się XE2
>> i trzeba było zająć się opracowaniem pakietów dla nowej wersji Delphi.
>>
>> Pewnie czas do niego wrócić, choć jak widzę po tych trzech różnych elementach
>> w kategorii Filtering, to chyba chciałem zrobić zbyt dużo na raz w ramach mojego
>> jednego FilterBar. Muszę sobie to na nowo przemyśleć i uporządkować.
> OK.
> Ale FilterBar zajmuje miejsce i jest używany przez 10-15% użytkowników; u mnie domyślnie
> wyłączony.
> Za to wszyscy namiętnie używają AutoFilter - bo to proste i skuteczne.
> Pod maską i tak siedzi dokładnie ten sam silnik, a więc... do dzieła!

Chcesz powiedzieć, że wystarczy jak sobie podepnę to menu do filtrowania
pod te strzałki w nagłówkach kolumn, które już mam od dawna i mogę sobie
podarować cały mój misterny FilterBar? ;-)

> Przy okazji AutoFiltr - zwróć uwagę na bogate przetwarzanie filtrowania dla typu TDateTime (chodzi
> o to, żeby z daty wyciągać i autmatycznie filtroweać zakresy - np. ten tydzień, poprzednie dwa
> tygodnie, bieżący misiąc, kwartał, rok - itd.), wtedy np. Neuron nie będzie musiał implementować
> swojego mega-wypasionego-maskaratoro-iniektora daty :D

;-)

>>> IncementalSearching
>>> Czyli w aktywnej kolumnie piszemy sobie a grid to ładnie szuka i
>>> podświetla wynik.
>>
>> To właściwie "wyjdzie samo" jak już będzie działający FilterBar. Jedyny problem,
>> jaki tu występuje, to gdzie najlepiej będzie pokazać tekst pisany przez użytkownika?
> Można nigdzie nie pokazywać, tak działa w DevExpress - user pisze, a grid podświetla to co pasuje
> do wzorca (niestety, tylko pierwsze wystąpienie).
> A jak już koniecznie chcesz pokazywać, to polecam przyjrzenie się przeglądarkom internetowym.

Raczej myślałem o połączeniu tego z takim panelem do wyszukiwania,
jaki pojawia się w nowszych wersjach Delphi po naciśnięciu Ctrl+F.

>>> Stopka kolumn
>>> Aby można tam pokazać dodtkowe dane - najczęściej będzie to pewnie
>>> wynik działania funkcji agregującej na danych w kolumnie.
>>
>> To już jest dawno dostępne. Wprowadzone razem z podsumowaniami, ale tych
>> dodatkowych wierszy stopki można sobie utworzyć wiele i umieszczać w nich
>> różne dane. Wynik podsumowania kolumny, to tylko jedna z opcji.
> Ekstra.
> Tylko, że to jest mało przydatne - po co mieć kilka stopek?

Napierw piszesz, że byłoby potrzebne, a teraz, że mało przydatne ;-)
I powiedz mi, jak tu takiemu dogodzić?

> I tak użytkownik tego nie ogarnia - lepiej zrobić coś innego, np. drukowanie do FR'a :D

;-)

>>> I teraz tak - ja rozumiem (z grubsza), jak działa taki grid i że nie
>>> wszystko da się zrobić. I w tym przypadku nie chodzi o to, żeby grid
>>> filtrował dane, pozyskiwał je automatycznie do listy AutoFilter itd.
>>> Chodzi o to, żeby grid udostępniał API, gdzie obsługując odpowiednie
>>> zdarzenia użytkownik może oprogramować takiego grida tak jak chce, nie
>>> przejmując się sposobem prezentacji. Bo tę kwestię załatwia za niego
>>> komponent.
>>
>> Tu się dokładnie z Tobą zgadzam, choć akurat sporo rzeczy można tu też
>> przygotować automatycznie.
> Zgoda - ale osobiście nie przesadzałbym z tą automatyką, czasem to więcej przeszkadza niż pomogą.
> Nie ma problemu, jak można to wyłączyć i całkowicie zmienić/zrezygnować z automatycznego
> zachowania.

Akurat u mnie takie rzeczy zawsze można wyłączyć. Jak się bardzo postarasz,
to nawet da się wrócić do takiej funkcjonalności, jaka była w DBGridzie 10 lat
temu ;-)

Krzysztof Szyszka

unread,
Apr 3, 2012, 7:07:03 AM4/3/12
to
Użytkownik "jh" napisał w wiadomości ...
> To ja jeszcze dorzucę:
> http://www.ehlib.com/dbgrideh1.htm
>
> Pewnie znasz. Zwracam uwagę na ten układ master-detail. To naprawdę wygodne. EhLib też jest oparty
> o standardowego grida.

Prawdopodobnie już nie. Dymitry zrobił kilka fajnych rzeczy, ale domyślam
się jakim kosztem, bo na standardowym TCustomGrid nie da się ich uzyskać.

> Jest filtrowanie, sortowanie (lokalne/server - do wyboru, wspiera to AnyDAC). Grupowanie działa
> oczywiście dla własnego in-memory datasetu, niemniej od biedy da się to obejść też inaczej i nie
> jest aż tak ważne.
>
> Gdybym w XDBGridzie miał to filtrowanie i master detail... :) Czasem warto słuchać klientów :P I
> nie tylko obecnych, ale i potencjalnych :)

Powiedz mi, o jakie wsparcie dla AnyDAC Ci chodzi i co masz na myśli
pisząc niżej, żeby XDBGrida "nauczyć korzystać z takich makr w AnyDAC".

Przecież wystarczy jak dołączysz do projektu plik XDBGridADD.pas,
w którym jest rejestracja klas z AnyDAC, żeby XDBGrid prawidłowo
sortował dane i to bez żadnego dodatkowe drivera dla AnyDAC.

jh

unread,
Apr 3, 2012, 7:53:05 AM4/3/12
to
W dniu 03.04.2012 13:07, Krzysztof Szyszka pisze:

> Powiedz mi, o jakie wsparcie dla AnyDAC Ci chodzi i co masz na myśli
> pisząc niżej, żeby XDBGrida "nauczyć korzystać z takich makr w AnyDAC".

> Przecież wystarczy jak dołączysz do projektu plik XDBGridADD.pas,
> w którym jest rejestracja klas z AnyDAC, żeby XDBGrid prawidłowo
> sortował dane i to bez żadnego dodatkowe drivera dla AnyDAC.

No to ok, nie zgłębiłem Twojej dokumentacji w całości. Da-soft dołącza
własne pliczki z rejestracją AnyDAC dla określonych gridów (np. EhLib,
DeEx itd.).

Co do makr. Fakt, że może niekoniecznie musi to być częścią grida, bo
zależy od biblioteki dostępowej. Aczkolwiek z pobieżnego zerknięcia do
EhLib, widzę, że ma tego namiastkę w postaci wstawienia komentarza do
SQLowego zapytania (/*FILTER*/). Jak znajdzie, to odpowiednio przebuduje
zapytanie. W AnyDAC zwykle tworzę query w stylu:
select {if !top} top !top {fi} * from table {if !where} where !where
{fi} {if !order} order by !order {fi}

czy dla detali (m-d):
from table where masterid = :masterid {if !where} and !where {fi}

Jak potrzeba mi sortowania po stronie serwera to po prostu
MacroByName('order').AsRaw := 'ColA, ColB DESC' itd. A jak ma być
domyślnie to .Clear dla makra. Posługując się takimi makrami łatwo z
poziomu każdego grida, który obsłuży kliknięcie w tytuł zrobić
sortowanie z serwera bez zabawy w parsowanie SQLa, czy nawet
sprawdzania, czy tam już siedzi jakieś order by i ewentualnie
modyfikowania go. Podobnie z filtrem - macro where. U mnie wstawienie
query typu select w przypadku AnyDAC od razu "obudowuje go" go w makra.
Po prostu wygodne.

jh

Krzysztof Szyszka

unread,
Apr 3, 2012, 8:09:31 AM4/3/12
to
Użytkownik "jh" napisał w wiadomości ...
OK. Ale to jest wygodne dla Ciebie, a dla mojego XDBGrid zupełnie niepotrzebne.

Zobacz sobie, jaka metoda zmiany sortowania jest zarejestrowana domyślnie w pliku
XDBGridsADD.pas dla TADQuery, TADTable, TADMemTable. XDBGrid nic Ci nie
będzie zmieniał w zapytaniach SQLowych i nie potrzebuje żadnych driverów od
DA-SOFT. Wystarczy zarejestrować te klasy podobnie jak większość innych tam
zawartych.

jh

unread,
Apr 3, 2012, 8:27:32 AM4/3/12
to
W dniu 03.04.2012 14:09, Krzysztof Szyszka pisze:
> Zobacz sobie, jaka metoda zmiany sortowania jest zarejestrowana
> domyślnie w pliku
> XDBGridsADD.pas dla TADQuery, TADTable, TADMemTable. XDBGrid nic Ci nie
> będzie zmieniał w zapytaniach SQLowych i nie potrzebuje żadnych driverów od
> DA-SOFT. Wystarczy zarejestrować te klasy podobnie jak większość innych tam
> zawartych.

OK, przyjrzę się temu.

jh

wloochacz

unread,
Apr 3, 2012, 8:32:42 AM4/3/12
to
W dniu 2012-04-03 14:27, jh pisze:
Tam nie ma nic do oglądania - sortuje po stronie klienta i tyle,
podobnie jak dla ADO.

Za to ja mam pytanie do X-DBGrida; czy owo sortowanie zmienia
IndeFieldNames? Czy jeśli tak, to pamięta o tym że w trybie keszowania
detali nadpisanie wartości do tej właściwości rozpindrala całe keszowanie?
I jeśli tak - to ja dziękuję za taki automat :D

--
wloochacz

Krzysztof Szyszka

unread,
Apr 3, 2012, 8:45:50 AM4/3/12
to
Użytkownik "wloochacz" napisał w wiadomości ...
> Tam nie ma nic do oglądania - sortuje po stronie klienta i tyle, podobnie jak dla ADO.
>
> Za to ja mam pytanie do X-DBGrida; czy owo sortowanie zmienia IndeFieldNames? Czy jeśli tak, to
> pamięta o tym że w trybie keszowania detali nadpisanie wartości do tej właściwości rozpindrala
> całe keszowanie?
> I jeśli tak - to ja dziękuję za taki automat :D

Tak. Domyślnie zarejestrowana zmiana sortowania korzysta z IndexFieldNames.
Przeczytaj jeszcze raz swój zarzut i zastanów się do kogo skierować tą uwagę ;-)

A teraz ja mam pytanie do Ciebie, który sposób zmiany sortowania w AnyDAC
nie "rozpindrala całego keszowania"?

wloochacz

unread,
Apr 3, 2012, 8:54:44 AM4/3/12
to
W dniu 2012-04-03 14:45, Krzysztof Szyszka pisze:
> Użytkownik "wloochacz" napisał w wiadomości ...
>> Tam nie ma nic do oglądania - sortuje po stronie klienta i tyle,
>> podobnie jak dla ADO.
>>
>> Za to ja mam pytanie do X-DBGrida; czy owo sortowanie zmienia
>> IndeFieldNames? Czy jeśli tak, to pamięta o tym że w trybie keszowania
>> detali nadpisanie wartości do tej właściwości rozpindrala całe
>> keszowanie?
>> I jeśli tak - to ja dziękuję za taki automat :D
>
> Tak. Domyślnie zarejestrowana zmiana sortowania korzysta z IndexFieldNames.
> Przeczytaj jeszcze raz swój zarzut i zastanów się do kogo skierować tą
> uwagę ;-)
Do Ciebie - to Twój kod nie bierze pod uwagę otoczenia i obligatoryjnie
zmienia ustawienia.

> A teraz ja mam pytanie do Ciebie, który sposób zmiany sortowania w AnyDAC
> nie "rozpindrala całego keszowania"?
1) Zmieniając order by - trywialne
2) Zachowując IndexFieldNames, kiedy włączono keszowanie detali - trzeba
po prostu swoje pola po których ma się odbywać sortowanie dopisać na
końcu - banał.

--
wloochacz

Krzysztof Szyszka

unread,
Apr 3, 2012, 9:13:18 AM4/3/12
to
Użytkownik "wloochacz" napisał w wiadomości ...
>W dniu 2012-04-03 14:45, Krzysztof Szyszka pisze:
>> Użytkownik "wloochacz" napisał w wiadomości ...
>>> Tam nie ma nic do oglądania - sortuje po stronie klienta i tyle,
>>> podobnie jak dla ADO.
>>>
>>> Za to ja mam pytanie do X-DBGrida; czy owo sortowanie zmienia
>>> IndeFieldNames? Czy jeśli tak, to pamięta o tym że w trybie keszowania
>>> detali nadpisanie wartości do tej właściwości rozpindrala całe
>>> keszowanie?
>>> I jeśli tak - to ja dziękuję za taki automat :D
>>
>> Tak. Domyślnie zarejestrowana zmiana sortowania korzysta z IndexFieldNames.
>> Przeczytaj jeszcze raz swój zarzut i zastanów się do kogo skierować tą
>> uwagę ;-)
> Do Ciebie - to Twój kod nie bierze pod uwagę otoczenia i obligatoryjnie zmienia ustawienia.

Nie tyle zmienia, co z nich korzysta, bo Ty mu kazałeś używać takiej metody
(poprzez rejestrację klasy).

>> A teraz ja mam pytanie do Ciebie, który sposób zmiany sortowania w AnyDAC
>> nie "rozpindrala całego keszowania"?
> 1) Zmieniając order by - trywialne

Chcesz tak, to wybierz inną metodę - masz ją nawet zakomentowaną w tym samym pliku.

> 2) Zachowując IndexFieldNames, kiedy włączono keszowanie detali - trzeba po prostu swoje pola po
> których ma się odbywać sortowanie dopisać na końcu - banał.

To zrób to. Wystarczy obsłużyć jedno zdarzenie:

procedure TForm1.XDBGrid1OrderChanged(Sender: TObject);
begin
with TXDBGrid(Sender) do ChangeDataSetOrder(TwojePola+OrderFields);
end;

Pokahontas

unread,
Apr 3, 2012, 9:59:52 AM4/3/12
to
W dniu 02.04.2012 10:24, Krzysztof Szyszka pisze:
> Witam,
>
> miło mi poinformować, że ukazała się nowa wersja pakietów X-DBGrid
> Component 5.1
> i X-Files Components 5.1.
>
> .........
>
> Krzysztof Szyszka, X-Files Software
> Developer of X-Files Components
> Borland/CodeGear/Embarcadero Technology Partner
> ___________________________________________
> Website: http://www.x-files.pl/pl/ E-mail: ne...@x-files.pl
>

Witam.

Ściągnąłem wersję trial X-Files i niestety instalacja kończy się
niepowodzeniem (Runtime error 217 at 00525F90).

Przy próbie wejścia do Delphi, otrzymuje komunikat o niepowodzeniu
ładowania pakietu i pytanie czy próbować ładować go ponownie przy
następnym uruchomieniu Delphi.

Moja wersja Delphi to:
Embarcadero® Delphi® XE2 Version 16.0.4358.45540
Copyright © 2011 Embarcadero Technologies, Inc. All Rights Reserved.

Instalacja samego XDbGrida przebiega prawidłowo i wszystko działa jak
należy.

Jakieś sugestie jak poprawnie zainstalować pakiet X-Files.

Pozdrawiam
Ryszard Leszczyński

Krzysztof Szyszka

unread,
Apr 3, 2012, 11:44:21 AM4/3/12
to
Użytkownik "Pokahontas" napisał w wiadomości ...
> Ściągnąłem wersję trial X-Files i niestety instalacja kończy się niepowodzeniem (Runtime error 217
> at 00525F90).
>
> Przy próbie wejścia do Delphi, otrzymuje komunikat o niepowodzeniu ładowania pakietu i pytanie
> czy próbować ładować go ponownie przy następnym uruchomieniu Delphi.
>
> Moja wersja Delphi to:
> Embarcadero® Delphi® XE2 Version 16.0.4358.45540
> Copyright © 2011 Embarcadero Technologies, Inc. All Rights Reserved.
>
> Instalacja samego XDbGrida przebiega prawidłowo i wszystko działa jak należy.
>
> Jakieś sugestie jak poprawnie zainstalować pakiet X-Files.

Nie nie jest przypadkiem tak, że próbujesz zainstalować jednocześnie
obydwa pakiety ? Pakiet X-Files zawiera już w sobie wszystkie komponenty
zawarte również w pakiecie X-DBGrid dlatego, żeby zainstalować jeden z
nich należy odinstalować drugi, albo nie będzie on aktywny, o czym informuję
Cię Delphi w tym komunikacie.

--
pozdrowienia
Krzysztof Szyszka, X-Files Software
Developer of X-Files Components
Borland/CodeGear/Embarcadero Technology Partner

Krzysztof Szyszka

unread,
Apr 3, 2012, 1:08:45 PM4/3/12
to
Użytkownik "wloochacz" napisał w wiadomości ...
>W dniu 2012-04-03 14:45, Krzysztof Szyszka pisze:
>> Użytkownik "wloochacz" napisał w wiadomości ...
>>> Tam nie ma nic do oglądania - sortuje po stronie klienta i tyle,
>>> podobnie jak dla ADO.
>>>
>>> Za to ja mam pytanie do X-DBGrida; czy owo sortowanie zmienia
>>> IndeFieldNames? Czy jeśli tak, to pamięta o tym że w trybie keszowania
>>> detali nadpisanie wartości do tej właściwości rozpindrala całe
>>> keszowanie?
>>> I jeśli tak - to ja dziękuję za taki automat :D
>>
>> Tak. Domyślnie zarejestrowana zmiana sortowania korzysta z IndexFieldNames.
>> Przeczytaj jeszcze raz swój zarzut i zastanów się do kogo skierować tą uwagę ;-)
> Do Ciebie - to Twój kod nie bierze pod uwagę otoczenia i obligatoryjnie zmienia ustawienia.

A tak jeszcze wracając do tego, czy to młotek jest winien, że można czasem
dostać po paluchach, sugerowałbym jednak zgłosić ten problem autorowi AnyDAC,
jeśli rzeczywiście przy normalnym używaniu właściwości IndexFieldNames można
coś tam rozpindolić, zamiast zwalać winę na młotek, który z tego korzysta.

Taka metoda zmiany sortowania jest używana domyślnie nie tylko dla TADQuery,
ale również dla kilku innych DataSetów (np. TUniQuery z DevArtu, TADODataSet
i wielu memory table) i niczego nie "rozpindala" podczas zmiany sortowania w
DatailDataSet w relacji master-detail.

Dla TADODataSet masz nawet wprost napisane w dokumentacji, że:
"IndexFieldNames may be used to set the sort order for the detail table
in a master-detail link, increasing the performance of the link. However,
use of IndexFieldNames is not required for master-detail links."

Jeśli więc AnyDAC ma być rzeczywiście najlepszym DataSetem, to nie powinien
być gorszy w tej podstawowej funkcjonalności od zwykłego TADODataSet.
Jeśli już implementuje funkcjonalność zmiany sortowania przez IndexFieldNames,
to powinien to robić prawidłowo w każdych warunkach, niezależnie od tego, jakie
inne superopcje zostaną włączone przez użytkownika.

wloochacz

unread,
Apr 3, 2012, 4:11:37 PM4/3/12
to
W dniu 2012-04-03 19:08, Krzysztof Szyszka pisze:
> Użytkownik "wloochacz" napisał w wiadomości ...
>> W dniu 2012-04-03 14:45, Krzysztof Szyszka pisze:
>>> Użytkownik "wloochacz" napisał w wiadomości ...
>>>> Tam nie ma nic do oglądania - sortuje po stronie klienta i tyle,
>>>> podobnie jak dla ADO.
>>>>
>>>> Za to ja mam pytanie do X-DBGrida; czy owo sortowanie zmienia
>>>> IndeFieldNames? Czy jeśli tak, to pamięta o tym że w trybie keszowania
>>>> detali nadpisanie wartości do tej właściwości rozpindrala całe
>>>> keszowanie?
>>>> I jeśli tak - to ja dziękuję za taki automat :D
>>>
>>> Tak. Domyślnie zarejestrowana zmiana sortowania korzysta z
>>> IndexFieldNames.
>>> Przeczytaj jeszcze raz swój zarzut i zastanów się do kogo skierować
>>> tą uwagę ;-)
>> Do Ciebie - to Twój kod nie bierze pod uwagę otoczenia i
>> obligatoryjnie zmienia ustawienia.
>
> A tak jeszcze wracając do tego, czy to młotek jest winien, że można czasem
> dostać po paluchach, sugerowałbym jednak zgłosić ten problem autorowi
> AnyDAC,
> jeśli rzeczywiście przy normalnym używaniu właściwości IndexFieldNames
> można
> coś tam rozpindolić, zamiast zwalać winę na młotek, który z tego korzysta.
Na Twoim miejscu podziękowałbym za taką informację, bo jet użyteczna.
Ale to ja bym zrobił, ale Ty wolisz udowadniać rację.
OK - Twój wybór.

> Taka metoda zmiany sortowania jest używana domyślnie nie tylko dla
> TADQuery,
> ale również dla kilku innych DataSetów (np. TUniQuery z DevArtu,
> TADODataSet
> i wielu memory table) i niczego nie "rozpindala" podczas zmiany
> sortowania w
> DatailDataSet w relacji master-detail.
>
> Dla TADODataSet masz nawet wprost napisane w dokumentacji, że:
> "IndexFieldNames may be used to set the sort order for the detail table
> in a master-detail link, increasing the performance of the link. However,
> use of IndexFieldNames is not required for master-detail links."
> Jeśli więc AnyDAC ma być rzeczywiście najlepszym DataSetem, to nie powinien
> być gorszy w tej podstawowej funkcjonalności od zwykłego TADODataSet.
Oczywiście.
I oba mają porównywalną funkcjonalność do keszowania detali znaną z
AnyDAC...
Oba pewnie też mogą mieć indeksy zakładane w locie oparte na wyrażeniach...
Mogę tak długo, ale to nie ma sensu - generalnie mam gdzieś, który jest
lepszy czy najlepszy. Dla mnie jest najlepszy ten, który najlepiej znam.
Tyle.

> Jeśli już implementuje funkcjonalność zmiany sortowania przez
> IndexFieldNames,
> to powinien to robić prawidłowo w każdych warunkach, niezależnie od
> tego, jakie
> inne superopcje zostaną włączone przez użytkownika.
Jest w tym jakaś racja. Rację też ma twórca AnyDAC - bo taką przyjął
konwencję i szlus.
Co do tego, że Twój kod jest poprawny - nie jest, łamie konwencję
przyjętą w AnyDAC. Skoro dopisałeś jakiś kod, który korzysta z AnyDAC -
to trzymaj się konwencji.
To chyba nie jest takie trudne?

--
wloochacz

Krzysztof Szyszka

unread,
Apr 4, 2012, 1:58:51 AM4/4/12
to
Użytkownik "wloochacz" napisał w wiadomości ...
>> Jeśli już implementuje funkcjonalność zmiany sortowania przez IndexFieldNames,
>> to powinien to robić prawidłowo w każdych warunkach, niezależnie od tego, jakie
>> inne superopcje zostaną włączone przez użytkownika.
> Jest w tym jakaś racja. Rację też ma twórca AnyDAC - bo taką przyjął konwencję i szlus.
> Co do tego, że Twój kod jest poprawny - nie jest, łamie konwencję przyjętą w AnyDAC. Skoro
> dopisałeś jakiś kod, który korzysta z AnyDAC - to trzymaj się konwencji.
> To chyba nie jest takie trudne?

Sądzisz, że jak wyjątek od zasad nazwiesz konwencją, to udowodnisz, kto ma rację?

Ja nie musiałem dopisywać żadnego specjalnego kodu do obsługi AnyDAC. Ten sam
kod jest rejestrowany od wielu lat dla kilkunastu różnych klas pochodzących od różnych
dostawców. W czasach kiedy go testowałem z AnyDAC nie było żadnego keszowania
detali, więc niech inni czytający tą dyskusję rozstrzygają, kto i kiedy złamał tą "konwencję",
bo Ciebie i tak nie przekonam.

Jedyny zysk z tej dyskusji z Tobą jest taki, że Ci co używają X-DBGrida z AnyDAC będa
wiedzieli jak sobie poradzić z tym wyjątkiem, bo konkretne rozwiązania podałem już wcześniej,
a na odrobinę obiektywizmu u Ciebie i tak nie mam co lczyć ;-)

Roman Wilk

unread,
Apr 4, 2012, 2:02:16 AM4/4/12
to
> Website:http://www.x-files.pl/ E-mail: n...@x-files.pl

Tp prawda (przeczytałem całą dyskusję), obiektywizm u "wlochacza" po
prostu nie występuje :)

Pokahontas

unread,
Apr 4, 2012, 5:34:53 AM4/4/12
to
W dniu 03.04.2012 17:44, Krzysztof Szyszka pisze:

>
> Nie nie jest przypadkiem tak, że próbujesz zainstalować jednocześnie
> obydwa pakiety ? Pakiet X-Files zawiera już w sobie wszystkie komponenty
> zawarte również w pakiecie X-DBGrid dlatego, żeby zainstalować jeden z
> nich należy odinstalować drugi, albo nie będzie on aktywny, o czym
> informuję
> Cię Delphi w tym komunikacie.
>

Dziękuję za odzew.
Początkowo zainstalowałem pakiet X-DBGrid. Ponieważ bardzo mi się
spodobał postanowiłem bliżej przyjrzeć się pakietowi X-Files. Ściągnąłem
go, odinstalowałem X-DBGrid i zainstalowałem X-Files.
Instalacja kończy się oknem z następującym komunikatem:
-----------------------------------------------------------------------
The X-Files Components package has been installed. The following
components have been registered on:

Data Controls page: TXDBGrid, TXDBColumnsDialog,
TXDBPrintColumnsDialog, TXQRGrid(*), TXDBNavigator, TXDBText,
TXDBCheckBox, TXDBRadioGroup.

X-Files page: TXFButton, TXFBitBtn, TXFSpeedButton, TXFLabel,
TXFStaticText, TXFCheckBox, TXFRadioButton, TXFGroupBox, TXFRadioGroup,
TXFCheckGroup, TXFPanel, TXFUpDown, TXFStatusBar, TXFTrackBar,
TXFProgressBar.

(*) - TXQRGrid has been registered only for C++Builder/Delphi 5, 6, 7.
--------------------------------------------------------------------------
co sugeruje, że instalacja się udała.

Pojawia się nowe okno w którym zaznaczam "View the ReadMe file" oraz
"Lunch XDBGridDesign for Delphi XE2 Win32". ReadMe wyświetla się bez
problemu, natomiast uruchamianie XDBGridDesign kończy się po około 15
sekundach komunikatem "Runtime error 217 at 00525F90".

Po uruchomieniu IDE na liście pakietów widać pakiet X-Files Component
trial 5.1 ale jest on nieaktywna, a każda próba włączenia go kończy się
oknem błędu bez żadnego opisu.

Ponieważ posiadam również licencje na Delphi XE, 2007 i 5 próbowałem
zainstalować pakiet X-Files w tych środowiskach i instalacja przebiega
bezproblemowo.

W sumie nie mam już pomysłu co jeszcze mógłbym sprawdzić.

Pozdrawiam
Ryszard Leszczyński

Krzysztof Szyszka

unread,
Apr 4, 2012, 7:08:53 AM4/4/12
to
Użytkownik "Pokahontas" napisał w wiadomości ...
>W dniu 03.04.2012 17:44, Krzysztof Szyszka pisze:
>
>>
>> Nie nie jest przypadkiem tak, że próbujesz zainstalować jednocześnie
>> obydwa pakiety ? Pakiet X-Files zawiera już w sobie wszystkie komponenty
>> zawarte również w pakiecie X-DBGrid dlatego, żeby zainstalować jeden z
>> nich należy odinstalować drugi, albo nie będzie on aktywny, o czym
>> informuję
>> Cię Delphi w tym komunikacie.
>>
>
> Dziękuję za odzew.
> Początkowo zainstalowałem pakiet X-DBGrid. Ponieważ bardzo mi się spodobał postanowiłem bliżej
> przyjrzeć się pakietowi X-Files. Ściągnąłem go, odinstalowałem X-DBGrid i zainstalowałem X-Files.
> Instalacja kończy się oknem z następującym komunikatem:
> -----------------------------------------------------------------------
> The X-Files Components package has been installed. The following components have been registered
> on:
>
> Data Controls page: TXDBGrid, TXDBColumnsDialog, TXDBPrintColumnsDialog, TXQRGrid(*),
> TXDBNavigator, TXDBText, TXDBCheckBox, TXDBRadioGroup.
>
> X-Files page: TXFButton, TXFBitBtn, TXFSpeedButton, TXFLabel, TXFStaticText, TXFCheckBox,
> TXFRadioButton, TXFGroupBox, TXFRadioGroup, TXFCheckGroup, TXFPanel, TXFUpDown, TXFStatusBar,
> TXFTrackBar, TXFProgressBar.
>
> (*) - TXQRGrid has been registered only for C++Builder/Delphi 5, 6, 7.
> --------------------------------------------------------------------------
> co sugeruje, że instalacja się udała.
>
> Pojawia się nowe okno w którym zaznaczam "View the ReadMe file" oraz "Lunch XDBGridDesign for
> Delphi XE2 Win32". ReadMe wyświetla się bez problemu,

Dotąd, czyli właściwie całą instalację pakietów mamy wykonaną OK.

> natomiast uruchamianie XDBGridDesign kończy się po około 15 sekundach komunikatem "Runtime error
> 217 at 00525F90".

Potem następuje kompilacja programów przykładowych z użyciem
zainstalowanego pakietu, żeby uruchomić program XDBGridDesign.

Sprawdź, czy wszystkie programy się skompilowały, czy też nie.
Najprościej będzie obejrzeć, czy wszystkie programy mają swoje
ikonki w Windows->Wszystke Programy->X-Files Software ->
X-Files Components 5.1->Delphi XE2 Demos.

Możesz też ponownie uruchomić kompilację programów przykładowych
przy użyciu pliku XFilesDemos.bat, żeby zobaczyć ewentualne błędy,
jeśli wystąpiły jakieś podczas kompilacji, choć to i tak nie wytłumaczy,
dlaczego zainstalowany pakiet jest nieaktywny w środowisku Delphi.

> Po uruchomieniu IDE na liście pakietów widać pakiet X-Files Component trial 5.1 ale jest on
> nieaktywna, a każda próba włączenia go kończy się oknem błędu bez żadnego opisu.
>
> Ponieważ posiadam również licencje na Delphi XE, 2007 i 5 próbowałem zainstalować pakiet X-Files w
> tych środowiskach i instalacja przebiega bezproblemowo.
>
> W sumie nie mam już pomysłu co jeszcze mógłbym sprawdzić.

Skoro na pewno nie masz na liście pakietu X-DBGrid Component 5.1,
to wygląda na to, że pakiet design-time nie może znaleźć jakiegoś
pakietu run-time, z którego korzysta, ale X-Files Components korzysta
z tych samych pakietów run-time, co pakiet X-DBGrid Component,
który podobno zainstalował Ci się i działał prawidłowo.

Wszystkie pakiety run-time dla XE2 powinny być w katalogu ..\RAD Studio\9.0\Bin
i katalog ten powinien być dodany do PATH podczas instalacji Delphi XE2.
Sprawdź, czy jest tam również pakiet VCLXFiles160.bpl.

Wykonałem przed chwilą instalację pakietu Trial na swoim komputerze
i wszystko zainstalowało się poprawnie, więc na razie nic konkretnego
nie potrafię Ci doradzić.

Czy możesz podać jaką wersję Delphi XE2 posiadasz?
Czy ktoś kto ma Delphi XE2 mógłby testowo zainstalować tego Triala u siebie?

Krzysztof Szyszka

unread,
Apr 4, 2012, 7:27:22 AM4/4/12
to
Użytkownik "Pokahontas" napisał w wiadomości ...
> Moja wersja Delphi to:
> Embarcadero® Delphi® XE2 Version 16.0.4358.45540
> Copyright © 2011 Embarcadero Technologies, Inc. All Rights Reserved.
>
> Instalacja samego XDbGrida przebiega prawidłowo i wszystko działa jak należy.
>
> Jakieś sugestie jak poprawnie zainstalować pakiet X-Files.

Jeszcze jedna sugestia, choć w zasadzie to nie powinno mieć znaczenia.

X-Files Components 5.1 zostało skompilowane po zainstalowaniu Update 4,
czyli dla Embarcadero® Delphi® XE2 Version 16.0.4429.46931

--
pozdrowienia
Krzysztof Szyszka, X-Files Software
Developer of X-Files Components
Borland/CodeGear/Embarcadero Technology Partner

Pokahontas

unread,
Apr 4, 2012, 8:19:29 AM4/4/12
to
W dniu 04.04.2012 13:08, Krzysztof Szyszka pisze:

>
> Skoro na pewno nie masz na liście pakietu X-DBGrid Component 5.1,
> to wygląda na to, że pakiet design-time nie może znaleźć jakiegoś
> pakietu run-time, z którego korzysta, ale X-Files Components korzysta
> z tych samych pakietów run-time, co pakiet X-DBGrid Component,
> który podobno zainstalował Ci się i działał prawidłowo.
>
> Wszystkie pakiety run-time dla XE2 powinny być w katalogu ..\RAD
> Studio\9.0\Bin
> i katalog ten powinien być dodany do PATH podczas instalacji Delphi XE2.
> Sprawdź, czy jest tam również pakiet VCLXFiles160.bpl.
>
> Wykonałem przed chwilą instalację pakietu Trial na swoim komputerze
> i wszystko zainstalowało się poprawnie, więc na razie nic konkretnego
> nie potrafię Ci doradzić.
>
> Czy możesz podać jaką wersję Delphi XE2 posiadasz?
> Czy ktoś kto ma Delphi XE2 mógłby testowo zainstalować tego Triala u
> siebie?
>

Wersję Delphi podawałam w pierwszym poście:
Embarcadero® Delphi® XE2 Version 16.0.4358.45540
Copyright © 2011 Embarcadero Technologies, Inc. All Rights Reserved.
Instaled updates:
Delphi XE2 and C++Builder XE2 Update3

Uprzedzając pytanie o poprawkę Update 4, na stronie Embercadero podano,
że dla mojej wersji Delphi nie jest ona potrzebna.

Po instalacji X-File sprawdziłem obecność pakietów bpl w katalogu
C:\Program Files\Embarcadero\RAD Studio\9.0\bin, znalazłem tam dwa pliki
DCLXFiles160.bpl i DCLXFiles160.dcp. Zmienna systemowa PATH zawiera
katalog C:\Program Files\Embarcadero\RAD Studio\9.0\bin.

Co do instalacji X-Files na innych komputerach, to sprawdziłem że
wszytko instaluje się poprawnie więc wychodzi na to, że moje kłopoty są
jednostkowe i wynikają z błędnej konfiguracji mojego systemu.

Nie chce mi się przeinstalowywać Delphi ale podejrzewam, że to by
pomogło. Na razie zadowolę się testowaniem X-DBGrida, bo o niego
najbardziej mi chodzi.

Jeszcze raz dziękuję za pomoc i zainteresowanie.

Pozdrawiam
Ryszard Leszczyński

jh

unread,
Apr 4, 2012, 8:21:42 AM4/4/12
to
W dniu 04.04.2012 13:08, Krzysztof Szyszka pisze:
> Czy ktoś kto ma Delphi XE2 mógłby testowo zainstalować tego Triala u siebie?

Ja zainstalowałem - żadnych problemów. Mam Update 4 (16.0.4429.46931).
Nie ma chyba tylko dołączonego XDBGridADD.dcu, ale reszta działa poprawnie.

jh


Krzysztof Szyszka

unread,
Apr 4, 2012, 8:55:24 AM4/4/12
to
Użytkownik "jh" napisał w wiadomości ...
Nie ma pliku *.dcu, bo jest *.pas. Jak go użyjesz, to *.dcu samo się utworzy.
A dodatkowo możesz sam sobie wybrać, jakie metody sortowania zarejestrować i dla jakich klas.

P.S.
Dzięki za potwierdzenie, że z instalką wszystko jest OK.

jh

unread,
Apr 4, 2012, 9:31:22 AM4/4/12
to
W dniu 04.04.2012 14:55, Krzysztof Szyszka pisze:
>> Nie ma chyba tylko
>> dołączonego XDBGridADD.dcu, ale reszta działa poprawnie.
>
> Nie ma pliku *.dcu, bo jest *.pas. Jak go użyjesz, to *.dcu samo się
> utworzy.

Aż tak źle ze mną nie jest, wiem kiedy powstaje dcu ;) Problem w tym, że
pas też nie ma. Sądziłem, że w trialu nie dajesz źródła tego pliku,
tylko skompilowany unit, ale po instalacji (cały pakiet X-Files) nie ma
ani dcu, ani pas.

jh

Krzysztof Szyszka

unread,
Apr 4, 2012, 12:43:05 PM4/4/12
to
Użytkownik "jh" napisał w wiadomości ...
A gdzie go szukałeś? Jest w tym samym katalogu, gdzie instalują się pliki *.dcu
dla XE2, a katalog ten jest dodawany przez Instalatora do Library Path.

Zobacz do ..\RAD Studio\9.0\XFiles. Powinny tam być 4 pliki *.pas, a jeden z nich
jest nawet używany w programach przykładowych (XDBGridsADO.pas), więc bez
niego kompilacja jednego z przykładów by się nie powiodła.

Albo dopisz XDBGridsADD do uses dowolnego programu i go przekompiluj,
a następnie kliknij na tej nazwie modułu prawym klawiszem myszy i wybierz
"Find Declaration".

jh

unread,
Apr 4, 2012, 1:08:46 PM4/4/12
to
Sugerowałem się tym, co napisałeś:

> Przecież wystarczy jak dołączysz do projektu plik XDBGridADD.pas

> Albo dopisz XDBGridsADD

I chyba już wszystko jasne :)

jh

Krzysztof Szyszka

unread,
Apr 4, 2012, 1:16:41 PM4/4/12
to
Użytkownik "jh" napisał w wiadomości ...
No to oświeć mnie, bo nadal nie wiem, na czym polegał problem ;-)

jh

unread,
Apr 4, 2012, 2:23:19 PM4/4/12
to
W dniu 04.04.2012 19:16, Krzysztof Szyszka pisze:
> Użytkownik "jh" napisał w wiadomości ...
>> Sugerowałem się tym, co napisałeś:
>>
>> > Przecież wystarczy jak dołączysz do projektu plik XDBGridADD.pas
>>
>>> Albo dopisz XDBGridsADD
>>
>> I chyba już wszystko jasne :)
>
> No to oświeć mnie, bo nadal nie wiem, na czym polegał problem ;-)


Grids, nie Grid - zabrakło literki.

jh

Krzysztof Szyszka

unread,
Apr 4, 2012, 2:33:00 PM4/4/12
to
Użytkownik "jh" napisał w wiadomości ...
>W dniu 04.04.2012 19:16, Krzysztof Szyszka pisze:
>> Użytkownik "jh" napisał w wiadomości ...
>>> Sugerowałem się tym, co napisałeś:
>>>
>>> > Przecież wystarczy jak dołączysz do projektu plik XDBGridADD.pas
>>>
>>>> Albo dopisz XDBGridsADD
>>>
>>> I chyba już wszystko jasne :)
>>
>> No to oświeć mnie, bo nadal nie wiem, na czym polegał problem ;-)
>
>
> Grids, nie Grid - zabrakło literki.

No sorrrry. Teraz wszystko jasne :-)

Ale powiem Ci, że tego nie zauważyłem nawet
jak napisałeś te linijki jedna pod drugą.

wloochacz

unread,
Apr 4, 2012, 3:25:20 PM4/4/12
to
W dniu 2012-04-04 08:02, Roman Wilk pisze:
> Tp prawda (przeczytałem całą dyskusję), obiektywizm u "wlochacza" po
> prostu nie występuje:)
Parafrazując Ciebie, napisze tak: Ty "wlik" nie jesteś najbardziej
obiektywną osobą na tej grupie i nie sądzę aby cokolwiek dawało Ci prawo
do pisania czegokolwiek w takim kontekście.

To przy okazji wątku "ClientDatSet i Blob'y + D2010" oraz "Dlaczego w
ERP'e MemoryDataSet moim zdaniem jest optymalny" (oczywiśćie zdaniem
Romana Wilka, nie moim).
Ja rozumiem, że to co tam napisałem nie podoba Ci się do dziś.
Ale to wcale nie znaczy, że jesteś obiektywny w ocenie mojej obiektywności.

--
wloochacz

wloochacz

unread,
Apr 4, 2012, 3:32:06 PM4/4/12
to
W dniu 2012-04-04 07:58, Krzysztof Szyszka pisze:
> Użytkownik "wloochacz" napisał w wiadomości ...
>>> Jeśli już implementuje funkcjonalność zmiany sortowania przez
>>> IndexFieldNames,
>>> to powinien to robić prawidłowo w każdych warunkach, niezależnie od
>>> tego, jakie
>>> inne superopcje zostaną włączone przez użytkownika.
>> Jest w tym jakaś racja. Rację też ma twórca AnyDAC - bo taką przyjął
>> konwencję i szlus.
>> Co do tego, że Twój kod jest poprawny - nie jest, łamie konwencję
>> przyjętą w AnyDAC. Skoro dopisałeś jakiś kod, który korzysta z AnyDAC
>> - to trzymaj się konwencji.
>> To chyba nie jest takie trudne?
>
> Sądzisz, że jak wyjątek od zasad nazwiesz konwencją, to udowodnisz, kto
> ma rację?
Szczerze? Mało mnie to obchodzi, zwracam Ci uwagę na źródło
potencjalnych problemów - ale uprałeś się ich nie zauważać.
Podobnie, jak ja uparłem się nie zauważać problemów z kolejnością
wywołań metod w delegatach :D
I nie, nie mam z tym problemów - jak na razie.

> Ja nie musiałem dopisywać żadnego specjalnego kodu do obsługi AnyDAC.
> Ten sam
> kod jest rejestrowany od wielu lat dla kilkunastu różnych klas
> pochodzących od różnych
> dostawców. W czasach kiedy go testowałem z AnyDAC nie było żadnego
> keszowania
> detali, więc niech inni czytający tą dyskusję rozstrzygają, kto i kiedy
> złamał tą "konwencję",
> bo Ciebie i tak nie przekonam.
Bo sprawdziłeś wszystkie komponenty do jednego mianownika - a to tak nie
działa. Jak już pokusiłeś się o zrobienie adapterów do AnyDAC, to może
warto by było zrobić to dobrze?

A zresztą - kto używa AnyDAC'a + keszowania detali + automatu do
sortowania X-DBgrida niech sam sobie oceni jak by chciał aby to działało.
Ale OK, nie będzie - jest dobrze.

A jeszcze jedno pytanie (bo mi się przypomniało) - a jak z sortowaniem
pól kalkulowanych? Też są wciskane na siłę do IndexFieldNames (co
ciekawe, to będzie działać poprawnie - ale nie w każdym przypadku)?
Ja rozumiem, że wszystko mogę sobie oprogramować - ale skoro tak, to na
cholerę taki automat który czasem działa dobrze, a czasem nie?
> Jedyny zysk z tej dyskusji z Tobą jest taki, że Ci co używają X-DBGrida
> z AnyDAC będa
> wiedzieli jak sobie poradzić z tym wyjątkiem, bo konkretne rozwiązania
> podałem już wcześniej,
> a na odrobinę obiektywizmu u Ciebie i tak nie mam co lczyć ;-)
Acha - a więc teraz jestem nieobiektywny, bo się czepiam niedoróbek?
OK - nie będę się czepiał, bo w końcu nie jestem użytkownikiem.

--
wloochacz


Krzysztof Szyszka

unread,
Apr 4, 2012, 4:10:10 PM4/4/12
to
Użytkownik "wloochacz" napisał w wiadomości ...
>> Sądzisz, że jak wyjątek od zasad nazwiesz konwencją, to udowodnisz, kto ma rację?
> Szczerze? Mało mnie to obchodzi, zwracam Ci uwagę na źródło potencjalnych problemów - ale uprałeś
> się ich nie zauważać.
> Podobnie, jak ja uparłem się nie zauważać problemów z kolejnością wywołań metod w delegatach :D

A to teraz juz wszystko rozumiem :-) Chyba uraziłem Twoje Ego. Przepraszam :-)

> I nie, nie mam z tym problemów - jak na razie.
>
>> Ja nie musiałem dopisywać żadnego specjalnego kodu do obsługi AnyDAC.
>> Ten sam kod jest rejestrowany od wielu lat dla kilkunastu różnych klas pochodzących od różnych
>> dostawców. W czasach kiedy go testowałem z AnyDAC nie było żadnego keszowania
>> detali, więc niech inni czytający tą dyskusję rozstrzygają, kto i kiedy złamał tą "konwencję",
>> bo Ciebie i tak nie przekonam.
> Bo sprawdziłeś wszystkie komponenty do jednego mianownika - a to tak nie działa. Jak już pokusiłeś
> się o zrobienie adapterów do AnyDAC, to może warto by było zrobić to dobrze?

No właśnie dzięki Tobie dowiedzieliśmy się, że AnyDAC jest pod tym względem "wyjątkowy",
a Ty starasz się być bardziej papieski od papieża. Gdybym był zarejestrowanym użytkownikiem
AnyDAC, to sam bym zgłosił ten problem do autora i podejrzewam, że łatwiej byłoby mi jego
przekonać do respektowania ogólnie przyjętych zasad niż Ciebie, bo widzę, że on również
jasno i klarownie podaje przy okazji kolejnych wydań, jakie istotne bugi zostały poprawione,
a IMHO nie ma żadnego logicznego uzasadnienia dlaczego korzystanie z IndexFieldNames
miałoby mieć jakikolwiek wpływ na to, co jest keszowane. Tylko nie wiem dlaczego akurat
Ciebie każda taka uwaga "kole w aureolę" ;-)

> A zresztą - kto używa AnyDAC'a + keszowania detali + automatu do sortowania X-DBgrida niech sam
> sobie oceni jak by chciał aby to działało.
> Ale OK, nie będzie - jest dobrze.
>
> A jeszcze jedno pytanie (bo mi się przypomniało) - a jak z sortowaniem pól kalkulowanych? Też są
> wciskane na siłę do IndexFieldNames (co ciekawe, to będzie działać poprawnie - ale nie w każdym
> przypadku)?
> Ja rozumiem, że wszystko mogę sobie oprogramować - ale skoro tak, to na cholerę taki automat który
> czasem działa dobrze, a czasem nie?

Jak nie wyszło z keszowniem detali, to trzeba przyczepić się do czegoś innego ;-)

Wiesz co, będę trochę złośliwy i odpowiem Ci tak: a sam sobie sprawdź :-)
W przeciwieństwie do Twojego mitycznego frameworka, moje pakiety są
ogólnie dostępne dla wszystkich.

>> Jedyny zysk z tej dyskusji z Tobą jest taki, że Ci co używają X-DBGrida z AnyDAC będa
>> wiedzieli jak sobie poradzić z tym wyjątkiem, bo konkretne rozwiązania podałem już wcześniej,
>> a na odrobinę obiektywizmu u Ciebie i tak nie mam co lczyć ;-)
> Acha - a więc teraz jestem nieobiektywny, bo się czepiam niedoróbek?
> OK - nie będę się czepiał, bo w końcu nie jestem użytkownikiem.

A czepiaj się. Ja nie mam problemów z przyznawaniem się do własnych błędów.
Tylko byłoby dobrze, gdybyś nie czepiał się na oślep, bo tylko stracisz w oczach
tych, którzy używają XDBGrida, a Ciebie do tej pory uważali za "guru" ;-)

Roman Wilk

unread,
Apr 4, 2012, 5:05:03 PM4/4/12
to
On 4 Kwi, 21:25, wloochacz <wlooch...@nospam.gmail.spameromnie.com>
wrote:
Ja naprawdę nie rozumiem, jak facet (trochę poczytałem Twoich postów)
wydawać by się mogło "kumaty" w programowaniu (nie chodzi tylko o
Delphi, bo programowanie polega na umiejętności stworzenia programu
realizującego określone cele, to w czym to napisano ma drugorzędne
znaczenia) nie widzi że nie ma rozwiązań (Frameworków) realizujących
wszystkie potrzeby do wytworzenia określonego programu. Tak samo jak
akademicka jest dyskusja, czy logikę EPR'a lepiej oprzeć na bazie, czy
na Aplikacji. Można mnożyć przykłady na poparcie tezy, że zawsze
znajdą się przynajmniej dwa równorzędne rozwiązania (co ciekawe dla
zwolenników tych rozwiązań pewnie prawie wzajemnie się wykluczające),
realizujące to samo zadanie równie dobrze w praktyce. Czy to oznacza,
że któreś z nich jest złe (skoro realizują z podobnym skutkiem
postawione im zadania) ?
Dlatego nie rozumiem, jak możesz pisać, że np. używane przez mnie
rozwiązanie, stosowanie CDS'a do praktycznie pełnej obsługi logiki
bazy danych (Aplikacja <-> baza) jest złe i dlaczego miałbym projekt
modyfikować używając np. IBUpdateSQL lub innego komponentu (można to
robić na co najmniej kilka jeszcze innych sposobów). Mogę się zgodzić
z tym, że jest to mało oryginalne (można powiedzieć, metoda
czołgowa :)), ale jest to tak dopracowane (obudowane transakcjami z
którymi programista praktycznie się już nie zajmuje, zoptymalizowane
pod kątem wydajności i wielu innych czynników), że doprawdy nie widzę
praktycznych minusów tego rozwiązania (i oczywiście nie napisze o
plusach ponieważ jest to tajemnica handlowa) . Projekt jest duży, w
przypadku dużych projektów nie wprowadza się zmiany od tak, (i nie
zmieni tego żaden cudowny Framework) testowanie komercyjnych nowych
wersji trwa 3-5 mc. Dziś klient nie zapłaci Ci rocznej SLA, jeśli
dostarczasz mu narzędzie sprawiające problemy. Nie pisze tego tekstu,
dlatego że poczułem się dotknięty Twoją krytyką (pewnie z Twojego
punktu widzenia słuszną i obiektywnie przyznaję, że dla piszącego dziś
projekt tej klasy programisty moje rozwiązanie może się wydać np. mało
wydajne), jak już wcześniej pisałem, zawsze można coś napisać lepiej,
poprawniej, składniej i w bardziej skondensowany sposób, ale jeśli
projekt jest duży i masz w nim kilku programistów (nie takich geniuszy
jak Ty), którzy kosztuję Cię miesięcznie kilka / kilkadziesiąt tysięcy
PLN, to z biegiem czasu sam będziesz dbał o to, aby kodu "geniuszów
programistycznych" było stosunkowo mało, a dużo czytelnego i szybkiego
do opanowania dla normalnych zjadaczy chleba (programistów, na których
będzie Cię stać i proszę nie pisz, że Twój framework to załatwi, bo
jak obaj wiemy każdy produkt zawiera błędy i ich poprawa kosztuje,
normalne że w super Frameworku kosztuje więcej czasu, pieniędzy i
straconego rynku).

Ps.

Zauważ, że to rynek weryfikuje Twoje produkty, ja nie mam problemów z
referencjami ..., a cena wersji mojego produktu, który coś potrafi
zaczyna się od 4000,00 PLN (netto) za licencję. No ale pewnie też
jestem nieobiektywny ...

EOT :-)

Pozdrawiam


arturs

unread,
Apr 4, 2012, 5:57:22 PM4/4/12
to

>
> A zresztą - kto używa AnyDAC'a + keszowania detali + automatu do
> sortowania X-DBgrida niech sam sobie oceni jak by chciał aby to działało.
> Ale OK, nie będzie - jest dobrze.

a możecie napisać konkretnie co i jak sprawdzić.. akurat mam pod reką
wszystkie wymienione pakiety więc jak skonkretyzujecie wasze życzenia to
podepnę się pod bazę i zobaczę.. dla ułatwienia (może utrudnienia) mogę
sprawdzić to na bazie MSSQL CDn_Optima tabela - typu nagłówki transakcji
i elementy transakcji (m.in. faktury) gdzie tabela nagłówki ma 176
tysięcy rekordów a powiązane elementy mają ponad 300 tysięcy..
na takim czymś powinny być jakieś różnice, ustawię co powiecie i zobaczymy..


> A czepiaj się. Ja nie mam problemów z przyznawaniem się do własnych
błędów.
> Tylko byłoby dobrze, gdybyś nie czepiał się na oślep, bo tylko stracisz
> w oczach
> tych, którzy używają XDBGrida, a Ciebie do tej pory uważali za "guru" ;-)
>

a nie - obaj jesteście naprawdę zajebiści - tyle że żaden nie chce
przyznać że ktoś zna się na programowaniu przynajmniej na podobnym
poziomie ;) no i racja musi być jego - tyle że wloochacza racja musi być
trochę bardziej ;)

Niemniej ciekawie poczytać jak dyskutujecie bo zawsze to się człowiek
czegoś nauczy albo przynajmniej kiedyś sobie przypomni że ktoś o coś się
kłócił ..

arturs

unread,
Apr 4, 2012, 6:04:21 PM4/4/12
to
co do sortowania do można albo tak:

RegisterChangeOrder('TADQuery', coChangeIndexFields,
AscDesc, nil, '', ':A;:D;:N');

czyli to co nie podoba się niektórym..
można zamienić na takie:
RegisterChangeOrder('TADQuery', coChangeSQLOrderFields,
AscDesc);

i chyba to wyjaśnia w pewnien sposób sprawę - jak kto chce tak ma..

wloochacz

unread,
Apr 5, 2012, 5:02:42 AM4/5/12
to
W dniu 2012-04-04 22:10, Krzysztof Szyszka pisze:
> Użytkownik "wloochacz" napisał w wiadomości ...
>>> Sądzisz, że jak wyjątek od zasad nazwiesz konwencją, to udowodnisz,
>>> kto ma rację?
>> Szczerze? Mało mnie to obchodzi, zwracam Ci uwagę na źródło
>> potencjalnych problemów - ale uprałeś się ich nie zauważać.
>> Podobnie, jak ja uparłem się nie zauważać problemów z kolejnością
>> wywołań metod w delegatach :D
>
> A to teraz juz wszystko rozumiem :-) Chyba uraziłem Twoje Ego.
Nie, nie - to nie ma nic wspólnego z moim ego - po prostu czepiam się
szczegółów, które mogą być źródłem problemów. Mogą, ale nie muszą -
czyli podobnie jak w przypadku tamtej dyskusji o delegatach.
A czepiam się, bo wiem że takie coś może tam wystąpić i nie rozumiem
dlaczego nie chcesz przyznać że to jest możliwe...

> Przepraszam :-)
A proszę :)

>> I nie, nie mam z tym problemów - jak na razie.
>>
>>> Ja nie musiałem dopisywać żadnego specjalnego kodu do obsługi AnyDAC.
>>> Ten sam kod jest rejestrowany od wielu lat dla kilkunastu różnych
>>> klas pochodzących od różnych dostawców. W czasach kiedy go testowałem
>>> z AnyDAC nie było żadnego keszowania
>>> detali, więc niech inni czytający tą dyskusję rozstrzygają, kto i
>>> kiedy złamał tą "konwencję",
>>> bo Ciebie i tak nie przekonam.
>> Bo sprawdziłeś wszystkie komponenty do jednego mianownika - a to tak
>> nie działa. Jak już pokusiłeś się o zrobienie adapterów do AnyDAC, to
>> może warto by było zrobić to dobrze?
>
> No właśnie dzięki Tobie dowiedzieliśmy się, że AnyDAC jest pod tym
> względem "wyjątkowy",
> a Ty starasz się być bardziej papieski od papieża. Gdybym był
> zarejestrowanym użytkownikiem
> AnyDAC, to sam bym zgłosił ten problem do autora i podejrzewam, że
> łatwiej byłoby mi jego
> przekonać do respektowania ogólnie przyjętych zasad niż Ciebie, bo
> widzę, że on również
> jasno i klarownie podaje przy okazji kolejnych wydań, jakie istotne bugi
> zostały poprawione,
> a IMHO nie ma żadnego logicznego uzasadnienia dlaczego korzystanie z
> IndexFieldNames
> miałoby mieć jakikolwiek wpływ na to, co jest keszowane.
Bo zdałeś sobie trudu zrozumieć jak to działa - ja sobie zadałem i
dlatego napisałem o konwencji.
W przytoczonych ADO czy innych nie ma widoków wewnątrz DataSet'a, w
ogóle całą architektura jest zupełnie inna i po prostu tego nie da się
porównać na każdym poziomie.

> Tylko nie wiem
> dlaczego akurat
> Ciebie każda taka uwaga "kole w aureolę" ;-)
Oj tam bzdury piszesz.
W AnyDAC jest tak jak to opisałem i ma to swoje określone konotacje i na
nic Twoje sarkastyczne złośliwości, bo one tego nie zmienią.

>> A zresztą - kto używa AnyDAC'a + keszowania detali + automatu do
>> sortowania X-DBgrida niech sam sobie oceni jak by chciał aby to działało.
>> Ale OK, nie będzie - jest dobrze.
>>
>> A jeszcze jedno pytanie (bo mi się przypomniało) - a jak z sortowaniem
>> pól kalkulowanych? Też są wciskane na siłę do IndexFieldNames (co
>> ciekawe, to będzie działać poprawnie - ale nie w każdym przypadku)?
>> Ja rozumiem, że wszystko mogę sobie oprogramować - ale skoro tak, to
>> na cholerę taki automat który czasem działa dobrze, a czasem nie?
>
> Jak nie wyszło z keszowniem detali, to trzeba przyczepić się do czegoś
> innego ;-)
I jak tu z Tobą dyskutować - zwracam Ci uwagę na kolejny możliwy
problem, a Ty dalej dzwonisz, że Twój grid jest cacy a AnyDAC nie jest,
bo ma większe możliwości o których nie wiesz lub nie chcesz wiedzieć.
Można i tak.

> Wiesz co, będę trochę złośliwy i odpowiem Ci tak: a sam sobie sprawdź :-)
Ale ja wiem jak to zadziała, kiedy się wywali i dlaczego.

> W przeciwieństwie do Twojego mitycznego frameworka, moje pakiety są
> ogólnie dostępne dla wszystkich.
Ale mój mityczny kod nie jest dla wszystkich - ja tego nie sprzedaję i
nie będę sprzedawała jako produkt dla programistów.
A dwa - co to ma do rzeczy w tej dyskusji?

>>> Jedyny zysk z tej dyskusji z Tobą jest taki, że Ci co używają
>>> X-DBGrida z AnyDAC będa
>>> wiedzieli jak sobie poradzić z tym wyjątkiem, bo konkretne
>>> rozwiązania podałem już wcześniej,
>>> a na odrobinę obiektywizmu u Ciebie i tak nie mam co lczyć ;-)
>> Acha - a więc teraz jestem nieobiektywny, bo się czepiam niedoróbek?
>> OK - nie będę się czepiał, bo w końcu nie jestem użytkownikiem.
>
> A czepiaj się.
> Ja nie mam problemów z przyznawaniem się do własnych błędów.
> Tylko byłoby dobrze, gdybyś nie czepiał się na oślep, bo tylko stracisz
> w oczach
> tych, którzy używają XDBGrida, a Ciebie do tej pory uważali za "guru" ;-)
Spoko.
Ja tam nie chciałem być guru - ja chcę robić coś co robię najlepiej jak
potrafię.

--
wloochacz

R.e.m.e.K

unread,
Apr 5, 2012, 6:17:12 AM4/5/12
to
Dnia Wed, 4 Apr 2012 20:33:00 +0200, Krzysztof Szyszka napisał(a):

>>>> > Przecież wystarczy jak dołączysz do projektu plik XDBGridADD.pas
>>>>
>>>>> Albo dopisz XDBGridsADD
>>>>
>>>> I chyba już wszystko jasne :)
>>>
>>> No to oświeć mnie, bo nadal nie wiem, na czym polegał problem ;-)
>>
>>
>> Grids, nie Grid - zabrakło literki.
>
> No sorrrry. Teraz wszystko jasne :-)
>
> Ale powiem Ci, że tego nie zauważyłem nawet
> jak napisałeś te linijki jedna pod drugą.

Pewnosc siebie zaslepia :-P

Sorki, nie bierz tego do siebie, to dotyczy kilku osob z tego watku ;-) tak
mi sie tylko dowcipnie napisalo w kontekscie konstruktywnych sporow w innych
odnogach watku ;-)

ps. sam od razu zauwazylem brak literki w poscie Jacka, w koncu inaczej
sensu ten post by nie mial ;-)

--
pozdro
R.e.m.e.K

wloochacz

unread,
Apr 5, 2012, 8:40:27 AM4/5/12
to
W dniu 2012-04-04 23:05, Roman Wilk pisze:
> On 4 Kwi, 21:25, wloochacz<wlooch...@nospam.gmail.spameromnie.com>
> wrote:
>> W dniu 2012-04-04 08:02, Roman Wilk pisze:> Tp prawda (przeczytałem całą dyskusję), obiektywizm u "wlochacza" po
>>> prostu nie występuje:)
>>
>> Parafrazując Ciebie, napisze tak: Ty "wlik" nie jesteś najbardziej
>> obiektywną osobą na tej grupie i nie sądzę aby cokolwiek dawało Ci prawo
>> do pisania czegokolwiek w takim kontekście.
>>
>> To przy okazji wątku "ClientDatSet i Blob'y + D2010" oraz "Dlaczego w
>> ERP'e MemoryDataSet moim zdaniem jest optymalny" (oczywiśćie zdaniem
>> Romana Wilka, nie moim).
>> Ja rozumiem, że to co tam napisałem nie podoba Ci się do dziś.
>> Ale to wcale nie znaczy, że jesteś obiektywny w ocenie mojej obiektywności.
>>
>> --
>> wloochacz
>
> Ja naprawdę nie rozumiem, jak facet (trochę poczytałem Twoich postów)
> wydawać by się mogło "kumaty" w programowaniu (nie chodzi tylko o
> Delphi, bo programowanie polega na umiejętności stworzenia programu
> realizującego określone cele, to w czym to napisano ma drugorzędne
> znaczenia) nie widzi że nie ma rozwiązań (Frameworków) realizujących
> wszystkie potrzeby do wytworzenia określonego programu.
A skąd taki wniosek, że tego nie widzę?
Zwracałem tam uwagę na to (i nie tylko ja), że Twoje podejście do
rozwiązania problemu nie jest takie fajne, jak próbowałeś to przedstawiać.
Nic więcej.

> Tak samo jak
> akademicka jest dyskusja, czy logikę EPR'a lepiej oprzeć na bazie, czy
> na Aplikacji.
Akademicka?
Hmm... nie nazwałbym tego tak.
Aczkolwiek z Twojego punktu widzenia tak jest, bo idzie za Tobą cały ten
kod, który już został napisany i działa.
Dla kogoś, kto dopiero zastanawia się nad tym jak to zrobić - wcale nie
jest to takie oczywiste, a tym bardziej - akademickie.

> Można mnożyć przykłady na poparcie tezy, że zawsze
> znajdą się przynajmniej dwa równorzędne rozwiązania (co ciekawe dla
> zwolenników tych rozwiązań pewnie prawie wzajemnie się wykluczające),
> realizujące to samo zadanie równie dobrze w praktyce. Czy to oznacza,
> że któreś z nich jest złe (skoro realizują z podobnym skutkiem
> postawione im zadania) ?
Nie złe, tylko nie najlepsze w sposób bezwzględny.
Bo względnie to bywa różnie, a to "względnie" zależy np. od ekonomiki
całego projektu - jak raczyłeś zauważyć.

> Dlatego nie rozumiem, jak możesz pisać, że np. używane przez mnie
> rozwiązanie, stosowanie CDS'a do praktycznie pełnej obsługi logiki
> bazy danych (Aplikacja<-> baza) jest złe i dlaczego miałbym projekt
> modyfikować używając np. IBUpdateSQL lub innego komponentu (można to
> robić na co najmniej kilka jeszcze innych sposobów). Mogę się zgodzić
> z tym, że jest to mało oryginalne (można powiedzieć, metoda
> czołgowa :)),
No więc właśnie...

> ale jest to tak dopracowane (obudowane transakcjami z
> którymi programista praktycznie się już nie zajmuje, zoptymalizowane
> pod kątem wydajności i wielu innych czynników),
Z tą wydajnością, to już ustaliliśmy, nie jest tak różowo.
Z tego co sam napisałeś wynika, iż jest na poziomie akceptowalnym - ale
to wcale nie oznacza, że jest obiektywnie wydajnie.

> że doprawdy nie widzę
> praktycznych minusów tego rozwiązania (i oczywiście nie napisze o
> plusach ponieważ jest to tajemnica handlowa) .
Oczywiście.
Mam nadzieję, że to nie tajemnica z gatunku kotwica?

> Projekt jest duży, w
> przypadku dużych projektów nie wprowadza się zmiany od tak, (i nie
> zmieni tego żaden cudowny Framework)
> testowanie komercyjnych nowych
> wersji trwa 3-5 mc. Dziś klient nie zapłaci Ci rocznej SLA, jeśli
> dostarczasz mu narzędzie sprawiające problemy.
Pozwolę się nie zgodzić.
Oczywiście to zależy od gatunkowego ciężaru takiej zmiany, ale
funkcjonalności, że tak powiem, generyczne można zmieniać ot tak - pod
warunkiem, że zachowa się interfejs zewnętrzny.
Tylko żeby to zrobić, to nie można mieć naćpanego kodu pisanego raz tak
- raz śmiak (czyli np. logika biznesowa opiera się na zdarzeniach
kontrolek - czyli podejście typowe dla Delphi). O, wtedy to na pewno
testować trzeba zmianę przez pół roku (bo zrobić tego automatycznie się
po prostu nie da) i bardzo dobrze się zastanowić nad byle zmianą.

> Nie pisze tego tekstu,
> dlatego że poczułem się dotknięty Twoją krytyką (pewnie z Twojego
> punktu widzenia słuszną i obiektywnie przyznaję, że dla piszącego dziś
> projekt tej klasy programisty moje rozwiązanie może się wydać np. mało
> wydajne), jak już wcześniej pisałem, zawsze można coś napisać lepiej,
> poprawniej, składniej i w bardziej skondensowany sposób, ale jeśli
> projekt jest duży i masz w nim kilku programistów (nie takich geniuszy
> jak Ty), którzy kosztuję Cię miesięcznie kilka / kilkadziesiąt tysięcy
> PLN, to z biegiem czasu sam będziesz dbał o to, aby kodu "geniuszów
> programistycznych" było stosunkowo mało, a dużo czytelnego i szybkiego
> do opanowania dla normalnych zjadaczy chleba (programistów, na których
> będzie Cię stać i proszę nie pisz, że Twój framework to załatwi, bo
> jak obaj wiemy każdy produkt zawiera błędy i ich poprawa kosztuje,
> normalne że w super Frameworku kosztuje więcej czasu, pieniędzy i
> straconego rynku).
OK - ale czy ja się w tym wątku zająknąłem chociaż słowem o moim frameworku?
Ale, to ciekawe... To kolejna opinia osoby, która nie wie o czym tak
naprawdę pisze ;-)
Bo przecież nie wiesz, co i jak mam zrealizowane w szczegółach. Nie masz
pojęcia co trzeba zrobić aby uzyskać konkretny efekt.
Ale zakładasz, że np. poprawa błędu wymaga to umiejętności na wysokim
poziomie.
A na podstawie czego tak zakładasz - ciekawość bierze?

> Ps.
> Zauważ, że to rynek weryfikuje Twoje produkty, ja nie mam problemów z
> referencjami ..., a cena wersji mojego produktu, który coś potrafi
> zaczyna się od 4000,00 PLN (netto) za licencję. No ale pewnie też
> jestem nieobiektywny ...
Gratuluję.
Co wcale nie znaczy, że technologicznie jest to miód malina.
A na tej grupie, o ile się nie mylę, nie rozmawiamy raczej o aspektach
ekonomicznych tylko technologicznych.
A przynajmniej w większości.

--
wloochacz

Roman Wilk

unread,
Apr 5, 2012, 10:58:38 AM4/5/12
to
On 5 Kwi, 14:40, wloochacz <wlooch...@nospam.nie.gmail.com> wrote:
> W dniu 2012-04-04 23:05, Roman Wilk pisze:

Ty piszesz jak nauczyciel akademicki (może nim rzeczywiście jesteś,
bo jak widzę spędzasz na tej grupie sporo czasu (to nie jest
złośliwość, mnie po prostu nie stać poświęcić tyle czasu na
dyskusje ... ) ).

Dyskusja odnośnie logiki ERP'a, czy po stronie bazy czy po stronie
Aplikacji, jest akademicka, ponieważ istnieją na ryku produkty
realizujące obydwa podejścia i zdają egzamin w użytkowaniu (choć
raczej przeważa podejście logika Aplikacja, więzy baza, ale to
oczywiście sprawa podejścia do projektu).

Poza tym tak myślę, że po świętach założe temat "Czy da się napisać
ERP'a (ERP'a nie programik do wystawiania FV)" używając tylko
Framework'ow, bez klikania kodu pod formą i indywidualnym podejściem
do funkcjonalności.

Np. Taki proces.

1. Utwórz zamówienie 1
2. Wykonaj do niego chronologiczne rezerwacje
3 Utwórz zamówienie 2
4. Wykonaj do niego chronologiczne rezerwacje
5. Zrealizuj zamówienia w jednej FV i zmień walutę FV z PLN na EUR
(zaksięguj wszystko na kontach analitycznych w grupach podatkowych,
czyli mając np. 1000,00 PLN księgujesz 300 i liczysz od tego podatek
VAT, 200 i liczysz podatek VAT itd, aż do zamknięcia dekretu).
Oczywiście wartość waluty <> wartości pln powstają zaokrąglenia,
trzeba to przewidzieć i oprogramować. Księgowania FV są w czasie
rzeczywistym i dotyczą rozrachunku i kosztu własnego.
6. Zdejmij pozycję MWS (magazyn wysokiego składu, czyli pokaż
magazynierowi gdzie to leży i przygotuj raport lokalizacji pozycji z
FV) oczywiście MWS chodzi pod dokumentem w tle i pokaże jego (MWS/
rząd / regał / półka / paleta) graficzny obraz w magazynie
7. Koszt własny jest liczony z rzeczywistych cen zakupu (czyli
algorytm FIFO/LIFO), czyli wartość WZ w cenach zakupu jest rzeczywista
(tyle ile zapłacono za ten towar), podczas generowania FV. Czyli po
wystawieniu FV użytkownik natychmiast wie ile zyskał.

To na razie na tyle. Jak myślisz Twój Framework sobie z tym poradzi.
Myślę, że jak ja miałbym to wszystko (choć oczywiście to wszystko jest
w kodzie ładnie opakowane) sparametryzować do Frameworka, to zajełoby
mi to 6-8 mc, następnie udokumentowanie i przekazanie tego programistą
jakieś 2-3 mc. No i po roku może bym miał to w bardzo skondensowanej
postaci i pewnie tylko ja sam mógłbym to utrzymywać.

Ps.

Tylko nie pisz, że podane założenia to "wytyczne co ma robić program"
i nie mają nic wspólnego z tym jak to zostanie to przez programistę
oprogramowane. Celowo wybrałem dość prosty i właściwie klasyczny
przypadek działania ERP'a (robiącego troszkę więcej niż wystawianie
FV) o zintegrowanej logice przetwarzania danych.


.

neuron

unread,
Apr 5, 2012, 11:55:59 AM4/5/12
to


>Poza tym tak my¶lę, że po ¶więtach założe temat "Czy da się napisać
>ERP'a (ERP'a nie programik do wystawiania FV)" używaj±c tylko
>Framework'ow, bez klikania kodu pod form± i indywidualnym podej¶ciem
>do funkcjonalno¶ci.


"czy da sie napisac oprogramowanie sterujace farma 30 turbin wiatrowych
uzywajac tylko frameworka bez klikania kodu pod forma .... "
Jasne ze sie da - taki framework nazywa sie LabView
Skoro 90% oprogramowania nadrzednego dla przemyslu pisze sie dzis za pomoca
frameworkow zwanych systemami SCADA to naturalnym jest ze za jakis czas 90%
oprogramowania ERP bedzie napisane w frameworkach a najwiekszy z nich bedzie
sie naywal GoogleERP czy jakos tak ......

Wsiadasz czy nie ? bo pociag odjezdza a nastepego nie bedzie ......








__________ Informacja programu ESET NOD32 Antivirus, wersja bazy sygnatur wirusów 7031 (20120405) __________

Wiadomość została sprawdzona przez program ESET NOD32 Antivirus.

http://www.eset.pl lub http://www.eset.com




Fantom

unread,
Apr 5, 2012, 12:33:50 PM4/5/12
to
Uzytkownicy wersji 4.x musza kupic od nowa ?
Ktora wersja 4.x byla ostatnia ? 4.4 build 4.87 ?

Fantom


Użytkownik "Krzysztof Szyszka" <nom...@gazeta.pl> napisał w wiadomości
news:jlbnnn$gb1$1...@inews.gazeta.pl...
> Witam,
>
> miło mi poinformować, że ukazała się nowa wersja pakietów X-DBGrid
> Component 5.1
> i X-Files Components 5.1.

Krzysztof Szyszka

unread,
Apr 5, 2012, 1:27:43 PM4/5/12
to
Użytkownik "wloochacz" napisał w wiadomości ...
>> A to teraz juz wszystko rozumiem :-) Chyba uraziłem Twoje Ego.
> Nie, nie - to nie ma nic wspólnego z moim ego - po prostu czepiam się szczegółów, które mogą być
> źródłem problemów. Mogą, ale nie muszą - czyli podobnie jak w przypadku tamtej dyskusji o
> delegatach.
> A czepiam się, bo wiem że takie coś może tam wystąpić i nie rozumiem dlaczego nie chcesz przyznać
> że to jest możliwe...

Ależ ja Ci wierzę :-) Gdyby tak nie było, to nie podawałbym Ci, w jaki sposób
każdy użytkownik może sobie z tym łatwo poradzić i to przynajmniej na dwa
sposoby, bez żadnej ingerencji z mojej strony. Nawet Artur gdzieś tam dalej
podał Ci prawidłowe rozwiązanie.

Natomiast Ty piszesz o tym w tak alarmistyczny sposób, jakby brak jakichś
działań z mojej strony powodował minimum rozwalenie bazy danych, podczas
gdy jest to problem czysto optymalizacyjny.

>
>> No właśnie dzięki Tobie dowiedzieliśmy się, że AnyDAC jest pod tym względem "wyjątkowy",
>> a Ty starasz się być bardziej papieski od papieża. Gdybym był zarejestrowanym użytkownikiem
>> AnyDAC, to sam bym zgłosił ten problem do autora i podejrzewam, że łatwiej byłoby mi jego
>> przekonać do respektowania ogólnie przyjętych zasad niż Ciebie, bo widzę, że on również
>> jasno i klarownie podaje przy okazji kolejnych wydań, jakie istotne bugi zostały poprawione,
>> a IMHO nie ma żadnego logicznego uzasadnienia dlaczego korzystanie z IndexFieldNames
>> miałoby mieć jakikolwiek wpływ na to, co jest keszowane.
> Bo zdałeś sobie trudu zrozumieć jak to działa - ja sobie zadałem i dlatego napisałem o konwencji.
> W przytoczonych ADO czy innych nie ma widoków wewnątrz DataSet'a, w ogóle całą architektura jest
> zupełnie inna i po prostu tego nie da się porównać na każdym poziomie.

Nie czytasz mnie uważnie. Ja nigdy nie porównywałem całej funkcjonalności AnyDAC i ADO.
Odnosiłem się tylko do tej jednej konkretnej właściwości (IndexFieldNames), która gdzieś
między kolejnymi wersjami AnyDAC nieco zmieniła swój charakter (po dołożeniu pewnych
opcji) i dziwi mnie, że taka osoba jak Ty, która zna na pamięć wszystkie wzorce i antywzorce
projektowe, nie widzi w tym nic szczególnego i nawet nie przeszkadza jej, że jakaś właściwość
typu published ma służyć jednocześnie do realizacji dwóch różnych funkcjonalności.

Gdybym ja coś takiego zrobił w X-DBGridzie, to najłagodniej oceniłbyś to jako "krzywe".

>> Jak nie wyszło z keszowniem detali, to trzeba przyczepić się do czegoś innego ;-)
> I jak tu z Tobą dyskutować - zwracam Ci uwagę na kolejny możliwy problem, a Ty dalej dzwonisz, że
> Twój grid jest cacy a AnyDAC nie jest, bo ma większe możliwości o których nie wiesz lub nie chcesz
> wiedzieć.
> Można i tak.

A po co ja mam Ci odpowiadać na pytanie, na które Ty sam od razu dajesz odpowiedź
w następnej linijce pisząc, że na pewno się wywali :-) (cytat poniżej)

> Ale ja wiem jak to zadziała, kiedy się wywali i dlaczego.

Ja też wiem, jak to zadziała i wie to również każdy użytkownik mojego komponentu,
który choć raz użył pól kalkulowanych w tym gridzie. A ty już wiesz ? Sprawdziłeś ?

>> W przeciwieństwie do Twojego mitycznego frameworka, moje pakiety są
>> ogólnie dostępne dla wszystkich.
> Ale mój mityczny kod nie jest dla wszystkich - ja tego nie sprzedaję i nie będę sprzedawała jako
> produkt dla programistów.
> A dwa - co to ma do rzeczy w tej dyskusji?

Chciałem Ci tylko zwrócić uwagę, że zanim znowu z czymś takim wyskoczysz,
to możesz sam sprawdzić, jak zachowa się mój komponent, a ja muszę wierzyć
Ci na słowo, że Twój framework jest the best, bo nic innego mi nie pozostaje :-)

Krzysztof Szyszka

unread,
Apr 5, 2012, 1:38:40 PM4/5/12
to
Użytkownik "Fantom" napisał w wiadomości ...
> Uzytkownicy wersji 4.x musza kupic od nowa ?

Mają prawo do zakupu upgrade'u.
Zobacz tu: http://www.x-files.pl/pl/register/upgrade.html

> Ktora wersja 4.x byla ostatnia ? 4.4 build 4.87 ?

Tak.

R.e.m.e.K

unread,
Apr 6, 2012, 2:48:14 AM4/6/12
to
Dnia Tue, 3 Apr 2012 13:07:03 +0200, Krzysztof Szyszka napisał(a):

>> To ja jeszcze dorzucę:
>> http://www.ehlib.com/dbgrideh1.htm
>>
>> Pewnie znasz. Zwracam uwagę na ten układ master-detail. To naprawdę wygodne. EhLib też jest oparty
>> o standardowego grida.
>
> Prawdopodobnie już nie. Dymitry zrobił kilka fajnych rzeczy, ale domyślam
> się jakim kosztem, bo na standardowym TCustomGrid nie da się ich uzyskać.

Wychodzi z TCustomControl.


--
pozdro
R.e.m.e.K

R.e.m.e.K

unread,
Apr 6, 2012, 2:57:06 AM4/6/12
to
Dnia Fri, 6 Apr 2012 08:48:14 +0200, R.e.m.e.K napisał(a):

>> Prawdopodobnie już nie. Dymitry zrobił kilka fajnych rzeczy, ale domyślam
>> się jakim kosztem, bo na standardowym TCustomGrid nie da się ich uzyskać.
>
> Wychodzi z TCustomControl.

btw Nowy TDBGridEh robi teraz wrazenie. Jest prawie jak DevExpressowy grid a
kosztuje tyle co XDBGrid.

--
pozdro
R.e.m.e.K

Adam Siwoń

unread,
Apr 6, 2012, 3:12:23 AM4/6/12
to
W dniu 2012-04-06 08:57, R.e.m.e.K pisze:
Ale wciąż ma niedociągnięcia, których nie ma XDBGrid - np. brak
możliwości przesuwania grup kolumn - niby drobiazg, ale strasznie
upierdliwa rzecz.

--
z pozdrowieniami
Adam Siwoń

jh

unread,
Apr 6, 2012, 3:13:46 AM4/6/12
to
W dniu 06.04.2012 08:57, R.e.m.e.K pisze:
Ano właśnie. Poza tym ma też kilka fajnych rzeczy - np. detale to nie
tyle drugi grid, ale panel, na którym, można wstawić w zasadzie
cokolwiek, a to już naprawdę dużo daje. Brakuje mi trochę większej
ilości in-place editorów, ale mam od kilku dni demko i mocno się waham,
czy XDBGrid czy EhLib :)

jh

jh

unread,
Apr 6, 2012, 3:23:46 AM4/6/12
to
W dniu 06.04.2012 09:12, Adam Siwoń pisze:
> Ale wciąż ma niedociągnięcia, których nie ma XDBGrid - np. brak
> możliwości przesuwania grup kolumn - niby drobiazg, ale strasznie
> upierdliwa rzecz.

Może mi podpowiesz:

1. Znaczek sortowania jest do góry nogami w stosunku do standardu :)
2. Wysokość wiersza z filtrem jest taka, jak wiersza danych, a wolałbym
mieć to niezależnie
3. Custom filter nie jest zlokalizowany w całości
4. Nie umiem zrobić tak, żeby checkbox w kolumnie wskaźnika (indicator
column) można było nie tylko pokazać, ale i użyć :)
5. Czy da się podpiąć własne in-place edytory?
6. W trybie mutlititle nie umiem zwinąć/rozwinąć grupy kolumn jak to
jest w XDBGridzie

W zasadzie to chyba głównie master-detail jest dla mnie przekonujący w
stosunku do XDBGrida. Grupowanie wymaga użycia ichniego memory datasetu,
a w związku z tym pewnie nie będzie chciało mi się tak bawić. Gdyby
umieli wykorzystać AnyDACowe ADMemTable, które tak naprawdę chyba siedzi
w TADQuery, z którego dziedziczą moje komponenty, byłoby świetnie.

Osiołkowi w żłoby dano... No i osiołek zastanawia się, EhLib czy XDBGrid
- jakie są korzyści jednego nad drugim?

jh

wloochacz

unread,
Apr 6, 2012, 3:25:27 AM4/6/12
to
W dniu 2012-04-06 09:13, jh pisze:
> W dniu 06.04.2012 08:57, R.e.m.e.K pisze:
>> Dnia Fri, 6 Apr 2012 08:48:14 +0200, R.e.m.e.K napisał(a):
>>
>>>> Prawdopodobnie już nie. Dymitry zrobił kilka fajnych rzeczy, ale
>>>> domyślam
>>>> się jakim kosztem, bo na standardowym TCustomGrid nie da się ich
>>>> uzyskać.
>>>
>>> Wychodzi z TCustomControl.
>>
>> btw Nowy TDBGridEh robi teraz wrazenie. Jest prawie jak DevExpressowy
>> grid a
>> kosztuje tyle co XDBGrid.
A Skoda jest prawie jak Porshe, a kosztuje tyle co Skoda - no zobacz
jaka okazja ;-)

> Ano właśnie. Poza tym ma też kilka fajnych rzeczy - np. detale to nie
> tyle drugi grid, ale panel, na którym, można wstawić w zasadzie
> cokolwiek, a to już naprawdę dużo daje. Brakuje mi trochę większej
> ilości in-place editorów, ale mam od kilku dni demko i mocno się waham,
> czy XDBGrid czy EhLib :)
Ja Cię nie rozumiem - skoro masz licencję na DevEx'a to po co Ci ten lub
tamten?

--
wloochacz

wloochacz

unread,
Apr 6, 2012, 3:29:59 AM4/6/12
to
W dniu 2012-04-06 09:23, jh pisze:
/ciach/

> W zasadzie to chyba głównie master-detail jest dla mnie przekonujący w
> stosunku do XDBGrida. Grupowanie wymaga użycia ichniego memory datasetu,
> a w związku z tym pewnie nie będzie chciało mi się tak bawić. Gdyby
> umieli wykorzystać AnyDACowe ADMemTable,
Chyba powinieneś postawić pytanie inaczej - gdybyś to Ty umiał
wykorzystać AnyDAC'owe TADDatSTable - przecież producent grida nie
będzie się uzależniał od jakiegoś komponentu...

> które tak naprawdę chyba siedzi
> w TADQuery, z którego dziedziczą moje komponenty, byłoby świetnie.
Nie.
W TADQuery tak naprawdę siedzi TADDatSTable - czyli to samo co w
TADMemTable.

/ciach/

--
wloochacz

Adam Siwoń

unread,
Apr 6, 2012, 3:35:17 AM4/6/12
to
W dniu 2012-04-06 09:23, jh pisze:
> W dniu 06.04.2012 09:12, Adam Siwoń pisze:
>> Ale wciąż ma niedociągnięcia, których nie ma XDBGrid - np. brak
>> możliwości przesuwania grup kolumn - niby drobiazg, ale strasznie
>> upierdliwa rzecz.
>
> Może mi podpowiesz:
>
> 1. Znaczek sortowania jest do góry nogami w stosunku do standardu :)

Znaczek znaczkiem - ustawienie własności możesz interpretować dowolnie.

> 2. Wysokość wiersza z filtrem jest taka, jak wiersza danych, a wolałbym
> mieć to niezależnie
> 3. Custom filter nie jest zlokalizowany w całości

Kupując dostajesz źródła, więc to pewnie nie problem.

> 4. Nie umiem zrobić tak, żeby checkbox w kolumnie wskaźnika (indicator
> column) można było nie tylko pokazać, ale i użyć :)

Da się - jak wiersz jest w trybie edycji, to doubleclick pozwala ustawić
wartość.

> 5. Czy da się podpiąć własne in-place edytory?

Pewnie się da, tylko kiedyś ichnie edytory dziedziczyły z klasy bazowej
standardowego edytora gridowego - a więc jeśli nic się nie zmieniło to
da się - napisać od nowa. :-)

> 6. W trybie mutlititle nie umiem zwinąć/rozwinąć grupy kolumn jak to
> jest w XDBGridzie

Pod względem grup kolumn XDBGrid jest lepiej dopracowany. Zwijania nie
ma w DBGridEh.

> W zasadzie to chyba głównie master-detail jest dla mnie przekonujący w
> stosunku do XDBGrida. Grupowanie wymaga użycia ichniego memory datasetu,
> a w związku z tym pewnie nie będzie chciało mi się tak bawić. Gdyby
> umieli wykorzystać AnyDACowe ADMemTable, które tak naprawdę chyba siedzi
> w TADQuery, z którego dziedziczą moje komponenty, byłoby świetnie.
>
> Osiołkowi w żłoby dano... No i osiołek zastanawia się, EhLib czy XDBGrid
> - jakie są korzyści jednego nad drugim?

Wybór nie jest prosty. Ja kiedyś zdecydowałem się na EhLiba ze względu
na możliwość sumowania kolumn, no i miałem trochę kodu z darmowej
niegdyś wersji EhLiba. XDbGrid wtedy nie miał jeszcze sumowania, a w
następnej wersji się pojawiło. Kiedyś sprawdzałem, czy nie dało by się
zrobić grupowania dla zwykłego DataSeta, ale za bardzo jest to powiązane
z tym ichnim memory datasetem - właściwie szkoda, bo takie grupowanie
dało by się bez problemu zrobić na wszystkim co udostępnia możliwość
klonowania kursorów.
W sumie komponent pracuje dosyć stabilnie, ale gdybym miał dziś wybierać
to nie jestem pewien, czy znowu byłby to EhLib.

Adam Siwoń

unread,
Apr 6, 2012, 3:36:48 AM4/6/12
to
W dniu 2012-04-06 09:29, wloochacz pisze:
> W dniu 2012-04-06 09:23, jh pisze:
> /ciach/
>
>> W zasadzie to chyba głównie master-detail jest dla mnie przekonujący w
>> stosunku do XDBGrida. Grupowanie wymaga użycia ichniego memory datasetu,
>> a w związku z tym pewnie nie będzie chciało mi się tak bawić. Gdyby
>> umieli wykorzystać AnyDACowe ADMemTable,
> Chyba powinieneś postawić pytanie inaczej - gdybyś to Ty umiał
> wykorzystać AnyDAC'owe TADDatSTable - przecież producent grida nie
> będzie się uzależniał od jakiegoś komponentu...

No nie będzie się uzależniał, ale nie jest to zrobione tak, że możesz
podpiąć sobie interfejs, który umożliwi gridowi obsługę tej
funkcjonalności na dowolnym datasecie - jest zrobione z ichnim i koniec.

jh

unread,
Apr 6, 2012, 4:13:46 AM4/6/12
to
W dniu 06.04.2012 09:25, wloochacz pisze:
>> czy XDBGrid czy EhLib :)

> Ja Cię nie rozumiem - skoro masz licencję na DevEx'a to po co Ci ten lub tamten?

Tam, gdzie pracuję etatowo programowanie nie jest w moich obowiązkach,
niemniej od czasu do czasu coś na potrzeby firmy skrobnę. W związku z
tym namówiłem firmę na zakup w zasadzie tego wszystkiego, czego używam
prywatnie (własna DG). Czyli od TMSów po AnyDACa i kilka innych
bibliotek. Prywatnie, do własnej działalności, gdzie programowanie też
nie jest głównym źródłem utrzymania, mam w zasadzie taki sam komplet, po
prostu lubię legalnie. Dzięki temu mam też wygodnie, bo od biedy mogę
zajrzeć do projektu firmowego w domu i vice versa, oczywiście wszystko
oficjalnie i w ramach rozsądku - co moje, a co dla firmy. No i firmowe
stanowisko "wyprzedziło" moje domowe właśnie o DevExa ponieważ nie tak
dawno musiałem prywatnie poodnawiać różne licencje, aktualizować XE2,
więc dukacików aż tak dużo nie zostało. Więc zacząłem się zastanawiać,
czy mogę zamiast DevExowego grida użyć czegoś innego i odłożyć zakup
QuantumGrid na później. Czasem potrzebuję czegoś naprawdę lekkiego z
podstawową funkcjonalnością, ale jednak trochę więcej niż standardowy
TDBGrid. Stąd zainteresowanie bardziej "standardowym" gridem niż QG.

jh

jh

unread,
Apr 6, 2012, 4:23:43 AM4/6/12
to
W dniu 06.04.2012 09:35, Adam Siwoń pisze:

>> 1. Znaczek sortowania jest do góry nogami w stosunku do standardu :)
>
> Znaczek znaczkiem - ustawienie własności możesz interpretować dowolnie.

Help jest słabiutki. Korzystając z lokalnego sortowania niczego nie
ustawiam i sortowanie działa, ale sam symbol jest odwrotnie :) W sumie
problem żaden, bardziej jako ciekawostka.


>> 4. Nie umiem zrobić tak, żeby checkbox w kolumnie wskaźnika (indicator
>> column) można było nie tylko pokazać, ale i użyć :)
>
> Da się - jak wiersz jest w trybie edycji, to doubleclick pozwala ustawić
> wartość.

Lewy do tego jestem. RowSelect wyłączony, goEditing włączone, inne
kolumny mogę edytować, a to ni w ząb - ani pojedynczy, ani podwójny klik
nic nie dają.


> Pod względem grup kolumn XDBGrid jest lepiej dopracowany. Zwijania nie ma w DBGridEh.

No to szkoda, bo taki głównie widzę tego sens.

> Kiedyś sprawdzałem, czy nie dało by się zrobić grupowania dla zwykłego DataSeta, ale za bardzo jest to powiązane z tym ichnim memory datasetem - właściwie szkoda, bo takie grupowanie dało by się bez problemu zrobić na wszystkim co udostępnia możliwość klonowania kursorów.
> W sumie komponent pracuje dosyć stabilnie, ale gdybym miał dziś wybierać to nie jestem pewien, czy znowu byłby to EhLib.

Na korzyść XDBGrida przemawia też support :) Dmitry ma spore lagi w
odpowiadaniu - na forum to w ogóle, w mailu mi napisał, że odpowie
wkrótce i dziś trzeci dzień zimy :)

jh

jh

unread,
Apr 6, 2012, 4:45:41 AM4/6/12
to
W dniu 06.04.2012 09:25, wloochacz pisze:
I jeszcze...

> A Skoda jest prawie jak Porshe, a kosztuje tyle co Skoda - no zobacz jaka okazja ;-)

Porównałbym raczej tę Skodę osobową z dużym, wypasionym autokarem, super
komfortowym, tv w każdym fotelu itd. ;) Świetnie się tym zwiedza Węgry i
Austrię, może przewieźć całą drużynę piłkarską it. Ale Skodą łatwiej
zaparkować, pojechać na zakupy, czy na piknik do lasu :) Nawet, jeśli
nie ma klimy :P

Nie masz wrażenia, że DevExpress coraz bardziej odpuszcza sobie Delphi?
We wszystkich newsletterach, które rozsyłają w zasadzie nie pojawia się
nic o wersjach VCLowych. Obym się mylił, ale wraz z nadejściem
FireMonkey pewnie uznali, że dalszy rozwój platformy VCLowej jest mało
prawdopodobny, a nakład pracy w przeniesienie całej biblioteki VCLowej
do FMX może się okazać po prostu nieekonomiczny, zważywszy na coraz
większą niszowość Delphi. Otwierając ich stronę widać, że głównym
motorkiem jest DXv2 i inne rozwiązania około Microsoftowe, a VCL pojawia
się tam od wielkiego dzwonu. Fakt, dziś zadzwoniło 64-bitami, ale to nie
było chyba wielkim wyzwaniem, przy czym to i tak niewiele w stosunku do
reszty platform, które wspierają...

jh

wloochacz

unread,
Apr 6, 2012, 5:13:32 AM4/6/12
to
W dniu 2012-04-06 09:36, Adam Siwoń pisze:
OK - ale jh chce mieć AnyDAC i koniec ;-)

--
wloochacz

Przemyslaw Osmanski

unread,
Apr 6, 2012, 5:32:40 AM4/6/12
to
W dniu 2012-04-06 09:25, wloochacz pisze:

>> Ano właśnie. Poza tym ma też kilka fajnych rzeczy - np. detale to nie
>> tyle drugi grid, ale panel, na którym, można wstawić w zasadzie
>> cokolwiek, a to już naprawdę dużo daje. Brakuje mi trochę większej
>> ilości in-place editorów, ale mam od kilku dni demko i mocno się waham,
>> czy XDBGrid czy EhLib :)
> Ja Cię nie rozumiem - skoro masz licencję na DevEx'a to po co Ci ten lub
> tamten?

Bo jest prostszy? Bo DevEx zaczyna olewać Delphi. Bo samo użycie cxGrida
w prostej aplikacji nie daje nic więcej niż użycie xdbgrida (poza
wydatnym zwiększeniem exec'a?). Bo tak naprawdę z cxGrida używa się
normalnie te 10-20% jego możliwości jednocześnie, a reszta - owszem jest
fajna, ładna, ekstra w prezentacjach, w użyciu już tak sobie...
Ja w każdym razie nie odnowiłem subskrypcji DevExa z rozmysłem. Niestety
DXv2 powala nową jakością, ale nie w wersji VCL. Wersja dla FireMonkey
pewno nie powstanie, albo nie powstanie w rozsądnym czasie. Więc powoli
nie ma sensu. Już chyba TMS bardziej goni z komponentami dla Delphi,
chociaż go zawsze krytykowałem za jakość i support.

DevEx jest fajny, dobry, sprawdzony i przetestowany. Dla większości
aplikacji które potrzebują jego funkcjonalności jest idealny i nadal go
do tego wykorzystuje.
Natomiast tam, gdzie aplikacja może się z powodzeniem obyć bez cxGrida a
przy okazji ma wyglądać ładnie, wybiorę TMSa + AlphaSkins lub nawet
VCLStyle z XE2 upd4.

--
pozdrawiam,
Przemek O.

SoftSYSTEM - www.soft-system.pl
Mały Kangurek - Sale zabaw dla dzieci - www.malykangurek.pl

wloochacz

unread,
Apr 6, 2012, 5:47:09 AM4/6/12
to
W dniu 2012-04-06 10:45, jh pisze:
> W dniu 06.04.2012 09:25, wloochacz pisze:
> I jeszcze...
>
>> A Skoda jest prawie jak Porshe, a kosztuje tyle co Skoda - no zobacz
>> jaka okazja ;-)
>
> Porównałbym raczej tę Skodę osobową z dużym, wypasionym autokarem, super
> komfortowym, tv w każdym fotelu itd. ;) Świetnie się tym zwiedza Węgry i
> Austrię, może przewieźć całą drużynę piłkarską it. Ale Skodą łatwiej
> zaparkować, pojechać na zakupy, czy na piknik do lasu :) Nawet, jeśli
> nie ma klimy :P
Tylko z autokaru nie da się zrobić szybkiej osobówki, a z Quantum Grida
- jak najbardziej.
Można go sobie praktycznie dowolnie konfigurować i uzyskać taki
efekt/funkcjonalność jaką chcesz.
Oczywiście trzeba sobie wypisać własne wymagania i to zrealizować - tak
czy inaczej.
Ja mam to oprogramowanie w klasie, której zadaniem jest zarządzanie
każdym gridem.
I to niej jest tak,

> Nie masz wrażenia, że DevExpress coraz bardziej odpuszcza sobie Delphi?
Mam wrażenie graniczące z pewnością, że więcej gmerają w .NET.

> We wszystkich newsletterach, które rozsyłają w zasadzie nie pojawia się
> nic o wersjach VCLowych.
W zasadzie pojawia się nowa wersje VCLowa co dwa miesiące (a ostatnio
częściej).
To chyba świadczy o czymś całkowicie innym, prawda?

> Obym się mylił, ale wraz z nadejściem
> FireMonkey pewnie uznali, że dalszy rozwój platformy VCLowej jest mało
> prawdopodobny, a nakład pracy w przeniesienie całej biblioteki VCLowej
> do FMX może się okazać po prostu nieekonomiczny, zważywszy na coraz
> większą niszowość Delphi.
Widziałeś wyniki sprzedaży Embarcadero?
Indeksy TIOBE?
To prawda, Delphi nie jest tak popularne jak .NET - ale na pewno nie
jest niszowe jak np. Cobol.

> Otwierając ich stronę widać, że głównym
> motorkiem jest DXv2 i inne rozwiązania około Microsoftowe, a VCL pojawia
> się tam od wielkiego dzwonu. Fakt, dziś zadzwoniło 64-bitami,
Dziś?
Wersja 64bit jest dostępna od wersji 2.2, która ukazała się prawie 5
miesięcy temu.

> ale to nie
> było chyba wielkim wyzwaniem, przy czym to i tak niewiele w stosunku do
> reszty platform, które wspierają...
Nudzisz jak stara baba; kup sobie TMS Subscription Pack, będziesz miał
grida i wszystko inne w cenie 4x mniejszej od DevEx - w czym problem?

--
wloochacz

wloochacz

unread,
Apr 6, 2012, 5:58:58 AM4/6/12
to
W dniu 2012-04-06 11:32, Przemyslaw Osmanski pisze:
> W dniu 2012-04-06 09:25, wloochacz pisze:
>
>>> Ano właśnie. Poza tym ma też kilka fajnych rzeczy - np. detale to nie
>>> tyle drugi grid, ale panel, na którym, można wstawić w zasadzie
>>> cokolwiek, a to już naprawdę dużo daje. Brakuje mi trochę większej
>>> ilości in-place editorów, ale mam od kilku dni demko i mocno się waham,
>>> czy XDBGrid czy EhLib :)
>> Ja Cię nie rozumiem - skoro masz licencję na DevEx'a to po co Ci ten lub
>> tamten?
>
> Bo jest prostszy? Bo DevEx zaczyna olewać Delphi. Bo samo użycie cxGrida
> w prostej aplikacji nie daje nic więcej niż użycie xdbgrida (poza
> wydatnym zwiększeniem exec'a?). Bo tak naprawdę z cxGrida używa się
> normalnie te 10-20% jego możliwości jednocześnie, a reszta - owszem jest
> fajna, ładna, ekstra w prezentacjach, w użyciu już tak sobie...
Wiesz, kiepskiej tancerce...

> Ja w każdym razie nie odnowiłem subskrypcji DevExa z rozmysłem. Niestety
> DXv2 powala nową jakością, ale nie w wersji VCL. Wersja dla FireMonkey
> pewno nie powstanie, albo nie powstanie w rozsądnym czasie. Więc powoli
> nie ma sensu. Już chyba TMS bardziej goni z komponentami dla Delphi,
> chociaż go zawsze krytykowałem za jakość i support.
No widzisz, a w RoadMap napisali co nieco. Oczywiście czytałeś?
FMX na pewno nie będzie w tym roku, czy będzie w ogóle - wszystko zależy
od Embarcadero :)

> DevEx jest fajny, dobry, sprawdzony i przetestowany. Dla większości
> aplikacji które potrzebują jego funkcjonalności jest idealny i nadal go
> do tego wykorzystuje.
> Natomiast tam, gdzie aplikacja może się z powodzeniem obyć bez cxGrida a
> przy okazji ma wyglądać ładnie, wybiorę TMSa + AlphaSkins lub nawet
> VCLStyle z XE2 upd4.
OK - ale ja osobiście nie mam ochoty na pisanie tego samego kodu z
wykorzystaniem i utrzymywanie wsparcia dla różnych kontrolek
prezentujących dane w ten sam sposób - np. Grid, Toolbar, TreeView,
Edit, itd.
A poza tym - to nieopłacalne.

--
wloochacz

Przemyslaw Osmanski

unread,
Apr 6, 2012, 6:09:55 AM4/6/12
to
W dniu 2012-04-06 11:58, wloochacz pisze:

>> normalnie te 10-20% jego możliwości jednocześnie, a reszta - owszem jest
>> fajna, ładna, ekstra w prezentacjach, w użyciu już tak sobie...
W użyciu przez użytkownika końcowego - doprecyzuje, bo zapewne
wywnioskowałeś coś innego.

> Wiesz, kiepskiej tancerce...

I mówi to osoba która nie może/nie chce poprawić jednej linijki w
XDBGridzie przy połączeniu do AnyDACa... :/
Zauważ że potrzeby są różne.

> No widzisz, a w RoadMap napisali co nieco. Oczywiście czytałeś?iu
> FMX na pewno nie będzie w tym roku, czy będzie w ogóle - wszystko zależy
> od Embarcadero :)

Dokładnie, jeśli masz czas, to czekaj i dopinguje. Może wyjdzie na
Twoje, może na moje.

> OK - ale ja osobiście nie mam ochoty na pisanie tego samego kodu z
> wykorzystaniem i utrzymywanie wsparcia dla różnych kontrolek
> prezentujących dane w ten sam sposób - np. Grid, Toolbar, TreeView,
> Edit, itd.
> A poza tym - to nieopłacalne.

Ok, ale ja nie tworzę aplikacji tylko jednego typu. Ostatnio mocno
wchodzę w panele dotykowe (ale nie takie produkcyjne) i devex się nie
nadaje. Nie ma żadnego dodatkowego wsparcia dla takich rozwiązań w VCLu,
w .NET już jest. Można coś tam kombinować, ale brnięcie w takie
rozwiązania to jest dopiero nieopłacalne, przecież nie będę wyręczał
DevExa i dopisywał tego, skoro mogę wziąć coś co istnieje, wygląda
lepiej (dla takich zastosowań) i działa tak jak chcę.

wloochacz

unread,
Apr 6, 2012, 6:28:56 AM4/6/12
to
W dniu 2012-04-06 12:09, Przemyslaw Osmanski pisze:
> W dniu 2012-04-06 11:58, wloochacz pisze:
>
>>> normalnie te 10-20% jego możliwości jednocześnie, a reszta - owszem jest
>>> fajna, ładna, ekstra w prezentacjach, w użyciu już tak sobie...
> W użyciu przez użytkownika końcowego - doprecyzuje, bo zapewne
> wywnioskowałeś coś innego.
>
>> Wiesz, kiepskiej tancerce...
>
> I mówi to osoba która nie może/nie chce poprawić jednej linijki w
> XDBGridzie przy połączeniu do AnyDACa... :/
Nie zrozumiałeś, ale nieważne.

> Zauważ że potrzeby są różne.
Otóż to!

>> No widzisz, a w RoadMap napisali co nieco. Oczywiście czytałeś?iu
>> FMX na pewno nie będzie w tym roku, czy będzie w ogóle - wszystko zależy
>> od Embarcadero :)
>
> Dokładnie, jeśli masz czas, to czekaj i dopinguje. Może wyjdzie na
> Twoje, może na moje.
>
>> OK - ale ja osobiście nie mam ochoty na pisanie tego samego kodu z
>> wykorzystaniem i utrzymywanie wsparcia dla różnych kontrolek
>> prezentujących dane w ten sam sposób - np. Grid, Toolbar, TreeView,
>> Edit, itd.
>> A poza tym - to nieopłacalne.
>
> Ok, ale ja nie tworzę aplikacji tylko jednego typu.
A co to jest aplikacja jednego typu?
Dla mnie są trzy typy - desktop, web i SmartPhone.

> Ostatnio mocno
> wchodzę w panele dotykowe (ale nie takie produkcyjne) i devex się nie
> nadaje. Nie ma żadnego dodatkowego wsparcia dla takich rozwiązań w VCLu,
> w .NET już jest. Można coś tam kombinować, ale brnięcie w takie
> rozwiązania to jest dopiero nieopłacalne, przecież nie będę wyręczał
> DevExa i dopisywał tego, skoro mogę wziąć coś co istnieje, wygląda
> lepiej (dla takich zastosowań) i działa tak jak chcę.
Kawałek roadmap na ten rok DEvExpress:
"For the second release, we will have finalized our Touch support for
all our VCL controls, added more chart types for the Chart view,
improved the bars and printing system libraries, as well as enhanced the
Backstage view for the Ribbon. We'll also provide the usual large set of
minor enhancements to various controls."

--
wloochacz

jh

unread,
Apr 6, 2012, 6:33:38 AM4/6/12
to
W dniu 06.04.2012 11:47, wloochacz pisze:
> Tylko z autokaru nie da się zrobić szybkiej osobówki, a z Quantum Grida - jak najbardziej.

Hmmm, a ja nie sądzę, że standardowy grid, lub jego rozwinięcie jak
XDBGrid będzie jakoś specjalnie wolniejszy od QG...

>> We wszystkich newsletterach, które rozsyłają w zasadzie nie pojawia się nic o wersjach VCLowych.
> W zasadzie pojawia się nowa wersje VCLowa co dwa miesiące (a ostatnio częściej). To chyba świadczy o czymś całkowicie innym, prawda?

Nowe wersje nie zawsze oznaczają nową funkcjonalność, a częściej
poprawki bugów.

> Widziałeś wyniki sprzedaży Embarcadero? Indeksy TIOBE?

Nie. Ale nie sądzę, że są one miarodajne w rzeczywistym świecie.
Zresztą, to nie temat na ten topic, poruszany był już wiele razy i nie
ma sensu tego wyciągać. Jak zwał, tak zwał - niszowość, niepopularność
etc. Fakty są takie, że jeśli nawet wyniki sprzedaży urosły, to przy
totalnym powieszeniu psów na XE2 popularność środowiska nie zyskała, a
sporo straciła, co z pewnością będzie rzutować na sprzedaż kolejnej
wersji. A jeśli Embarcadero nie doprowadzi do ładu XE2 (mamy już update
4!) i każe sobie płacić za upgrade do XE3 nabywcom XE2, to nietrudno
przewidzieć jaki będzie tego finał. Owszem, możesz powiedzieć, że nikt
nie kazał się upgrade'ować. Ale to nie jest wytłumaczenie. Kolejny fakt
świadczący na niepopularność Delphi - to jak na ironię sam DevEx. Z
pewnością VCL kontrolki nie należą do sztandarowych. Powiem Ci więcej,
nie zdziwiłbym się, gdyby DA-SOFT uśmiechnął się do .NETu. Z Delphi
wycofało się już wielu producentów bibliotek (dla przykładu FxMod).

OK, zabrnąłem za daleko, nie chcę deprecjonować Delphi, w końcu
zapłaciłem za XE2 parę tygodni temu ;) Nie obyło się bez ciężkich
dylematów, czy przypadkiem nie przejść na VS. Ale zwyciężyło lenistwo i
fakt, że mam opłacone kilka subskrypcji, których mi szkoda :) Jakby nie
patrzeć, DevEx owszem wspiera VCL, ale trudno powiedzieć, że jakoś to
specjalnie rozwija...

> Fakt, dziś zadzwoniło 64-bitami,
> Dziś?
> Wersja 64bit jest dostępna od wersji 2.2, która ukazała się prawie 5
> miesięcy temu.

Pisałem o stronie www. Wydaje mi się, że do wczoraj ciężko było ze
strony głównej trafić na cokolwiek o VCL.

> Nudzisz jak stara baba; kup sobie TMS Subscription Pack,

Mam ;) Wprawdzie Component Pack, ale to mi wystarczy.

> będziesz miał grida i wszystko inne w cenie 4x mniejszej od DevEx - w czym problem?

Ich grid jest fatalny. Ale za to mają nieco innych wodotryskowych
kontrolek, których u konkurencji nie znajdziesz. Nie marudzę jak stara
baba, po prostu oprócz tego autokaru chcę używać Skody jadąc do Tesco,
bo tam mają ograniczenie na wysokość pojazdu, ba! nawet anteny każą
odkręcać :) A Porshe to pod Realem kradną w ciągu 15 minut :P A na
marginesie, to chyba wczoraj umarł projektant słynnego Porshe 911...

jh

Adam Siwoń

unread,
Apr 6, 2012, 6:55:08 AM4/6/12
to
W dniu 2012-04-06 11:13, wloochacz pisze:
Ja też bym chciał. :-) I nawet napisałbym to sobie sam jakby grid miał
do tego jakiś sensowny interfejs.

Przemyslaw Osmanski

unread,
Apr 6, 2012, 7:10:20 AM4/6/12
to
W dniu 2012-04-06 12:28, wloochacz pisze:

>> Ok, ale ja nie tworzę aplikacji tylko jednego typu.
> A co to jest aplikacja jednego typu?
> Dla mnie są trzy typy - desktop, web i SmartPhone.

No cóż ja te desktop rozbijam na kilka innych, gdzie choćby rozróżnia
ich samo GUI i sposób pracy z nim. Aplikacje tzw. biurowe (tj. CRMmy,
ERP, i inne typowo - okienkowo-bazodanowe) różnią się znacznie od
aplikacji panelowych i to nie tylko pod względem filozofii pracy.

> Kawałek roadmap na ten rok DEvExpress:
> "For the second release, we will have finalized our Touch support for
> all our VCL controls, added more chart types for the Chart view,
> improved the bars and printing system libraries, as well as enhanced the
> Backstage view for the Ribbon. We'll also provide the usual large set of
> minor enhancements to various controls."

Tylko że ja rozwiązania tego typu sprzedaje już od pewnego czasu. Wiążąc
się tylko z DevEx, albo musiałbym to sobie sam oprogramować, albo czekać
na zrobienie to przez nich. Wychodzi na to, że robią dobrze, ale
zdecydowanie za późno. Zresztą nawet jak dodadzą i opublikują ten Touch
support to nie znaczy że od razu będzie to działać dobrze (choć znając
ich jest na to duża szansa), a poza tym zapewne wtedy już pojawi się W8
z Metro (które jest coraz bardziej promowane) i o ile DevEx ma to już w
DXv2 to w VCLu pewno marne szanse na to w rozsądnym czasie (czyli takim
który by dał mi możliwość ich zastosowania zanim zrobi się zalew takich
aplikacji lub zanim konkurencja je zastosuje).
Wybacz, cenię DevExa za jakość, ale ostatnio przy okazji przejścia do
XE2 poważnie się zastanawiałem czy nie wybrać VS.NET + DXv2. Tak
naprawdę to tylko sentyment mnie zatrzymał i to że miałem masę pomysłów
na użycie XE2 (przy założeniu posiadania D2009).
DevEx może wydaje wersje co 2 miesiące, ale różnice są oznaczane tylko
jako enhancements lub improvments... a ja oczekuje new!

wloochacz

unread,
Apr 6, 2012, 7:58:49 AM4/6/12
to
W dniu 2012-04-06 13:10, Przemyslaw Osmanski pisze:
> W dniu 2012-04-06 12:28, wloochacz pisze:
>
>>> Ok, ale ja nie tworzę aplikacji tylko jednego typu.
>> A co to jest aplikacja jednego typu?
>> Dla mnie są trzy typy - desktop, web i SmartPhone.
>
> No cóż ja te desktop rozbijam na kilka innych, gdzie choćby rozróżnia
> ich samo GUI i sposób pracy z nim. Aplikacje tzw. biurowe (tj. CRMmy,
> ERP, i inne typowo - okienkowo-bazodanowe) różnią się znacznie od
> aplikacji panelowych i to nie tylko pod względem filozofii pracy.
Panel = Smart(Phone).

>> Kawałek roadmap na ten rok DEvExpress:
>> "For the second release, we will have finalized our Touch support for
>> all our VCL controls, added more chart types for the Chart view,
>> improved the bars and printing system libraries, as well as enhanced the
>> Backstage view for the Ribbon. We'll also provide the usual large set of
>> minor enhancements to various controls."
>
> Tylko że ja rozwiązania tego typu sprzedaje już od pewnego czasu.
Nie sposób Ci dogodzić; najpierw płaczesz, że nie ma i że na pewno nie
będzie - to cytuję Ci oficjalny roadmap.
A teraz dowiadujemy się, że to już za późno bo Ty chcesz na wczoraj...

> Wiążąc
> się tylko z DevEx, albo musiałbym to sobie sam oprogramować, albo czekać
> na zrobienie to przez nich. Wychodzi na to, że robią dobrze, ale
> zdecydowanie za późno. Zresztą nawet jak dodadzą i opublikują ten Touch
> support to nie znaczy że od razu będzie to działać dobrze (choć znając
> ich jest na to duża szansa), a poza tym zapewne wtedy już pojawi się W8
> z Metro (które jest coraz bardziej promowane) i o ile DevEx ma to już w
> DXv2 to w VCLu pewno marne szanse na to w rozsądnym czasie (czyli takim
> który by dał mi możliwość ich zastosowania zanim zrobi się zalew takich
> aplikacji lub zanim konkurencja je zastosuje).
> Wybacz, cenię DevExa za jakość, ale ostatnio przy okazji przejścia do
> XE2 poważnie się zastanawiałem czy nie wybrać VS.NET + DXv2. Tak
> naprawdę to tylko sentyment mnie zatrzymał i to że miałem masę pomysłów
> na użycie XE2 (przy założeniu posiadania D2009).
> DevEx może wydaje wersje co 2 miesiące, ale różnice są oznaczane tylko
> jako enhancements lub improvments... a ja oczekuje new!
Ale co mnie to?
Dyskusja była w kontekście GRIDA!
A Ty mi tu wyjeżdżasz z koncertem życzeń itd.
Do DevExpress napisz - co to ma do tematu?

Znudziło mi się już tłumaczenie z ichniego na nasze - sam sobie poczytaj
i podejmij decyzje.
Twój cyrk - Twoje małpy.

--
wloochacz



wloochacz

unread,
Apr 6, 2012, 8:06:20 AM4/6/12
to
W dniu 2012-04-06 12:33, jh pisze:
> W dniu 06.04.2012 11:47, wloochacz pisze:
>> Tylko z autokaru nie da się zrobić szybkiej osobówki, a z Quantum
>> Grida - jak najbardziej.
>
> Hmmm, a ja nie sądzę, że standardowy grid, lub jego rozwinięcie jak
> XDBGrid będzie jakoś specjalnie wolniejszy od QG...
>
>>> We wszystkich newsletterach, które rozsyłają w zasadzie nie pojawia
>>> się nic o wersjach VCLowych.
>> W zasadzie pojawia się nowa wersje VCLowa co dwa miesiące (a ostatnio
>> częściej). To chyba świadczy o czymś całkowicie innym, prawda?
>
> Nowe wersje nie zawsze oznaczają nową funkcjonalność, a częściej
> poprawki bugów.
...
Następny - najpierw masz pretensje, że nic się nie dzieje.
Potem mówisz, że faktycznie są zmiany, ale nie takie jakbyś chciał.
Ale powiedz mi - co mnie to obchodzi?
Dlaczego piszesz z tym do mnie?
Do autorów napisz, jak bardzo jesteś nieszczęśliwy z tym, że nie wiesz
co masz zrobić - na pewno Ci pomogą.

>> Widziałeś wyniki sprzedaży Embarcadero? Indeksy TIOBE?
>
> Nie. Ale nie sądzę, że są one miarodajne w rzeczywistym świecie.
OK - wierzę Ci na słowo, jako opiniotwórczemu fachowcowi od
rzeczywistego świata w kontekście popularności języków programowania.

> Zresztą, to nie temat na ten topic, poruszany był już wiele razy i nie
> ma sensu tego wyciągać. Jak zwał, tak zwał - niszowość, niepopularność
> etc. Fakty są takie, że jeśli nawet wyniki sprzedaży urosły, to przy
> totalnym powieszeniu psów na XE2 popularność środowiska nie zyskała, a
> sporo straciła, co z pewnością będzie rzutować na sprzedaż kolejnej
> wersji. A jeśli Embarcadero nie doprowadzi do ładu XE2 (mamy już update
> 4!) i każe sobie płacić za upgrade do XE3 nabywcom XE2, to nietrudno
> przewidzieć jaki będzie tego finał. Owszem, możesz powiedzieć, że nikt
> nie kazał się upgrade'ować. Ale to nie jest wytłumaczenie. Kolejny fakt
> świadczący na niepopularność Delphi - to jak na ironię sam DevEx. Z
> pewnością VCL kontrolki nie należą do sztandarowych. Powiem Ci więcej,
> nie zdziwiłbym się, gdyby DA-SOFT uśmiechnął się do .NETu.
A po co?
W .NET to oni mają coś takiego (chodzi o archtekturę AnyDAC <-> NTE.ADO)
od samego początku.

> Z Delphi
> wycofało się już wielu producentów bibliotek (dla przykładu FxMod).
Faktycznie, uznany producent; ale co oni robili, bo nie osobiście nie
mam pojęcia? Pewnie jakiś nie-niszowy produkt, zgadłem?

> OK, zabrnąłem za daleko, nie chcę deprecjonować Delphi, w końcu
> zapłaciłem za XE2 parę tygodni temu ;) Nie obyło się bez ciężkich
> dylematów, czy przypadkiem nie przejść na VS. Ale zwyciężyło lenistwo i
> fakt, że mam opłacone kilka subskrypcji, których mi szkoda :) Jakby nie
> patrzeć, DevEx owszem wspiera VCL, ale trudno powiedzieć, że jakoś to
> specjalnie rozwija...
>> Fakt, dziś zadzwoniło 64-bitami,
>> Dziś?
>> Wersja 64bit jest dostępna od wersji 2.2, która ukazała się prawie 5
>> miesięcy temu.
>
> Pisałem o stronie www. Wydaje mi się, że do wczoraj ciężko było ze
> strony głównej trafić na cokolwiek o VCL.
Mam wrażenie, że Tobie generalnie sporo się wydaje.

>> Nudzisz jak stara baba; kup sobie TMS Subscription Pack,
>
> Mam ;) Wprawdzie Component Pack, ale to mi wystarczy.
No i lux! Problem rozwiązany - a nie, nie rozwiązany, bo zaraz się
dowiemy,że tam nie działa połowa rzeczy z tych co powinny działać...

>> będziesz miał grida i wszystko inne w cenie 4x mniejszej od DevEx - w
>> czym problem?
>
> Ich grid jest fatalny. Ale za to mają nieco innych wodotryskowych
> kontrolek, których u konkurencji nie znajdziesz. Nie marudzę jak stara
> baba, po prostu oprócz tego autokaru chcę używać Skody jadąc do Tesco,
> bo tam mają ograniczenie na wysokość pojazdu, ba! nawet anteny każą
> odkręcać :) A Porshe to pod Realem kradną w ciągu 15 minut :P A na
> marginesie, to chyba wczoraj umarł projektant słynnego Porshe 911...
Szkoda czasu na takie koncerty życzeń, to naprawdę nic nie wnosi...

--
wloochacz

wloochacz

unread,
Apr 6, 2012, 8:17:47 AM4/6/12
to
W dniu 2012-04-05 19:27, Krzysztof Szyszka pisze:
> Użytkownik "wloochacz" napisał w wiadomości ...
>>> A to teraz juz wszystko rozumiem :-) Chyba uraziłem Twoje Ego.
>> Nie, nie - to nie ma nic wspólnego z moim ego - po prostu czepiam się
>> szczegółów, które mogą być źródłem problemów. Mogą, ale nie muszą -
>> czyli podobnie jak w przypadku tamtej dyskusji o delegatach.
>> A czepiam się, bo wiem że takie coś może tam wystąpić i nie rozumiem
>> dlaczego nie chcesz przyznać że to jest możliwe...
>
> Ależ ja Ci wierzę :-) Gdyby tak nie było, to nie podawałbym Ci, w jaki
> sposób
> każdy użytkownik może sobie z tym łatwo poradzić i to przynajmniej na dwa
> sposoby, bez żadnej ingerencji z mojej strony. Nawet Artur gdzieś tam dalej
> podał Ci prawidłowe rozwiązanie.
OK - ale chodzi o automat, który czasem psuje - w szerszym kontekście, a
nie tylko w przypadku X-DBGrida.
Fajnie, że można to zmienić i jest OK - jakby była jeszcze mała notka na
ten temat w dokumentacji, to byłbym przeszczęśliwy ;)

> Natomiast Ty piszesz o tym w tak alarmistyczny sposób, jakby brak jakichś
> działań z mojej strony powodował minimum rozwalenie bazy danych, podczas
> gdy jest to problem czysto optymalizacyjny.
Bez jaj - jaki alarmistyczny?
Napisałem, że roizpindraczy keszowanie detali - a nie że wywali w kosmos
bazę danych.

>>> No właśnie dzięki Tobie dowiedzieliśmy się, że AnyDAC jest pod tym
>>> względem "wyjątkowy",
>>> a Ty starasz się być bardziej papieski od papieża. Gdybym był
>>> zarejestrowanym użytkownikiem
>>> AnyDAC, to sam bym zgłosił ten problem do autora i podejrzewam, że
>>> łatwiej byłoby mi jego
>>> przekonać do respektowania ogólnie przyjętych zasad niż Ciebie, bo
>>> widzę, że on również
>>> jasno i klarownie podaje przy okazji kolejnych wydań, jakie istotne
>>> bugi zostały poprawione,
>>> a IMHO nie ma żadnego logicznego uzasadnienia dlaczego korzystanie z
>>> IndexFieldNames
>>> miałoby mieć jakikolwiek wpływ na to, co jest keszowane.
>> Bo zdałeś sobie trudu zrozumieć jak to działa - ja sobie zadałem i
>> dlatego napisałem o konwencji.
>> W przytoczonych ADO czy innych nie ma widoków wewnątrz DataSet'a, w
>> ogóle całą architektura jest zupełnie inna i po prostu tego nie da się
>> porównać na każdym poziomie.
>
> Nie czytasz mnie uważnie. Ja nigdy nie porównywałem całej
> funkcjonalności AnyDAC i ADO.
> Odnosiłem się tylko do tej jednej konkretnej właściwości
> (IndexFieldNames), która gdzieś
Wiem, że nie całej funkcjonalności - tylko wybiórczo tę, która Ci pasuje.
Ale sam zauważyłeś, że w ADO owo IndexFieldNames może znacząco
przyspieszyć działanie MAster-Detail.
To co się z tym przyspieszenie stanie, jak automat to nadpisze?
Tez będzie OK?

> między kolejnymi wersjami AnyDAC nieco zmieniła swój charakter (po
> dołożeniu pewnych
> opcji) i dziwi mnie, że taka osoba jak Ty, która zna na pamięć wszystkie
> wzorce i antywzorce
> projektowe, nie widzi w tym nic szczególnego i nawet nie przeszkadza
> jej, że jakaś właściwość
> typu published ma służyć jednocześnie do realizacji dwóch różnych
> funkcjonalności.
Powiem Ci tak - działa to w ten sposób odkąd pamiętam; nie jestem pewien
jak było w wersji 0.9.x i 1.x - ale na pewno działa tak jak opisuję od
wersji 2.x do obecnej.
A wersja 2.x pojawiła się w 2007 roku.
Od kiedy masz wsparcie dla AnyDAC?

> Gdybym ja coś takiego zrobił w X-DBGridzie, to najłagodniej oceniłbyś to
> jako "krzywe".
No co Ty - nazwałbym to konwencją :)

>>> Jak nie wyszło z keszowniem detali, to trzeba przyczepić się do
>>> czegoś innego ;-)
>> I jak tu z Tobą dyskutować - zwracam Ci uwagę na kolejny możliwy
>> problem, a Ty dalej dzwonisz, że Twój grid jest cacy a AnyDAC nie
>> jest, bo ma większe możliwości o których nie wiesz lub nie chcesz
>> wiedzieć.
>> Można i tak.
>
> A po co ja mam Ci odpowiadać na pytanie, na które Ty sam od razu dajesz
> odpowiedź
> w następnej linijce pisząc, że na pewno się wywali :-) (cytat poniżej)
>
>> Ale ja wiem jak to zadziała, kiedy się wywali i dlaczego.
>
> Ja też wiem, jak to zadziała i wie to również każdy użytkownik mojego
> komponentu,
> który choć raz użył pól kalkulowanych w tym gridzie. A ty już wiesz ?
> Sprawdziłeś ?
Nie, nie sprawdziłem - ja pytałem.
Nie zakładam,że działa to w Twoim gridzie tak czy siak - pytam czy
działa tak, czy inaczej, bo jak działa tak - to na pewno się wywali.
Teraz wszystko jasne i zrozumiałe?

>>> W przeciwieństwie do Twojego mitycznego frameworka, moje pakiety są
>>> ogólnie dostępne dla wszystkich.
>> Ale mój mityczny kod nie jest dla wszystkich - ja tego nie sprzedaję i
>> nie będę sprzedawała jako produkt dla programistów.
>> A dwa - co to ma do rzeczy w tej dyskusji?
>
> Chciałem Ci tylko zwrócić uwagę, że zanim znowu z czymś takim wyskoczysz,
> to możesz sam sprawdzić, jak zachowa się mój komponent, a ja muszę wierzyć
A więc skoro raczysz ogłaszać się z komercyjnym komponentem na
publicznej grupie, to nie mam prawa zapytać o nic, bo odpowiesz mi -
"sam sobie sprawdź bo twój framework jest the best" - czy tak?

> Ci na słowo, że Twój framework jest the best, bo nic innego mi nie
> pozostaje :-)
Powtarzam pytanie - a co to ma do rzeczy?
o co Wam w wątku o gridzie chodzi z tym frameworkim - cz ja się słowem
na ten temat tu zająknąłem?

--
wloochacz

wloochacz

unread,
Apr 6, 2012, 8:31:08 AM4/6/12
to
W dniu 2012-04-05 16:58, Roman Wilk pisze:
> On 5 Kwi, 14:40, wloochacz<wlooch...@nospam.nie.gmail.com> wrote:
>> W dniu 2012-04-04 23:05, Roman Wilk pisze:
>
> Ty piszesz jak nauczyciel akademicki (może nim rzeczywiście jesteś,
> bo jak widzę spędzasz na tej grupie sporo czasu (to nie jest
> złośliwość, mnie po prostu nie stać poświęcić tyle czasu na
> dyskusje ... ) ).
Bo ja mam framework do pisania na grupie.
Teraz, mam nadzieję, wszystko jasne.

> Dyskusja odnośnie logiki ERP'a, czy po stronie bazy czy po stronie
> Aplikacji, jest akademicka, ponieważ istnieją na ryku produkty
> realizujące obydwa podejścia i zdają egzamin w użytkowaniu (choć
> raczej przeważa podejście logika Aplikacja, więzy baza, ale to
> oczywiście sprawa podejścia do projektu).
Są i takie produkty, które mają logikę i tu i tu.
Oraz takie, które mają logikę rozproszoną na wiele serwerów aplikacyjnych.
Nie uważam takiej dyskusji za akademicką, jeśli poda się konkretne
warunki do tej dyskusji.

> Poza tym tak myślę, że po świętach założe temat "Czy da się napisać
> ERP'a (ERP'a nie programik do wystawiania FV)" używając tylko
> Framework'ow, bez klikania kodu pod formą i indywidualnym podejściem
> do funkcjonalności.
Jak określisz co to dokładnie znaczy "bez klikania kodu pod formą", to
można podyskutować.
Bo jeśli rozumiesz przez to formatkę pracowicie wydzierganą w IDE, gdzie
logika jest oparta na zdarzeniach kontrolek tej formy (czyli "kod pod
formą"), to będę się upierał, że się nie da tego napisać bez frameworka.
Może napisać się da, ale utrzymywać - ho, ho...


> Np. Taki proces.
>
> 1. Utwórz zamówienie 1
> 2. Wykonaj do niego chronologiczne rezerwacje
> 3 Utwórz zamówienie 2
> 4. Wykonaj do niego chronologiczne rezerwacje
> 5. Zrealizuj zamówienia w jednej FV i zmień walutę FV z PLN na EUR
> (zaksięguj wszystko na kontach analitycznych w grupach podatkowych,
> czyli mając np. 1000,00 PLN księgujesz 300 i liczysz od tego podatek
> VAT, 200 i liczysz podatek VAT itd, aż do zamknięcia dekretu).
> Oczywiście wartość waluty<> wartości pln powstają zaokrąglenia,
> trzeba to przewidzieć i oprogramować. Księgowania FV są w czasie
> rzeczywistym i dotyczą rozrachunku i kosztu własnego.
> 6. Zdejmij pozycję MWS (magazyn wysokiego składu, czyli pokaż
> magazynierowi gdzie to leży i przygotuj raport lokalizacji pozycji z
> FV) oczywiście MWS chodzi pod dokumentem w tle i pokaże jego (MWS/
> rząd / regał / półka / paleta) graficzny obraz w magazynie
> 7. Koszt własny jest liczony z rzeczywistych cen zakupu (czyli
> algorytm FIFO/LIFO), czyli wartość WZ w cenach zakupu jest rzeczywista
> (tyle ile zapłacono za ten towar), podczas generowania FV. Czyli po
> wystawieniu FV użytkownik natychmiast wie ile zyskał.
>
> To na razie na tyle. Jak myślisz Twój Framework sobie z tym poradzi.
Mój "framework" nie modeluje obiektów biznesowych, a więc poradzi sobie
z tym - nijak.
Jego cele i zadania są inne; on zajmuje się wszystkim tym, co da się
zautomatyzować, co jest powtarzalne i nudne jak falki z olejem, ale co
trzeba zrobić.
Mam na myśli takie aspekty jak: tworzenie formatek (od stworzenia nowej
klasy okna, do zbudowania formatki zawierającej konrektene kontrolki,
prezentujące konkretne dane z konkretnych źródeł danych - to akurat robi
się automatycznie), zarządzenie danymi w kontekście obiektu biznesowego
(pobranie danych, zapis, walidacja, usuwania, itd.), zarządzanie
uprawnieniami, zarządzanie układami okien/gridów, zarządzanie raportami
(wydrukami), itd. itp.
Pisałem o tym wielokrotnie - upraszczając jest to taka funkcjonalność:
http://edn.embarcadero.com/article/33887
+ trochę więcej.

> Myślę, że jak ja miałbym to wszystko (choć oczywiście to wszystko jest
> w kodzie ładnie opakowane) sparametryzować do Frameworka, to zajełoby
> mi to 6-8 mc, następnie udokumentowanie i przekazanie tego programistą
> jakieś 2-3 mc. No i po roku może bym miał to w bardzo skondensowanej
> postaci i pewnie tylko ja sam mógłbym to utrzymywać.
Być może...
Ale żeby w ogóle się do tego odnieść to musiałbym dokładnie zrozumieć co
masz na myśli pisząc o "sparametryzowaniu wszystkiego do frameworka"?

> Ps.
>
> Tylko nie pisz, że podane założenia to "wytyczne co ma robić program"
> i nie mają nic wspólnego z tym jak to zostanie to przez programistę
> oprogramowane. Celowo wybrałem dość prosty i właściwie klasyczny
> przypadek działania ERP'a (robiącego troszkę więcej niż wystawianie
> FV) o zintegrowanej logice przetwarzania danych.
OK - nie będę.
A jak Ty to robisz?

--
wloochacz

PaSkol

unread,
Apr 6, 2012, 8:55:24 AM4/6/12
to
W dniu 2012-04-06 14:17, wloochacz pisze:

> o co Wam w wątku o gridzie chodzi z tym frameworkim - cz ja się słowem
> na ten temat tu zająknąłem?

Babki zielarki oraz znachorki
każą omijać z dala frameworki.
Znają się na tym (tak, jak na gridach)!
Według nich framework to straszny brzydal!
Pomiotem diabła jest i potworkiem!
Kto by się kiedy zetknął z frameworkiem,
niech się natychmiast natrze tawotem,
pierze na siebie wysypie potem,
stanie na głowie, stopami klaśnie,
zamruczy, chrząknie, zagwiżdże, wrzaśnie,
stanie na nogi, przez ramię splunie,
to czar frameworka odeń odsunie.
I znów się przed nim zacznie roztaczać
błogie i proste życie klepacza.

P.S.
Przeciw nawrotom framework-cholery
Warto stosować kopypasteryzm.


--
Dearth PaSkol

- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.

jh

unread,
Apr 6, 2012, 9:56:56 AM4/6/12
to
W dniu 06.04.2012 14:06, wloochacz pisze:
>> Nowe wersje nie zawsze oznaczają nową funkcjonalność, a częściej
>> poprawki bugów.

> Następny - najpierw masz pretensje, że nic się nie dzieje.
> Potem mówisz, że faktycznie są zmiany, ale nie takie jakbyś chciał.

Interpretujesz wypowiedzi tak, że cokolwiek i ktokolwiek powie, racja
musi być po Twojej stronie :) OK, Twoje prawo. Ale wystarczy odrobina
dobrej woli, żeby nie trzeba było kawa na ławę. W końcu rozmawiamy
posługując się hasłami, bo nie potrzebujemy sobie dosłownie tłumaczyć
każdego zdania. Przecież wszyscy wiedzą o co chodzi... Przynajmniej mam
taką nadzieję.

Dobrze wiesz czym różni się update od upgrade'u. I update z reguły nie
oznacza nowych technologii czy funkcjonalności. To, że pojawiają się
poprawki nie świadczy o rozwoju technologii, a jedynie o jej
utrzymywaniu. Ale po co ja to piszę, przecież z usług korzystamy na co
dzień, czy też sami je oferujemy...

> Ale powiedz mi - co mnie to obchodzi?
> Dlaczego piszesz z tym do mnie?

Przez grzeczność odpisuję pod Twoim postem, skoro pytanie było pod moją
wypowiedzią. Grupa dyskusyjna i jej zasady, odpowiadam publicznie. Nie
posłałem Ci przecież maila z zażaleniem.

> Do autorów napisz, jak bardzo jesteś nieszczęśliwy

NC

[...]

> Szkoda czasu na takie koncerty życzeń, to naprawdę nic nie wnosi...

Dyskusja idzie w różne strony i nie widzę w tym nic zdrożnego, Ty
używasz przenośni, więc przenośnią Ci odpowiadam. Ot, co.

jh

wloochacz

unread,
Apr 6, 2012, 10:13:28 AM4/6/12
to
W dniu 2012-04-06 15:56, jh pisze:
> W dniu 06.04.2012 14:06, wloochacz pisze:
>>> Nowe wersje nie zawsze oznaczają nową funkcjonalność, a częściej
>>> poprawki bugów.
>
>> Następny - najpierw masz pretensje, że nic się nie dzieje.
>> Potem mówisz, że faktycznie są zmiany, ale nie takie jakbyś chciał.
>
> Interpretujesz wypowiedzi tak, że cokolwiek i ktokolwiek powie, racja
> musi być po Twojej stronie :) OK, Twoje prawo. Ale wystarczy odrobina
> dobrej woli, żeby nie trzeba było kawa na ławę. W końcu rozmawiamy
> posługując się hasłami, bo nie potrzebujemy sobie dosłownie tłumaczyć
> każdego zdania. Przecież wszyscy wiedzą o co chodzi... Przynajmniej mam
> taką nadzieję.
Pieprzenie w bambus.
Dlaczego nie masz pretensji do autora EhLib'a albo X-DBGrida, że nie
dają wsparcia dla FireMonkey? Jakoś nie widziałem, aby się określili czy
takie wsparcie w ogóle się pojawi.
Za to narzekasz na DevExpress, ale z kolei chciałbyś mieć podobną
funkcjonalność (grupowanie, master-detail w gridzie) np. w X-DBGrid jak
w DevExpress. Ale żeby to to nie był DevExpress.
Coś mi tu nie gra - i to ja ma mieć zawsze rację, tak?
OK.

Co do tego,że wszyscy wiedza o co chodzi - wystaw sobie, ja nie wiem o
co Ci chodzi.
Inni producenci gridów muszą jeszcze przez wiele lat wypuszczać upgrade,
aby dogonić DevExpress z ich ostatnim update. I to nadal jest wg. Ciebie
OK, bo oni pracują - a DevExppress się obija.
Ja widzę to inaczej - ale na szczęście nie ma obowiązku używania tych
czy innych komponentów.

> Dobrze wiesz czym różni się update od upgrade'u. I update z reguły nie
> oznacza nowych technologii czy funkcjonalności. To, że pojawiają się
> poprawki nie świadczy o rozwoju technologii, a jedynie o jej
> utrzymywaniu. Ale po co ja to piszę, przecież z usług korzystamy na co
> dzień, czy też sami je oferujemy...
Jakbyś zadał sobie trud, to może znalazłbyś i nową funkcjonalność - a że
to akurat nie jest to co Ci potrzebne, cóż... Na szczęście dla mnie,
jest tam coś co mi było potrzebne.
BTW - server side filtering dla Quantum Grida, to jak rozumiem jest
drobna poprawka, tak?

/ciach/

PS.
Co to za popularne komponenty FXMod, bo dalej nie wiem - a ciekawym bardzo.

--
wloochacz

jh

unread,
Apr 6, 2012, 10:29:44 AM4/6/12
to
W dniu 06.04.2012 16:13, wloochacz pisze:
> Dlaczego nie masz pretensji do autora EhLib'a albo X-DBGrida, że nie dają wsparcia dla FireMonkey?

FMX na razie traktuję jako ciekawostkę. Jeżeli w FMX pojawi się jakiś
TCustomGrid to pewnie i XDBGrid nie będzie się bronił przed tym.

> chciałbyś mieć podobną funkcjonalność (grupowanie, master-detail w gridzie) np. w X-DBGrid jak w DevExpress

Tak. Bo oprócz tego minimum z TDBGrida chciałbym mieć właśnie to. DevEx
ma mnóstwo innych funkcjonalności, które czasami są po prostu
niepotrzebne. Po prostu chcę mieć wybór i czasem użyć innego narzędzia,
ale musi ono posiadać określone funkcjonalności. Można mieć kombajn do
wszystkiego, ale czasem bywa to zbędne. Nie rezygnuję z DevExa, chcę go
_oprócz_ DevExa.

> BTW - server side filtering dla Quantum Grida, to jak rozumiem jest
> drobna poprawka, tak?

Nie zauważyłem, przyznaję. Ale może dlatego, że robiłem tak, że jak
miałem wszystkie rekordy pobrane to filtrowałem lokalnie, a jeśli nie to
tłumaczyłem sobie filtr na SQLa i wstawiałem do makra "where".

> Co to za popularne komponenty FXMod, bo dalej nie wiem - a ciekawym bardzo.

Oops, moja literówka, FMOD (http://www.fmod.org/). Pewnie masz z tym
częściej do czynienia, niż Ci się wydaje. Mnóstwo aplikacji
smartfonowych, desktopowych, gier itd. No i kiedyś wspierali Delphi...

jh


Przemek O

unread,
Apr 6, 2012, 12:30:54 PM4/6/12
to
W dniu 2012-04-06 13:58, wloochacz pisze:

> Panel = Smart(Phone).

Nie - Panel = komputer z monitorem dotykowym.

> Nie sposób Ci dogodzić; najpierw płaczesz, że nie ma i że na pewno nie
> będzie - to cytuję Ci oficjalny roadmap.
> A teraz dowiadujemy się, że to już za późno bo Ty chcesz na wczoraj...

Kurcze, nie rozumiesz, czy nie chcesz zrozumieć? Znam roadmap DevExa.
Płaczę że nie ma, bo na teraz i na moment kiedy potrzebowałem nie było.
To że piszą że będzie, to zobaczymy. Ale dokładnie tak - przespali
odpowiedni moment i znowu przesypiają następny. Chociaż tak od strony
biznesowej to ich rozumiem. Tylko nie można się później dziwić, że tak
dobre komponenty nie są używane tak gdzie by mogły być. Sam zresztą
wiesz, że jeśli już dostosujesz się do jakiegoś rozwiązania to ciężko
(także ekonomicznie) przenieść się na coś innego. W tym przypadku na
devexa z dotykówką już nie wrócę. Po prostu - nie będzie się opłacać.

> Ale co mnie to?
> Dyskusja była w kontekście GRIDA!
> A Ty mi tu wyjeżdżasz z koncertem życzeń itd.
> Do DevExpress napisz - co to ma do tematu?

Bo nie możesz zrozumieć, że czasami prostsze jest lepsze. I dotyczy to
także GRIDA!
Co do DevEx'a, to myślisz że do nich nie pisałem? Nie podejmuje decyzji
na podstawie kolorowych obrazków.

> Znudziło mi się już tłumaczenie z ichniego na nasze - sam sobie poczytaj
> i podejmij decyzje.
> Twój cyrk - Twoje małpy.

I o to chodzi, to co pasuje Tobie, nie zawsze musi pasować innym. Tylko
pytanie, dlaczego czasami chcesz żeby wszystkie małpy były podobne do
Twoich???

W każdym razie, Wesołych i spokojnych Świąt życzę, bo ja już sobie robię
przerwę do wtorku :P

pozdrawiam,
Przemek O.

Krzysztof Szyszka

unread,
Apr 6, 2012, 1:29:49 PM4/6/12
to
Użytkownik "wloochacz" napisał w wiadomości ...
>W dniu 2012-04-05 19:27, Krzysztof Szyszka pisze:
>> Użytkownik "wloochacz" napisał w wiadomości ...
>>>> A to teraz juz wszystko rozumiem :-) Chyba uraziłem Twoje Ego.
>>> Nie, nie - to nie ma nic wspólnego z moim ego - po prostu czepiam się
>>> szczegółów, które mogą być źródłem problemów. Mogą, ale nie muszą -
>>> czyli podobnie jak w przypadku tamtej dyskusji o delegatach.
>>> A czepiam się, bo wiem że takie coś może tam wystąpić i nie rozumiem
>>> dlaczego nie chcesz przyznać że to jest możliwe...
>>
>> Ależ ja Ci wierzę :-) Gdyby tak nie było, to nie podawałbym Ci, w jaki sposób
>> każdy użytkownik może sobie z tym łatwo poradzić i to przynajmniej na dwa
>> sposoby, bez żadnej ingerencji z mojej strony. Nawet Artur gdzieś tam dalej
>> podał Ci prawidłowe rozwiązanie.
> OK - ale chodzi o automat, który czasem psuje - w szerszym kontekście, a nie tylko w przypadku
> X-DBGrida.

Nic nie psuje. Przestań w końcu pisać bzdury, jak nie znasz produktu.

Po pierwsze: automat domyślnie nie jest włączony.
Po drugie: żeby zadziałał z TADQuery, to trzeba dla TADQuery zarejestrować
jedną z dwóch dostępnych dla tej klasy metod zmiany sortowania i to jest
pozostawione do wyboru temu, kto używa X-DBGrida z AnyDAC.
Prościej już się nie dało.

> Wiem, że nie całej funkcjonalności - tylko wybiórczo tę, która Ci pasuje.
> Ale sam zauważyłeś, że w ADO owo IndexFieldNames może znacząco przyspieszyć działanie
> MAster-Detail.
> To co się z tym przyspieszenie stanie, jak automat to nadpisze?
> Tez będzie OK?

To tez jest wybór użytkownika, a nie mój. Czy chce mieć sortowanie, czy nie.
Zresztą tu też jest dostępna druga metoda, bo dla TADODataSet można również
zmieniać sortowanie poprzez zmianę ORDER BY w CommandText, a co i kiedy
będzie lepsze, to już zależy od konkretnego zastosowania i mnie nic do tego.

Ja zapewniam wsparcie dla każdej (dostępnej w danej klasie) metody zmiany
sortowania i na tym moja rola się kończy.

>> między kolejnymi wersjami AnyDAC nieco zmieniła swój charakter (po dołożeniu pewnych
>> opcji) i dziwi mnie, że taka osoba jak Ty, która zna na pamięć wszystkie wzorce i antywzorce
>> projektowe, nie widzi w tym nic szczególnego i nawet nie przeszkadza jej, że jakaś właściwość
>> typu published ma służyć jednocześnie do realizacji dwóch różnych funkcjonalności.
> Powiem Ci tak - działa to w ten sposób odkąd pamiętam; nie jestem pewien jak było w wersji 0.9.x i
> 1.x - ale na pewno działa tak jak opisuję od wersji 2.x do obecnej.
> A wersja 2.x pojawiła się w 2007 roku.

ROTFL. Czy wszystko, o czym piszesz jest tak samo prawdziwe, jak to zdanie powyżej ? ;-)

> Od kiedy masz wsparcie dla AnyDAC?

Od wersji 2.0. Mam ją nawet jeszcze na dysku.
Ciekawe jak to się stało, że są tam już pakiety dla Delphi 2010 ? :-)
A może chciałbyś wiedzieć, co wtedy autor pisał o używaniu TADQuery.IndexFieldNames ? ;-)

>> Gdybym ja coś takiego zrobił w X-DBGridzie, to najłagodniej oceniłbyś to jako "krzywe".
> No co Ty - nazwałbym to konwencją :)

>> Ja też wiem, jak to zadziała i wie to również każdy użytkownik mojego komponentu,
>> który choć raz użył pól kalkulowanych w tym gridzie. A ty już wiesz ? Sprawdziłeś ?
> Nie, nie sprawdziłem - ja pytałem.
> Nie zakładam,że działa to w Twoim gridzie tak czy siak - pytam czy działa tak, czy inaczej, bo jak
> działa tak - to na pewno się wywali.

No co Ty - działa zgodnie z konwencją przyjętą w X-DBGridzie :-)

> Teraz wszystko jasne i zrozumiałe?

Już od kilku postów intencje Twoich pytań są dla mnie jasne, choć nie końca zrozumiałe ;-)
Zastanawiam się tylko, po co dalej ciągnę tą dyskusję z Tobą ...

--
pozdrowienia
Krzysztof Szyszka, X-Files Software
Developer of X-Files Components
Borland/CodeGear/Embarcadero Technology Partner
_________________________________________
Website: http://www.x-files.pl/ E-mail: ne...@x-files.pl

wloochacz

unread,
Apr 6, 2012, 4:39:06 PM4/6/12
to
W dniu 2012-04-06 19:29, Krzysztof Szyszka pisze:
> Użytkownik "wloochacz" napisał w wiadomości ...
>> W dniu 2012-04-05 19:27, Krzysztof Szyszka pisze:
>>> Użytkownik "wloochacz" napisał w wiadomości ...
>>>>> A to teraz juz wszystko rozumiem :-) Chyba uraziłem Twoje Ego.
>>>> Nie, nie - to nie ma nic wspólnego z moim ego - po prostu czepiam się
>>>> szczegółów, które mogą być źródłem problemów. Mogą, ale nie muszą -
>>>> czyli podobnie jak w przypadku tamtej dyskusji o delegatach.
>>>> A czepiam się, bo wiem że takie coś może tam wystąpić i nie rozumiem
>>>> dlaczego nie chcesz przyznać że to jest możliwe...
>>>
>>> Ależ ja Ci wierzę :-) Gdyby tak nie było, to nie podawałbym Ci, w
>>> jaki sposób
>>> każdy użytkownik może sobie z tym łatwo poradzić i to przynajmniej na
>>> dwa
>>> sposoby, bez żadnej ingerencji z mojej strony. Nawet Artur gdzieś tam
>>> dalej
>>> podał Ci prawidłowe rozwiązanie.
>> OK - ale chodzi o automat, który czasem psuje - w szerszym kontekście,
>> a nie tylko w przypadku X-DBGrida.
>
> Nic nie psuje. Przestań w końcu pisać bzdury, jak nie znasz produktu.
Co się tak podniecasz - ja tylko pytam.
Jakbym znał produkt, to bym nie pytał.
Ale wiesz, zainstalowałem sobie triala i posprawdzałem...

> Po pierwsze: automat domyślnie nie jest włączony.
OK.

> Po drugie: żeby zadziałał z TADQuery, to trzeba dla TADQuery zarejestrować
> jedną z dwóch dostępnych dla tej klasy metod zmiany sortowania i to jest
> pozostawione do wyboru temu, kto używa X-DBGrida z AnyDAC.
> Prościej już się nie dało.
OK - a mi nadal chodzi o to, że ta domyślna metoda sortowania (oparta na
modyfikacji IndexFieldNames) rozpindrala keszowanie - i tylko tyle ;-)

>> Wiem, że nie całej funkcjonalności - tylko wybiórczo tę, która Ci pasuje.
>> Ale sam zauważyłeś, że w ADO owo IndexFieldNames może znacząco
>> przyspieszyć działanie MAster-Detail.
>> To co się z tym przyspieszenie stanie, jak automat to nadpisze?
>> Tez będzie OK?
>
> To tez jest wybór użytkownika, a nie mój. Czy chce mieć sortowanie, czy
> nie.
Prawda.
Tylko cały czas tłumaczę, że podczas domyślnej metody sortowania
niejawnie nadpisujesz właściwość, która może spowodować iż TADQuery
przestanie działać zgodnie z założeniami użytkownika.

> Zresztą tu też jest dostępna druga metoda, bo dla TADODataSet można również
> zmieniać sortowanie poprzez zmianę ORDER BY w CommandText, a co i kiedy
Ciekawe jak ze skomplikowanymi zapytaniami, które mają kilka order by;
albo takimi, które nie dopuszczają order by w ogóle
- np. exec procedure (procedura tez może zwracać dane, które mogą być
podpięte do Grida) dla MS SQL
Tak, wiem - czepiam się :-)

> będzie lepsze, to już zależy od konkretnego zastosowania i mnie nic do
> tego.
>
> Ja zapewniam wsparcie dla każdej (dostępnej w danej klasie) metody zmiany
> sortowania i na tym moja rola się kończy.
Tyle, że to wsparcie dla IndexFieldNames nie jest do końca POPRAWNE!
Rozumiem, że masz swoje powody aby tego nie zmieniać - ale wystarczy
notatka w dokumentacji... Albo chociaż w pliku XDBGridsADD.pas

>>> między kolejnymi wersjami AnyDAC nieco zmieniła swój charakter (po
>>> dołożeniu pewnych
>>> opcji) i dziwi mnie, że taka osoba jak Ty, która zna na pamięć
>>> wszystkie wzorce i antywzorce
>>> projektowe, nie widzi w tym nic szczególnego i nawet nie przeszkadza
>>> jej, że jakaś właściwość
>>> typu published ma służyć jednocześnie do realizacji dwóch różnych
>>> funkcjonalności.
>> Powiem Ci tak - działa to w ten sposób odkąd pamiętam; nie jestem
>> pewien jak było w wersji 0.9.x i 1.x - ale na pewno działa tak jak
>> opisuję od wersji 2.x do obecnej.
>> A wersja 2.x pojawiła się w 2007 roku.
>
> ROTFL. Czy wszystko, o czym piszesz jest tak samo prawdziwe, jak to
> zdanie powyżej ? ;-)
Może i ROTFL - ale co w tym nieprawdziwego?

>> Od kiedy masz wsparcie dla AnyDAC?
>
> Od wersji 2.0. Mam ją nawet jeszcze na dysku.
> Ciekawe jak to się stało, że są tam już pakiety dla Delphi 2010 ? :-)
Tak to się stało, iż ostatnia wersja AnyDAC w wersji 2.x to 25 luty 2010.
Wsparcie dla D2010 w AnyDAC pojawiło się w wersji 2.0.13.1025 z 27
sierpnia 2009.
http://www.da-soft.com/anydac/remobjects-anydac-v-2.0.13.1041-released.html
Ciekawe, że tego nie wiedziałeś :-)

> A może chciałbyś wiedzieć, co wtedy autor pisał o używaniu
> TADQuery.IndexFieldNames ? ;-)
Chętnie, bo naprawdę nie wiem.

>>> Gdybym ja coś takiego zrobił w X-DBGridzie, to najłagodniej oceniłbyś
>>> to jako "krzywe".
>> No co Ty - nazwałbym to konwencją :)
>
>>> Ja też wiem, jak to zadziała i wie to również każdy użytkownik mojego
>>> komponentu,
>>> który choć raz użył pól kalkulowanych w tym gridzie. A ty już wiesz ?
>>> Sprawdziłeś ?
>> Nie, nie sprawdziłem - ja pytałem.
>> Nie zakładam,że działa to w Twoim gridzie tak czy siak - pytam czy
>> działa tak, czy inaczej, bo jak działa tak - to na pewno się wywali.
>
> No co Ty - działa zgodnie z konwencją przyjętą w X-DBGridzie :-)
A skoro tak, to OK :-)

>> Teraz wszystko jasne i zrozumiałe?
>
> Już od kilku postów intencje Twoich pytań są dla mnie jasne, choć nie
> końca zrozumiałe ;-)
> Zastanawiam się tylko, po co dalej ciągnę tą dyskusję z Tobą ...
Bo nie do końca jesteś przekonany co do swoich racji? ;-)

--
wloochacz


Krzysztof Szyszka

unread,
Apr 6, 2012, 6:14:23 PM4/6/12
to
Użytkownik "wloochacz" napisał w wiadomości ...
>> Nic nie psuje. Przestań w końcu pisać bzdury, jak nie znasz produktu.
> Co się tak podniecasz - ja tylko pytam.
> Jakbym znał produkt, to bym nie pytał.
> Ale wiesz, zainstalowałem sobie triala i posprawdzałem...

Wow. Jestem pod wrażeniem :-)

>> To tez jest wybór użytkownika, a nie mój. Czy chce mieć sortowanie, czy nie.
> Prawda.
> Tylko cały czas tłumaczę, że podczas domyślnej metody sortowania niejawnie nadpisujesz właściwość,
> która może spowodować iż TADQuery przestanie działać zgodnie z założeniami użytkownika.

Ale ja sobie zdaję z tego sprawę. Dlatego to użytkownik musi wybrać na czym mu bardziej zależy.

>> Zresztą tu też jest dostępna druga metoda, bo dla TADODataSet można również
>> zmieniać sortowanie poprzez zmianę ORDER BY w CommandText, a co i kiedy
> Ciekawe jak ze skomplikowanymi zapytaniami, które mają kilka order by; albo takimi, które nie
> dopuszczają order by w ogóle
> - np. exec procedure (procedura tez może zwracać dane, które mogą być podpięte do Grida) dla MS
> SQL
> Tak, wiem - czepiam się :-)

A sądziłeś, że tego nie wiem ? :-)

Dla TADODataSet domyślnie jest rejestrowana metoda zmieniająca IndexFieldNames
dla CursorLocation = clUseClient oraz metoda zmieniająca ORDER BY w CommandText
dla CursorLocation = clUseServer. Dla exec procedure nie zadziała, ale się też nie wyłoży.
Jeśli potrafisz, to możesz również zarejestrować trzecią metodę dla exec procedure :-)
Oczywiście zawsze możesz zapisać zapytanie SQLowe w taki sposób, że każdy parser
się na tym wyłoży, ale to też nie będzie mój problem, tylko tego, co je tak napisał :-)

>>> Od kiedy masz wsparcie dla AnyDAC?
>>
>> Od wersji 2.0. Mam ją nawet jeszcze na dysku.
>> Ciekawe jak to się stało, że są tam już pakiety dla Delphi 2010 ? :-)
> Tak to się stało, iż ostatnia wersja AnyDAC w wersji 2.x to 25 luty 2010.
> Wsparcie dla D2010 w AnyDAC pojawiło się w wersji 2.0.13.1025 z 27 sierpnia 2009.
> http://www.da-soft.com/anydac/remobjects-anydac-v-2.0.13.1041-released.html
> Ciekawe, że tego nie wiedziałeś :-)

A to zwracam honor. Nie wpadłem na to, że mogło być więcej wersji 2.0.
Dla mnie przed 2.0 mogło być tylko 1.x

>> A może chciałbyś wiedzieć, co wtedy autor pisał o używaniu
>> TADQuery.IndexFieldNames ? ;-)
> Chętnie, bo naprawdę nie wiem.

Autor Twojego ulubionego zestawu komponentu dość dokładnie objaśnił,
jak należy stosować tą Twoją konwencję. Pozwól, ze zacytuję w całości:

<cytat>
1.3.1.1.18.3.45 TADQuery.IndexFieldNames Property

Syntax

property IndexFieldNames: String;
</cytat>

Gdyby nie opis dla TADDataSet.IndexFieldNames, to w życiu bym się nie domyślił
jakiej należy użyć składni, a poza tym, nie było tam nic, czego bym wcześniej nie wiedział.

<cytat>
1.3.2.1.6.2.27 TADDataSet.IndexFieldNames Property

Lists the field names to use as an index.

Description

Use IndexFieldNames as an alternative method of specifying the current index to use for a dataset.

Specify the name of each field on which to index the dataset, separating names with semicolons.
Ordering of field names is significant. Optionally specify the postfix for any of fields in form
"field[:[D][A][N]]", where:

- 'D' - use descending sorting on this field;

- 'A' - use ascending sorting on this field;

- 'N' - use case-insensitive sorting on this field.

Use IndexFieldNames to create sort orders on the fly. The IndexFieldNames and IndexName properties
are mutually exclusive. Setting one clears the other.

Syntax

property IndexFieldNames: String;

See Also

Indexes ( see page 353), IndexName ( see page 355)
</cytat>

Przejrzałem również wszystkie pokrewne tematy o indeksach i nie było tam nawet słowa o "keszowaniu
detali".

arturs

unread,
Apr 6, 2012, 8:34:24 PM4/6/12
to
W dniu 2012-04-06 16:13, wloochacz pisze:

> BTW - server side filtering dla Quantum Grida, to jak rozumiem jest
> drobna poprawka, tak?

Piszesz o czymś nowym ? czy czymś co jest od paru miesięcy tak
"historycznie" wspominając jakieś ostatnie zmiany? quantuumgrida kupiłem
w marcu i powoli się przegryzam przez niego i dlatego pytam bo na takie
hasło jak powyżej nie za bardzo mogę coś znaleźć na stronie devexa ani w
helpie..Bo to co dzisiaj przyszło to chyba jest w wersji 2.5 z 15 marca
2012..

Co do XDBgrida i AnyDAC to zauważyłem jedną rzecz -
adquery jest w trybie fmOnDemand - i działa bez zarzutu - dociąga tyle
ile jest potrzebne - ale wystarczy włączyć "Total Header" (tylko włączyć
wyświetlanie, bez ustawiania jakiejkolwiek np. sumy) i już ciągnie
wszystko..

QuantumGrid wrzucony na formę i tylko podpięty do tego samego adquery
od razu wymusza pobranie wszystkiego - czy jest gdzieś jakaś opcja żeby
to wywalić? czyli żeby dociągał w ramach potrzeb? wiadomo sumowanie itp.
to musi mieć całość ale bez tego mogło by pobierać dane na żądanie..
Może ktoś mnie oświecić jak to zrobić ? - ewentualnie co z tym
filtrowaniem "server side filtering dla Quantum Grida"? jak to działa ?
bo póki co wydaje mi się że raczej działa to na lokalnym zbiorze danych
i nie dociąga danych z serwera? Przynajmniej tak mi pokazują liczniki
(cmVisible, cmFetched, cmTotal)

aha - i przy okazji mam pytanko co do tego - opcja SmartRefresh - w
helpie pisze tak:

"Data modifications are done by the ExpressQuantumGrid."
jak to rozumieć? czy ExpressQuantumGrid ma wbudowane jakieś mechanizmy
dla modyfikacji czy to tak napisane niejasno i zadziała jak mam adquery
i podpięte do tego adupdatesql? Zadziała czyli zaktualizuje sobie tylko
zmienione rekordy?

Czy to o co się kłócicie to opcja "fiDetails" w "Cache" dla adquery? i
właśnie - czytam sobie helpa do anydac- i mam parę pytań:

- jak w masterze zaznaczę tą opcję to jak to zadziała jeśli mamy tabelę
detail podpiętą jako tabelę sparametryzowaną
"SELECT * FROM {id Order Details} WHERE OrderID = :OrderID" - czyli po
zmianie mastera detail jest ponownie wykonywane zapytanie ?
jak są dane keszowane? i kiedy odświeżane (czy trzeba ręcznie czy anydac
to sobie odświeży - a jeśli tak to kiedy)? chyba w tym przypadku po
każdej zmianie będą dane aktualne..

- i drugi sposób (SELECT * FROM {id Order Details} ) czyli detail bez
parametrów (czyli o ile dobrze kombinuję to będzie powiązane przez to
Wasze IndexFieldNames ) - tu chyba po zmianach trzeba odświeżyć Dataseta
"ręcznie"? i właśnie - co po różnych operacjach typu sortowanie itp.?
w sumie zawsze używam opcji z parametrami ale czy to dobrze? bo może to
złe podejście?

Pozdrawiam wszystkich świątecznie..

Krzysztof Szyszka

unread,
Apr 7, 2012, 3:34:18 AM4/7/12
to
Użytkownik "arturs" napisał w wiadomości ...
> Co do XDBgrida i AnyDAC to zauważyłem jedną rzecz -
> adquery jest w trybie fmOnDemand - i działa bez zarzutu - dociąga tyle ile jest potrzebne - ale
> wystarczy włączyć "Total Header" (tylko włączyć wyświetlanie, bez ustawiania jakiejkolwiek np.
> sumy) i już ciągnie wszystko..

Samo włączenie jakiegoś wiersza podsumowań nie powinno jeszcze
powodować dociągania danych. Co prawda jest już wtedy odpalana
procedura UpdateTotals, ale powinna się zakończyć po sprawdzeniu,
że w kolumnach nie ma nic do sumowania (bez wykonywania żadnych
ruchów na DataSet).

Sprawdź, czy nie masz włączonych jeszcze innych opcji w OptionsEx
(np. dgCalcInvisibleRows), bo tam jest badanych sporo różnych warunków,
ponieważ X-DBGrid może wykonywać jednocześnie podsumowania dla
4 różnych wierszy Total i to zarówno dla całego DataSet, jak również dla
SelectedRows.

arturs

unread,
Apr 7, 2012, 10:26:40 AM4/7/12
to
W dniu 2012-04-07 09:34, Krzysztof Szyszka pisze:

> Samo włączenie jakiegoś wiersza podsumowań nie powinno jeszcze
> powodować dociągania danych. Co prawda jest już wtedy odpalana
> procedura UpdateTotals, ale powinna się zakończyć po sprawdzeniu,
> że w kolumnach nie ma nic do sumowania (bez wykonywania żadnych
> ruchów na DataSet).
>

Rzeczywiście - po wrzuceniu "czystego" xdbgrida na formę samo włączenie
tej opcji nie powoduje dociągania wierszy.. o wpół do trzeciej w nocy
można czegoś nie zauważyć.. grida miałem skopiowanego z innego projektu
i tam pewnie coś było poprzestawiane..


A - i mam jeszcze pytanko odnośnie quantuumgrida - co oprócz lokalnego
sortowania tracę ustawiając gridmode na true?
bo w przypadku większych tabel zdecydowanie przyspiesza to pobieranie
danych jak w anydac jest ustawione fmOnDemand bo nie ciągnie
wszystkiego.. na lokalnej bazie mssql tabele mającą 200 tysięcy rekordów
ciągnie dosyć dłuugo (ponad 4 minuty), nie mówiąc o tym że program
zajmuje ponad 1200Mb (słownie: tysiąc dwieście megabajtów) w pamięci co
jest lekkim przegięciem.. chociaż owszem - jak już skończy to potem
pięknie wszystko (filtrowanie, sortowanie) działa ale chyba nie tędy droga..

Może ktoś podrzuci jak w prosty sposób przełączać filtrowanie/sortowanie
itp. pomiędzy lokalnym kompem a serwerem w zależności od ustawienia
adquery.SourceEOF ? Czyli jak jest wszystko lokalnie to używać tego
lokalnie, a jak nie to korzystać z serwera..?
Czy rozwiązanie w stylu:

procedure TForm1.cxGrid1DBTableView1ColumnHeaderClick(Sender:
TcxGridTableView;
AColumn: TcxGridColumn);
begin
if
TADQUERY(TcxGridDBTableView(sender).DataController.DataSource).SourceEOF
then
TcxGridDBTableView(sender).DataController.DataModeController.GridMode:=false;

end;

obudowane może jakimś ostrzeżeniem dla usera że operacja może potrwać
jest ok czy jakoś inaczej to można rozwiązać?
ewentualnie jak zrobić żeby jak nic się nie dzieje np. przez sekundę to
sobie fetchnext śmigało w tle po paredziesiąt rekordów?

wloochacz

unread,
Apr 7, 2012, 10:52:12 AM4/7/12
to
W dniu 2012-04-07 02:34, arturs pisze:
> W dniu 2012-04-06 16:13, wloochacz pisze:
>
>> BTW - server side filtering dla Quantum Grida, to jak rozumiem jest
>> drobna poprawka, tak?
>
> Piszesz o czymś nowym ? czy czymś co jest od paru miesięcy tak
> "historycznie" wspominając jakieś ostatnie zmiany?
> quantuumgrida kupiłem
> w marcu i powoli się przegryzam przez niego i dlatego pytam bo na takie
> hasło jak powyżej nie za bardzo mogę coś znaleźć na stronie devexa ani w
> helpie..Bo to co dzisiaj przyszło to chyba jest w wersji 2.5 z 15 marca
> 2012..
Zupełna nowość, jest tak nowa, że w oficjalnym kanale ma się dopiero
pojawić :D
Sam jestem ciekaw jak to będzie działać...

Jakiś czas temu napisałem sobie własny odpowiednik powyższego.
A więc grid działa w trybie GridMode, ale wszystko ładnie się filtruje z
wykorzystaniem wszystkich mechanizmów QuantumGrida - włącznie z
FilterControl, obsługą pól typu Lookup (kolumna typu
TcxLookupComboBoxProperties) czy słownik (kolumna typu
TcxImageComboBoxProperties), itd. - a więc nie tylko proste dane z DataSetu.
Oczywiście opcja dostępna w moim "mitycznym frameworku".
Żeby było ciekawiej - to ten kod jest w stanie działać z dowolnym
zapytaniem i nic nie trzeba programować.
Dlaczego o tym piszę?
Bo ja też dużo chcę, ale w przeciwieństwie do niektórych jak czegoś nie
ma i nie da się tego kupić, to trzeba to sobie napisać.
Niestety - żaden komponent nie jest na tyle dobry, aby zaspokoił
wszystkie potrzeby ;-)

> Co do XDBgrida i AnyDAC to zauważyłem jedną rzecz -
> adquery jest w trybie fmOnDemand - i działa bez zarzutu - dociąga tyle
> ile jest potrzebne - ale wystarczy włączyć "Total Header" (tylko włączyć
> wyświetlanie, bez ustawiania jakiejkolwiek np. sumy) i już ciągnie
> wszystko..
>
> QuantumGrid wrzucony na formę i tylko podpięty do tego samego adquery od
> razu wymusza pobranie wszystkiego - czy jest gdzieś jakaś opcja żeby to
> wywalić?
> czyli żeby dociągał w ramach potrzeb?
View.DataController.GridMode = True;
Ale do tego sam już doszedłeś...

> wiadomo sumowanie itp. to
> musi mieć całość ale bez tego mogło by pobierać dane na żądanie..
> Może ktoś mnie oświecić jak to zrobić ? - ewentualnie co z tym
> filtrowaniem "server side filtering dla Quantum Grida"? jak to działa ?
Filtruje dane na serwerze; a więc nie ssam wszystko na klienta i dopiero
potem filtruje, tylko modyfikuje zapytanie i pobieram tylko to co klient
chce widzieć.

> bo póki co wydaje mi się że raczej działa to na lokalnym zbiorze danych
> i nie dociąga danych z serwera? Przynajmniej tak mi pokazują liczniki
> (cmVisible, cmFetched, cmTotal)
Dobrze Ci się wydaje.

> aha - i przy okazji mam pytanko co do tego - opcja SmartRefresh - w
> helpie pisze tak:
>
> "Data modifications are done by the ExpressQuantumGrid."
> jak to rozumieć? czy ExpressQuantumGrid ma wbudowane jakieś mechanizmy
> dla modyfikacji czy to tak napisane niejasno i zadziała jak mam adquery
> i podpięte do tego adupdatesql? Zadziała czyli zaktualizuje sobie tylko
> zmienione rekordy?
>
> Czy to o co się kłócicie to opcja "fiDetails" w "Cache" dla adquery? i
> właśnie - czytam sobie helpa do anydac- i mam parę pytań:
>
> - jak w masterze zaznaczę tą opcję to jak to zadziała jeśli mamy tabelę
> detail podpiętą jako tabelę sparametryzowaną
> "SELECT * FROM {id Order Details} WHERE OrderID = :OrderID" - czyli po
> zmianie mastera detail jest ponownie wykonywane zapytanie ?
> jak są dane keszowane? i kiedy odświeżane (czy trzeba ręcznie czy anydac
> to sobie odświeży - a jeśli tak to kiedy)? chyba w tym przypadku po
> każdej zmianie będą dane aktualne..
>
> - i drugi sposób (SELECT * FROM {id Order Details} ) czyli detail bez
> parametrów (czyli o ile dobrze kombinuję to będzie powiązane przez to
> Wasze IndexFieldNames ) - tu chyba po zmianach trzeba odświeżyć Dataseta
> "ręcznie"? i właśnie - co po różnych operacjach typu sortowanie itp.?
> w sumie zawsze używam opcji z parametrami ale czy to dobrze? bo może to
> złe podejście?
Źle kombinujesz.
Poczytaj sobie:
http://www.da-soft.com/anydac/docu/frames.html

Ja zawsze używam parametrów - a AnyDAC'a mam ustawionego (zazwyczaj) w
tryb opisany w akapicie "Combining methods".
A więc - jeśli dane w detail dla danego MasterID nie zostały pobrane, to
AnyDAC je pobiera z serwera i keszuje. Jeśli dane dla danego MasterID
zostały już pobrane z serwera - to AnyDAC nie pobieraich z serwera,
tylko z pamięci.
I właśnie o to chodzi - napisanie IndexFieldNames, kasuje ten cache z
danymi dla detali, w efekcie czego dane są zawsze pobierane z serwera.

--
wloochacz

wloochacz

unread,
Apr 7, 2012, 11:17:39 AM4/7/12
to
W dniu 2012-04-07 16:26, arturs pisze:
> W dniu 2012-04-07 09:34, Krzysztof Szyszka pisze:
>
>> Samo włączenie jakiegoś wiersza podsumowań nie powinno jeszcze
>> powodować dociągania danych. Co prawda jest już wtedy odpalana
>> procedura UpdateTotals, ale powinna się zakończyć po sprawdzeniu,
>> że w kolumnach nie ma nic do sumowania (bez wykonywania żadnych
>> ruchów na DataSet).
>>
>
> Rzeczywiście - po wrzuceniu "czystego" xdbgrida na formę samo włączenie
> tej opcji nie powoduje dociągania wierszy.. o wpół do trzeciej w nocy
> można czegoś nie zauważyć.. grida miałem skopiowanego z innego projektu
> i tam pewnie coś było poprzestawiane..
>
>
> A - i mam jeszcze pytanko odnośnie quantuumgrida - co oprócz lokalnego
> sortowania tracę ustawiając gridmode na true?
Filtrowanie i sumowanie.
Grupowanie obligatoryjnie ssa wszystko - zawsze i niezależnie od
ustawienia GridMode.

> bo w przypadku większych tabel zdecydowanie przyspiesza to pobieranie
> danych jak w anydac jest ustawione fmOnDemand bo nie ciągnie
> wszystkiego.. na lokalnej bazie mssql tabele mającą 200 tysięcy rekordów
> ciągnie dosyć dłuugo (ponad 4 minuty),
> nie mówiąc o tym że program
> zajmuje ponad 1200Mb (słownie: tysiąc dwieście megabajtów) w pamięci co
> jest lekkim przegięciem.. chociaż owszem - jak już skończy to potem
> pięknie wszystko (filtrowanie, sortowanie) działa ale chyba nie tędy
> droga..
>
> Może ktoś podrzuci jak w prosty sposób przełączać filtrowanie/sortowanie
> itp. pomiędzy lokalnym kompem a serwerem w zależności od ustawienia
> adquery.SourceEOF ? Czyli jak jest wszystko lokalnie to używać tego
> lokalnie, a jak nie to korzystać z serwera..?
> Czy rozwiązanie w stylu:
>
> procedure TForm1.cxGrid1DBTableView1ColumnHeaderClick(Sender:
> TcxGridTableView;
> AColumn: TcxGridColumn);
> begin
> if
> TADQUERY(TcxGridDBTableView(sender).DataController.DataSource).SourceEOF
> then
> TcxGridDBTableView(sender).DataController.DataModeController.GridMode:=false;
> end;
Ło matko...
Nie to zdarzenie.
Poczytaj sobie na spokojnie dokładnie i ze zrozumieniem dokumentację, a
zdarzenia które powinieneś obsłużyć to:
dbDataController.OnSortingChanged

Poza tym przyjrzyj się jescze tym:
dbDataController.Filter.OnBeforeChange
dbDataController.Filter.OnGetValueList
dbDataController.Filter.OnFormatFilterTextValue
dbDataController.Summary.OnAfterSummary

> obudowane może jakimś ostrzeżeniem dla usera że operacja może potrwać
> jest ok czy jakoś inaczej to można rozwiązać?
Moim zdaniem inaczej - user ma w d...ie takie komunikaty.
To powinno działać automatycznie.
Ja wychodzę z założenia, że pokazanie danych (okna) powinno działać
błyskawicznie.
Natomiast, taka operacja jak np. filtrowanie może potrwać już ciut dłużej.
Oczywiście lepiej by było, aby trwała błyskawicznie - ale czasem bywa
różnie.

> ewentualnie jak zrobić żeby jak nic się nie dzieje np. przez sekundę to
> sobie fetchnext śmigało w tle po paredziesiąt rekordów?
He, he...
Nie ma tak lekko - ja walczyłem z tematem dość długo, a efekty i tak
dalej nie są do końca idealne.
Jak to zrobić?
To "proste":
1) Obsłużyć wszystkie zdarzenia DataController do zmiany
filtrowania/sortowania
2) Zaprząc "porządny" parser SQL do roboty.
3) Wymyślić sposób na dynamiczną zamianę where/order by dla zapytania za
pomocą parsera SQL.
Możesz mi wierzyć - to nie jest takie trywialne; wystarczy że masz
zapytanie, które jest złączeniem dwóch tabel i w tych dwóch tabelach
jest pole o tej samej nazwie. Co więcej - obu potrzebujesz w danym
DataSet. Oczywiście dasz sobie alias i lux. Tylko w takim przypadku
zmiana order by za pomocą prostego parsera (tak jak np. w XDBGrid)
wrzuci do order by nazwę kolumny - a ta jest nazwą aliasu kolumny, a po
aliasie sortować serwer SQL nie potrafi.

Takich przypadków można by mnożyć praktycznie bez końca (np. kolumna
będąca wynikiem wyrażenia - Netto + Podatek as Brutto).
Oczywiście zamiast pisać takie "skomplikowanie" zapytanie można napisac
np. widok na serwerze. Można, tylko nie zawsze się da (bo to np. baza
danych obcego systemu, którą mamy tylko do odczytu) albo po prostu
czasem tak nie chcemy.

4) Zaimplementować ów sposób z pkt.3 tak, aby zadziałał z każdym zapytaniem.
5) Pospinać wszystko do kupy i proszę, masz server side filtering.

Jedna podpowiedź - osobiście powiązałem parametr RowsetSize z
TADAdaptedDataSet z BufferCount DataController'a.
Do tego sprawdzam czy faktycznie rekordów do pobrania jest <= od
wartości BufferCount. I jeśli tak - to grid pracuje w trybie GridMode =
False. Tę zmienną ustawiam w konfiguracji aplikacji (bo np. w bardzo
szybkiej sieci może to być i nawet 2000, a w wolnej - 50), całość działa
automatycznie - bez pytania usera czy na pewno chce wykonać operację,
która będzie długo trwała...

--
wloochacz

arturs

unread,
Apr 7, 2012, 2:12:04 PM4/7/12
to
W dniu 2012-04-07 17:17, wloochacz pisze:

> Ło matko...

No wiedziałem że tak będzie ;)

> [ciach]


no i tu chyba z okazji świąt Wloochacz przemówił ludzkim głosem ;)

Dziękuję Ci serdecznie..

arturs

unread,
Apr 7, 2012, 2:41:56 PM4/7/12
to
W dniu 2012-04-07 16:52, wloochacz pisze:
> Filtruje dane na serwerze; a więc nie ssam wszystko na klienta i dopiero
> potem filtruje, tylko modyfikuje zapytanie i pobieram tylko to co klient
> chce widzieć.
>
> Zupełna nowość, jest tak nowa, że w oficjalnym kanale ma się dopiero
> pojawić :D
> Sam jestem ciekaw jak to będzie działać...
>
a skąd masz takie info? przeglądam właśnie ich stronę i jakoś nie mogę
tego znaleźć.. w tym co przyszło wczoraj:
http://newsletters.devexpress.com/v2/2012-03/
nie ma chyba na ten temat słowa..
a czasem nie testowałeś już tego ;) ? i wiadomo coś na temat terminu ?


> Bo ja też dużo chcę, ale w przeciwieństwie do niektórych jak czegoś
> nie ma i nie da się tego kupić, to trzeba to sobie napisać.
> Niestety - żaden komponent nie jest na tyle dobry, aby zaspokoił
> wszystkie potrzeby

Tyle że nie wszyscy "umią" sobie napisać- i sam czasem piszesz że nakład
pracy na napisanie (i czasu) jest nieopłacalny i lepiej wydać kasę..
BTW: Może kiedyś wystawisz na sprzedaż ten "mityczny" framework ;)

Pozdrawiam jeszcze raz..

wloochacz

unread,
Apr 8, 2012, 4:49:32 AM4/8/12
to
W dniu 2012-04-07 20:41, arturs pisze:
> W dniu 2012-04-07 16:52, wloochacz pisze:
> > Filtruje dane na serwerze; a więc nie ssam wszystko na klienta i dopiero
> > potem filtruje, tylko modyfikuje zapytanie i pobieram tylko to co klient
> > chce widzieć.
> >
>> Zupełna nowość, jest tak nowa, że w oficjalnym kanale ma się dopiero
>> pojawić :D
>> Sam jestem ciekaw jak to będzie działać...
>>
> a skąd masz takie info?
Z roadmap.

> przeglądam właśnie ich stronę i jakoś nie mogę
> tego znaleźć..
A odnośnik jest na stronie głównej - co z Wami, ludzie? :D

> w tym co przyszło wczoraj:
> http://newsletters.devexpress.com/v2/2012-03/
> nie ma chyba na ten temat słowa..
> a czasem nie testowałeś już tego ;) ? i wiadomo coś na temat terminu ?
Nie, nie testowałem. Co do terminu - coś tam wiadomo:
http://www.devexpress.com/Home/Announces/Roadmap-2012.xml#vcl

> > Bo ja też dużo chcę, ale w przeciwieństwie do niektórych jak czegoś
> > nie ma i nie da się tego kupić, to trzeba to sobie napisać.
> > Niestety - żaden komponent nie jest na tyle dobry, aby zaspokoił
> > wszystkie potrzeby
>
> Tyle że nie wszyscy "umią" sobie napisać- i sam czasem piszesz że nakład
> pracy na napisanie (i czasu) jest nieopłacalny i lepiej wydać kasę..
> BTW: Może kiedyś wystawisz na sprzedaż ten "mityczny" framework ;)
No way, aczkolwiek "never say never" ;-)

PS.
Napisz do mnie, bo miałbym do Cię dwa, trzy pytania na temat CDN OPTIMA.


--
wloochacz
0 new messages