Technológia ActiveX, nazývaná aj OLE automation, vznikla z OLE2 postavením medziobjektovej komunikácie na COM (Component Object Model). Umožňuje používať hotové objekty v ľubovoľnej aplikácii, ktorá je ActiveX kontajnerom.

Terminológia


ActiveX control – samotný vizuálny, príp. nevizuálny objekt.
ActiveX container – aplikácia, schopná ActiveX control používať.
IDispatch – rozhranie, ktoré umožňuje vyextrahovať z COM objektu zoznam všetkých premenných a implementovaných funkcií a ich následné nastavovanie/čítanie/volanie.

ActiveX control


ActiveX controls sú skompilované COM objekty. Sú jednoznačne identifikované pomocou tzv. ClassID, čo je 128 bitové číslo (napr. {8BD21D10-EC42-11CE-9E0D-00AA006002F3}), prípadne ProgID (napr. “Forms.TextBox.1”).
Spravidla sa nachádzajú v systémovom adresári Windows a majú príponu .ocx. Aby mohli byť použité, musia byť zaregistrované.

Vlastnosti ActiveX controls


Aby sme mohli o COM objekte hovoriť ako o ActiveX objekte, musí podporovať určitú definovanú sadu funkcií, ktoré kontajner môže volať. Jedná sa o funkcie ktoré umožňujú vytváranie objektu, rušenie, zmenu vizuálneho stavu, perzistenciu a zobrazenie dialógu s nastaveniami.
Väčšina ActiveX objektov umožňuje uložiť a spätne načítať svoj stav do perzistentej premennej (streamu), takže hodnoty premenných a dáta sa dajú ukladať napr. do súboru na disk alebo databázy. Objekt môže byť potom pri vytvorení inicializovaný týmito dátami.
ActiveX objekty umožňujú cez svoje premenné a funkcie prístup ku vnoreným COM objektom, ktoré tiež väčšinou podporujú rozhranie IDispatch. Príkladom vnoreného objektu je objekt ActiveSheet vnorený v ActiveX objekte Spreadsheet. Kontajner potom môže získať adresu rozhrania IDispatch vnoreného objektu a komunikovať cez toto rozhranie priamo s ním. Po skončení práce s takýmto rozhraním ho musí kontajner uvoľniť.

Komunikácia


Naviac každý ActiveX objekt má ďalšiu sadu funkcií, ktorá zabezpečuje funkčnosť konkrétneho objektu. Prevažná väčšina ActiveX objektov podporuje rozhranie IDispatch, takže kontajner pri vytváraní ActiveX objektu dokáže za behu zistiť, aké funkcie a s akými parametrami objekt pozná a podľa potreby ich volá.

Spätne, ActiveX objekt vysiela kontajneru udalosti (events). Tieto udalosti sú tiež vysielané cez rozhranie IDispatch, takže opäť kontajner pozná textovú reprezentáciu udalosti ako aj počet, názvy a hodnoty parametrov udalosti.
Udalosťou napr. môže byť užívateľská interakcia s objektom (napr. kliknutie myšou), alebo vnútorná zmena stavu objektu a pod.

ActiveX objekt tiež vysiela kontajneru štandardne dva typy udalostí týkajúcich sa zmeny premenných objektu. Prvou je OnRequestEdit (<názov premennej>), kde má kontajner možnosť zamedziť zmene. Druhou je udalosť OnChanged(<názov premennej>), ktorá informuje, že premenná bola zmenená.

Napíšte komentár