Dynamiczne(?) kolorowanie wiersza w DBgrid

0

Witam.
Oczywiście od razu piszę, że potrafię pokolorować dowolny wiersz lub dowolną komórkę wg. jakich danych w zdarzeniu DBGrid1DrawColumnCell z poziomu kodu, czyli żeby kolorował wiersze/komórki z góry określonymi danymi.

PROBLEM:
Mam bazę obsługiwaną za pomocą SQL (IB/FB) i do tej bazy dochodzą nowe wiersze z osobami.
Przy wprowadzaniu osoby do bazy podaję imię, nazwisko, adres, potem ustalam jakim kolorem ma być pokolorowany wiersz (z ColorDialog). Nazwisko danej osoby z określonym kolorem (przy wprowadzaniu do bazy) będzie wyznacznikiem dla późniejszych tych samych nazwisk, po czym zostaną te nazwiska (wiersze) pokolorowane tym samym kolorem co wyznacznik.

PRZYKŁAD:

Do bazy wprowadzam Jana Kowalskiego i podaję mu kolor np. żółty.
Tym kolorem mają potem być zaznaczone wszystkie wiersze (lub same komórki z nazwiskiem) późniejszych Kowalskich, które wprowadzać będę do bazy.

Czyli nie chcę z góry ustalać danych do kolorowania tylko już w RunTime.
Kolory do pliku też umiem zapisywać/odczytywać.

Czy ktoś może mnie naprowadzić jak to zrobić? Dzięki [browar]

0

To w sumie jedyny problem jest z ustaleniem koloru dla kowalskiego. Pytanie gdzie będziesz przechowywał zapisane dane: Nazwisko - kolor ? Czy te dane będą zapisywane do jednego z pól bazy, czy będą zapisywane do osobnego pliku, czy może w ogóle nie zamierzasz ich zapisywać ? Tak czy siak, albo sobie zrób kolumne z kolorem i z niej pobieraj kolor przy malowaniu wiersza. Albo sobie utwórz jakąś tablice z kolorami przechowywaną w pamięci i pobieraj z niej kolor w zależności od nazwiska.

0

Dane osobowe itd. będą przechowywane w pliku bazy danych, a kolory w pliku INI.
Pomyślę nad tym co napisałeś, dzięki.

0
RedbaK napisał(a)

Dane osobowe itd. będą przechowywane w pliku bazy danych, a kolory w pliku INI.
Pomyślę nad tym co napisałeś, dzięki.
Dlaczego?? Przecież masz bazę to co za problem wpisać kolor do bazy? Co więcej wystarczy, że sobie zrobisz dodatkową tabelę

kolor

*kolor_id
nazwisko
kolor

i teraz jak zrobisz select * from osoby left join kolor on kolor.nazwisko = osoby.nazwisko

to będziesz miał od razu kolor dla każdej osoby (każdego rekordu)

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