Warsztat: Kolorowe rekordy na formularzu ciągłym.

www.mvps.org/access/forms/frm0024.htm
Dwie bazy: Color97 i ColorCon - klasyka rozwiązań oparta na czcionce Terminal.

KoloRek.zip - w przebudowie
Autor: Krzysztof Pozorek
Baza w formacie MsAccess 97

frmKolor.zip
Autor: Krzysztof Naworyta (k.naworyta@datacomp.com.pl)
Baza w formacie MsAccess 97
205kB, 29 sierpnia 2001

bgrd.zip
Autor: Mirek (dcn02@it.pl)
Baza w formacie MsAccess 97
68kB, 23 sierpnia 2001

www.lebans.com/formatbycriteria.htm
Baza: FormatbyCriteriaSubClass
Autor: Stephen Lebans (stephen@lebans.com)

Opis problemu:

Zdarza się, że pracując w Accessie 97 chcemy wyróżnić grupę rekordów na formularzu ciągłym. Szybko jednak napotykamy na problem, okazuje się, że Access 97 nie pozwala na takie wyróżnienie. Zmiana dowolnego elementu w bieżącym rekordzie powoduje natychmiastową, taką samą zmianę we wszystkich rekordach. Czy jest na to sposób (oprócz zakupienia wyższej wersji Accessa, w której ten problem został rozwiązany przez formatowanie warunkowe)?

Rozwiązanie:

Jedną z pierwszych prób kolorowania rekordów na formularzu była baza ColorCon.mdb autorstwa Kevina Graya. Zasada działania opiera się na czcionce Terminal oraz znaku o kodzie ASCII = 219, który w tej czcionce ma wygląd pełnego prostokąta Ű. Właśnie ciąg tych znaków stanowi kolorowe tło dla innych elementów, znajdujących się na formularzu ciągłym. Na podobnej zasadzie działa także Color97 oraz przeróbka dokonana przez Mirka o nazwie bgrd.mdb, ale czcionka Terminal to nie jedyne możliwości radzenia sobie z tym problemem. Przykładem jest kilka innych baz umieszczonych powyżej.

Baza KoloRek.mdb oraz oparta na niej baza frmKolor.mdb używają malutkich map bitowych do ustawiania tła rekordu i rozciągają je na całą szerokość formularza.

Przykład FormatbyCriteriaSubClass jest właściwie całą aplikacją o rozbudowanej części kodowej. Stanowi rozwiązanie, z którym warto się zapoznać z przyczyn poznawczych, jednak wykorzystując je w praktyce należy rozważyć, czy zatrudnienie tak znacznej części naszej aplikacji jedynie do wyświetlania kolorów jest celowe.