Takie coś można osiągnąć wykorzystując zmodyfikowaną wersję kontrolki klasy TListBox
- ma listę elementów (którą można dowolnie modyfikować), ma właściwość MultiSelect
i można (nawet trzeba) wykorzystać własneręczne rysowanie item'ów; Jedyne co może Ci przyspożyć problemu (to tylko kwestia czasu) to rysowanie elementów z tytułami kolumn - trzeba będzie je wykluczyć z zaznaczania;
Ja niedawno wykorzystywałem ten komponent do stworzenia listy opisów dla komunikatorów - przeróbka polegała na zmiennej wysokości elementów na liście (do tego służy zdarzenie OnMeasureItem
); Wygląda mniej więcej tak (zrzut z testów kontrolki):
Dawno temu pisałem menedżer haseł i potrzebowałem stworzyć listę z informacjami, która przypominać miała drzewo (coś ala TTreeView
) - także wykorzystałem do tego ww. kontrolkę; Efekt koncowy (w działającym programie):
Możesz także wykorzystać komponent klasy TListView
ze stylem vsReport
- będziesz miał mniej roboty z tytułami kolumn;
Możliwości jest wiele, wszystko jednak zależy od Twojej wiedzy; Te dwie zmodyfikowane listy pokazałem Ci po to, by uświadomić Ci, że ten komponent (inne także) można dowolnie modyfikować, stąd nie ma większego problemu przerobić go na kalendarz z dowolną treścią i wyglądem item'ów; Wystarczy tylko pokombinować trochę;
Wszystko co jest Ci potrzebne to kontrolka oraz zdarzenia: OnMeasureItem
oraz OnDrawItem
;