Wielopoziomowy DBGrid i MS SQL

0

Witam,

Wiem, że wielopoziomowy nagłówek (Expanded) w TDBGrid jest możliwy do zrobienia tylko na kolumnach, które zawierają dane typu ftADT lub ftArray. Typy te są obsługiwane przez tylko niektóre bazy danych (np.: Oracle).

W jaki sposób można napisać własny komponent oparty na TDBGrid, który umożliwiałby tworzenie wielopoziomowego nagłówka dla bazy MS SQL?

Próbowałem zrobić to przez małą sztuczkę:

  1. Tworzę 3 kolumny w TDBGrid
    a. Kolumna 1 – zawiera dane po zwinięciu nagłówka,
    b. Kolumna 2 i 3 – zawierają dane szczegółowe (po rozwinięciu nagłówka),
  2. Przy uruchomieniu aplikacji ukrywam kolumnę 2 i 3,
  3. Przy kliknięciu kolumny 1 ukrywam kolumnę 1 i pokazuję kolumnę 2 i 3
  4. Przy kliknięciu kolumny 2 lub 3 ukrywam kolumny 2 i 3 a pokazuję kolumnę 1

To rozwiązanie ma jednak kilka wad:

  1. Nie posiada „ładnego” przycisku w nagłówku informującego użytkownika o akcji, która zostanie wykonana,
  2. Uniemożliwia wybór kolumny, po której mają być sortowane dane,
  3. [Chyba najważniejsze], nagłówek jest jedno wierszowy, co powoduje, iż użytkownik nie wie czego dotyczą dane po rozwinięciu nagłówka.
    np.:
    Zdefiniowane kolumny w TDBGrid (struktura płaska):
    Kolumna 1 – Kupujący
    Kolumna 2 – Imię
    Kolumna 3 – Nazwisko
    Kolumna 4 – Sprzedający
    Kolumna 5 – Imię
    Kolumna 6 - Nazwisko
    Nagłówek po zwinięciu:
    |Kujący|Sprzedający|
    Nagłówek po rozwinięciu:
    |Imię|Nazwisko|Imię|Nazwisko|

Idealne rozwiązanie to:
Nagłówek po zwinięciu:
[Kupujący |\/][Sprzedający |\/]
Nagłówek po rozwinięciu:
[Kupujący |/][Sprzedający |/]
[Imię|Nazwisko| ][Imię|Nazwisko| ]

Wiem, że są napisane do tego gotowe komponenty (również polskie), ale niestety wszystkie, na które natrafiłem przeszukując google, są płatne. Jeśli ktoś zna jakiś darmowy komponent to byłbym wdzięczny za linka do niego.

Dlatego też zdecydowałem się na napisanie własnego komponentu, niestety (jak widać) nie bardzo wiem jak tego dokonać. Jedynie się domyślam, iż trzeba będzie napisać własną klasę TColumn i TDBGridColumn z dodatkowymi własnościami oraz zmieć sposób malowania TDBGrid.

Byłbym bardzo wdzięczny za wszelkie wskazówki.

0

http://www.borland.pl/cgi-bin/tip.exe/tip?idt=tip_d_45 tylko, że serwer padł :p

ale jak serwer nie wstanie przypomnij się koło 22 na forum bo mam tego arta na hdd

0
Misiekd napisał(a)

http://www.borland.pl/cgi-bin/tip.exe/tip?idt=tip_d_45 tylko, że serwer padł :p

Wydaje mi się, że serwer nie padł, tylko porada techniczna została przeniesiona w inne miejsce
http://www.borland.pl/cgi-bin/tip.exe/showtip?mode=1&id_tip=72

Ale zgadza się, o taki efekt mi chodzi. Tylko z tą różnicą iż pod ADO (MS SQL), który nie posiada rekordów typu ftADT ani ftArray, a z tego co rozumiem z porady technicznej jest to warunek jej działania.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0