Delphi - QuickReport-ban nyomtatható CheckBox komponens

forráskód letöltése
Ebben a példában egy újabb QuickReport komponenst készítünk, amely leginkább a CheckBox komponenshez hasonlítható. Egy négyzetet jelenít meg, amiben egy property értékétől függően megjelenik egy jel. Ez jól használható olyankor, amikor a kinyomtatandó dokumentumon különböző opciókat szeretnénk megjeleníteni, melyek vagy meg vannak jelölve, vagy sem például (közvélemény kutatás, vagy tesztkérdések). A mellékelt példaprogram megnyitása előtt a QRCheckBox.pas-ban lévő komponenst telepítenie kell a Delphi alá.

A komponenshez két property-re lesz szükségünk. Az egyik a Checked property, amely meghatározza, hogy a négyzet meg van-e jelölve, vagy sem. A másik property a Style, amely a négyzetben megjelenő jel stílusa. Ez háromféle lehet: csCross (átlók), csTick (pipa) és csXShape (X jel).

Mivel nyomtatható QuickReport komponensről van szó, ezért ezt a QRPrintable osztályból kell származtatni. Ebben az osztályban eleve található egy Frame property, amellyel a komponens körvonalának megjelenését szabályozhatjuk, ezért a keret megrajzolásával nem lesz gondunk.

A komponens képének megrajzolását a RedrawTo eljárás végzi. Ezt hívjuk meg a Paint és Print eljárásokból. Paraméterként a Canvas-t, és azt a területet kell megadni (TRect), ahová a komponenst ki kell rajzolni. A rajzoláskor ellenőrizni kell a Checked property értékét, valamint a Style property értékét is. A csTick és csXShape jelek kirajzolásakor a komponens területét felosztjuk 8x8-as részekre (xf és yf változók), és a jelek koordinátáit ezek segítségével határozzuk meg.