Delphi - Komponens fejlesztés haladóknak

11. rész

forráskód letöltése
Komponens fejlesztés cikksorozatunk mostani részében egy olyan komponenst készítünk, mely képes figyelni, hogy változott-e annak a komponensnek a betűtípusa, amelyre elhelyeztük.

Ezt a funkciót a Delphi komponensei többségénél megtalálhatjuk. Például ha van a Form-on egy TEdit komponens és megváltoztatjuk a Form betűtípusát, akkor a TEdit-nek is automatikusan megváltozik, abban az esetben ha a ParentFont property-e igaz. Komponens fejlesztés cikksorozatunk mostani részében egy olyan komponenst készítünk, mely képes figyelni, hogy változott-e annak a komponensnek a betűtípusa, amelyre elhelyeztük.

Ezt a funkciót a Delphi komponensei többségénél megtalálhatjuk. Például ha van a Form-on egy TEdit komponens és megváltoztatjuk a Form betűtípusát, akkor a TEdit-nek is automatikusan megváltozik, abban az esetben ha a ParentFont property-e igaz.



Mielőtt a mellékelt példaprogramot megnyitná, a FontSample.pas-ban található komponenst előbb telepítenie kell a Delphi-be.

A készítendő komponensünknek igen egyszerű feladata lesz: csupán arra lesz képes, hogy a megadott betűtípussal kiírja a nevét. Nem is ez a lényeg, hanem az, hogy a komponens figyeli a Form betűtípusának a változását.

Első lépésként készítsük el a komponens Font property-ét. Mivel ez nem egy egyszerű adattípus, hanem egy TFont objektum, így a komponens constructor-ában létre is kell hoznunk ezt az objektumot, majd a destructor-ban megszüntetni.

Mikor ennek a property-nek az Object Inspector-ban vagy futási időben értéket adunk, akkor kerül meghívásra a SetFont private eljárás, itt fontos, hogy az értékadás ne egy egyszerű egyenlőségjellel történjen meg, hanem az Assign eljárás hívásával, mely elvégzi a Font összes értékének a másolását.

Létrehozunk mi is egy ParentFont-nak nevezett logikai típusú property-t. Ez arra szolgál, hogy csak akkor figyeljük és követjük a Form betűtípusának változását, ha ennek az értéke igaz.

Ha például az előbbiekben tárgyalt SetFont meghívásra kerül, vagyis közvetlenül a komponens Font-ját változtatjuk, akkor a ParentFont property-t automatikusan hamisra állítjuk, különben ha változna a Form betűtípusa, akkor elveszne az itt beállított érték.

Mikor a szülő objektum betűtípusa megváltozik, létrejön a CM_PARENTFONTCHANGED esemény. Ehhez létrehozunk egy eseménykezelőt, melyben ha a ParentFont property igaz, akkor megváltoztatjuk a komponens betűtípusát a Form betűtípusára.

Mivel a komponenst a TGraphicControl-ból származtatjuk, így egy tetszőleges grafikai objektumot kirajzolhatnánk a Paint eljárás felülírásával. Mi most csupán a komponens nevét írjuk ki az adott betűtípus felhasználásával.

Komponens fejlesztés haladóknak cikksorozat