@BoB0_ - dostałeś dwie propozycje, jedna (kolegi @janeks) dotycząca ręcznego malowania komórek komponentu i druga (moja) dotycząca wykorzystania właściwości Selection
do podświetlenia komórek wybranej kolumny; Zdecyduj którą wersję chcesz i zaimplementuj ją u siebie w kodzie;
Obie mają swoje plusy i minusy (zależne od potrzeb), bo ręczne malowanie komórek wymaga oprogramowania zdarzenia do tego celu przeznaczonego i dbanie o poprawne przerysowywanie komponentu w odpowiednich miejscach w kodzie, ale za to podświetlenie nie zniknie po zaznaczeniu komórki z innej kolumny (będzie stałe, aż do ponownego przerysowania komponentu po zmodyfikowaniu odpowiednich danych, z których zdarzenie korzysta);
Z kolei mój sposób zwalnia Cię z oprogramowywania zdarzenia OnDrawCell
dzięki wykorzystaniu gotowej właściwości i wbudowanemu podświetlaniu danych komórek, ale podświetlenie to będzie widoczne do czasu zaznaczenia komórki z innej kolumny (do pierwszego kliknięcia na komponent);
Masz dwie opcje, ale wszystko zależy od Ciebie i sposobu zaznaczania kolumny; Jeśli podświetlenie ma być widoczne dłużej (nie znikać przy kolejnych kliknięciach) to wybierz sposób @janeks, a jeśli ma być tylko chwilowe (i zniknąć przy kolejnym kliknięciu aby umożliwić dalszą modyfikację danych zawartych w komponencie) to skorzystaj z mojej sugestii;
BoB0_ napisał(a)
Zmienną globalną co do kolumny i tak mam, jak na razie tylko w ten sposób sobie z tym poradziłem.
Zmienne globalne to zło - po co masz ją uwidoczniać w całym programie, skoro i tak tylko jeden komponent z niej korzysta? Stwórz prywatne pole w klasie choćby formularza i je wykorzystaj (skoro i tak pewnie nie masz jakiejś klasy zarządzającej danymi komponentu);
BoB0_ napisał(a)
Czy wykonanie wszystkich czynności i wrzucenie tej procedury do kodu wystarczy?
Jeśli masz na myśli mój sposób to tak - wystarczy wrzucić podaną przeze mnie instrukcję do Twojego kodu i będzie działać; Musisz jedynie zmienić nazwę komponentu (jeśli się różni od tej podanej) i w miejsce stałej COLUMN_ID
wstawić zmienną, w której przechowujesz indeks kolumny po obliczeniach; Nie musisz dodatkowo przerysowywać komponentu, bo modyfikacja właściwości Selection
automatycznie podświetli wybrane komórki;
Jeśli chodzi o drugi sposób z ręcznym malowaniem to nie - nie wystarczy kodu przekleić, trzeba go napisać samemu i dostosować pod swoje wymagania; Dzięki ręcznemu rysowaniu komórek masz dużo większe możliwości dostosowania wyglądu komponentu pod swoje wymagania, bo możesz je narysować tak, jak chcesz (nawet pododawać obrazki); Wiąże się to oczywiście z napisaniem dużo większej ilości kodu i zabezpieczenie go przed błędnym działaniem - potrzeba testów i sprawdzenia wszystkich przypadków, aby komórki zawsze były rysowane poprawnie;
Dokładniej pytam o to czy w jakiś sposób muszę tą procedurę wywołać, bo jeśli tak to chyba do końca nie wiem jak.
Jeżeli wybierzesz mój sposób z wykorzystaniem do tego celu właściwości Selection
wystarczy ją ustawić, a komponent zostanie automatycznie przerysowany; Jeśli chcesz ręcznie rysować komórki to musisz wywołać zdarzenie, które przemaluje cały komponent i narysuje inaczej podświetlone komórki - czyli wywołać w odpowiednim miejscu metodę Repaint
komponentu.