
A mellékelt példaprogram megnyitása előtt a CheckList.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
Az új komponenst a TCustomListBox osztályból származtatjuk. Ebből is következik, hogy a komponens nem a CheckListBox továbbfejlesztése, hanem egy teljesen új komponens.
Míg a ListBox komponensnél (és a CheckListBox komponensnél is) az Items property egy TStrings típus, ami egyszerű sztringeket tud tárolni, az új komponensben ez a property a TCollection osztályból van származtatva. Ebben a property-ben kapcsoló csoportokat hozhatunk létre. Az egyes csoportokban maximum 32 darab kapcsolót tárolhatunk, amelyeket az Options TStringsList típusú property-ben adhatunk meg, egyszerű felsorolással. A 32-es maximális szám abból adódik, hogy az egyes kapcsolók tulajdonságait két 32 bites (dword) változóban tároljuk:
- FChecked: ennek a változónak az egyes bitjei azt adják meg, hogy a bithez tartozó kapcsoló be van-e kapcsolva, vagy sem. A bitek beállítását egyszerűen megoldhatjuk az Enabled tömb property-n keresztül.
- FEnabled: ez a változó hasonló az FChecked változóhoz azzal a különbséggel, hogy azt az információt tartalmazza, hogy a kapcsolók engedélyezettek-e, vagy sem. Itt is minden kapcsolóhoz egy-egy bit tartozik, amelyeket a Checked tömb property-n keresztül állíthatunk be.
Az egyes kapcsoló csoportokhoz képet is rendelhetünk az ImageIndex property-n keresztül. Ehhez a TCheckList osztályban létrehozunk egy TImageList típusú property-t, amelyben megadható a képeket tartalmazó komponens.
Mivel a ListBox a felülírt Items property tartalmát jeleníti meg, ezért ebben eltároljuk a kapcsoló csoportok neveit, és a hozzájuk tartozó kapcsolók indexeit, valamint az ezekhez tartozó objektumokat. Ezt a listát a RebuildList eljárás fogja felépíteni az Items property tartalmának megfelelően. Természetesen nem ezt a listát jelenítjük meg, hanem felülírjuk a DrawItem eljárást, és az index-nek megfelelő csoport nevet, vagy kapcsolót fogjuk megrajzolni. Csak azok a csoportok lesznek megjelenítve, amelyek legalább egy kapcsolót tartalmaznak, vagyis az Options property-jük nem üres.
A kapcsoló állapotát nem csak az egérrel, hanem a szóköz, vagy enter billentyűkkel is módosíthatjuk.