C# - ActiveX Control-ok beépítése a HTMLHelp-be

HTMLHelp 4. rész

forráskód letöltése
A HTMLHelp lapjaira elhelyezhetünk ActiveX Control-okat is. Ezek használatával többféle érdekes és hasznos funkciót valósíthatunk meg. Helyezhetünk például az oldalra olyan nyomógombot, mellyel bezárhatjuk a HTMLHelp-et, vagy készíthetünk induláskor megjelenő képet (splash screen).
A cikkből megismerhetjük továbbá, hogy miként készíthetünk a HelpProvider komponenssel helyzet érzékeny súgót, mely a készítendő CHM állományt használja fel.
Kezdjük most a HTMLHelp állományunk elkészítésével.
Amint a bevezetőben már említettük, a web lapokra most néhány HTMLHelp ActiveX Control objektum is elhelyezésre kerül.
A jelenlegi HTMLHelp állomány elkészítése nagyban hasonlít a múltkorira, most csupán mások az állomány nevek, így ennek létrehozását nem ismételjük.
Az újdonság most a HTMLHelp ActiveX elemek lesznek. Ezek nem mások, mint olyan speciális objektumok, melyek a HHCtrl.ocx-ben találhatók és amiket felhasználhatunk tetszés szerint a help-ben.
Felhasználásukhoz csupán hivatkozni kell az adott objektumra a HTML nyelvből már ismert <OJBECT ... > taggal.
Hogy ehhez ne kelljen sokat gépelnünk, segítségünkre lesz a HTML Help Workshop. Amikor a Project lapon már megadtunk néhány web lapot a [Files] részben és itt valamelyikre duplán rákattintunk, akkor megjelenik az adott web lap HTML kódja a képernyő jobb oldalán. Ekkor akár tetszőlegesen bele is írhatunk a web lapba.
Amikor egy web lap tartalma látható, mint jelenleg is, akkor megjelenik egy új nyomógomb sor is. Itt találunk egy olyan gombot, mely HTMLHelp ActiveX Control névre hallgat. Álljunk arra a helyre, ahová az ActiveX objektumot helyezni szeretnénk a weblapon és nyomjuk le ezt a gombot.
Ekkor megjelenik egy varázsló, melynek segítségével könnyedén létrehozhatjuk, amit szeretnénk.
Az első lapon ki kell választanunk, hogy mi legyen az objektum által megvalósított funkció. Ezt a Specify the command ComboBox-ból választhatjuk ki. Itt sokféle lehetőség tárul elénk, ebből jelen cikkben most kettőt tárgyalunk.
Ha a Close Window nevű elemet választjuk, akkor létrehozhatunk egy olyan objektumot, például egy nyomógombot, melyet ha a felhasználó lenyom, akkor a HTMLHelp bezárásra kerül.
A mellékelt példában az 1.htm állományban találhatunk ilyen gombot, ha megnézzük az állomány forráskódját, akkor azon belül a végén helyezkedik el.
Ha kiválasztottuk a kívánt funkciót, akkor még lehetőségünk van arra itt az első lapon, hogy az objektumnak egy egyedi nevet is adjunk. Ezt csak akkor van értelme használnunk, ha a web lapon olyan scriptet is elhelyezünk, melyből hivatkozni kell a most létrehozandó objektumra.
Ezek után jöhet a Next gomb.
Következő lapon választhatunk, hogy egy nyomógomb formájában szeretnénk viszontlátni az ActiveX objektumot, vagy legyen rejtett. Utóbbi esetben egy script segítségével aktivizálhatjuk az objektumot.
Mellékelt példában mi a nyomógombot választottuk.
Ebben az esetben választhatunk, hogy a gombon mi jelenjen meg. Ez lehet egy szöveg, bitmap, vagy akár ikon is. A választástól függően meg kell adnunk még a szükséges adatot.
Ismét Next gomb és ezzel készen is vagyunk, a Finish gomb lenyomásával a HTML kódba bekerül a szükséges hivatkozás az objektumra.
<OBJECT id=hhctrl type="application/x-oleobject"
        classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"
        codebase="hhctrl.ocx#Version=4,74,8702,0"
        width=100
        height=100
>
    <PARAM name="Command" value="Close">
    <PARAM name="Button" value="Text:Bezárás">
</OBJECT>
Amint az látható is, az imént a varázslón keresztül megadott adatok immár szövegesen is olvashatók, sőt akár módosíthatók is.
Az objektumnak több paraméter is átadásra kerül, ezek lesznek a <PARAM... kezdetű sorok.
Minden ilyen paraméternek van egy neve (name) és egy értéke (value). A név kötött, de az értéket szabadon módosíthatjuk.
Az első paraméter a Command nevet viseli. Minden ilyen típusú ActiveX Control egy-egy ilyen Command nevű funkció megvalósítása lesz. Ennek a Command-nak Close az értéke, tehát a HHCtrl.ocx ebből fogja tudni, hogy mit kell tennie. A tényleges paraméterek ezek után már ehhez a funkcióhoz kötődnek.
Nézzük meg, hogy a Close parancsnak mi a pontos szintaktikája.
<PARAM  name="Command" value="Close">
[<PARAM name="Button" value="[Text: Button 
    text|Bitmap: Bitmap file path|Icon:Icon file path]">]
[<PARAM name="Font" value="Facename[, point 
    size[, charset[, color[, PLAIN BOLD ITALIC UNDERLINE]]]]">]
[<PARAM name="Text" value="Text: Link text">]
A [ ] jelek közötti paramétereket nem kötelező használni. Látható tehát, hogy a Button nevű paraméterrel megadható egy tetszőleges szöveg, kép vagy ikon, a Font nevű paraméterrel a betűtípus tulajdonságairól rendelkezhetünk, míg a Text segítségével egy linket készíthetünk.
A másik ilyen ActiveX Control melyet létrehozunk, az egy ún. splash (nyitó) képernyő lesz. Amikor a HTML Help adott lapja megjelenik, akkor lehetőségünk van rá, hogy egy bizonyos ideig megjelenítsünk egy nyitóképernyőt.
Ezt az ActiveX Control-t szintén az 1.htm-be helyeztük.
A varázsló elindítása után válasszuk a Splash screen funkciót. A Next gomb után megadhatjuk annak a kép állománynak a nevét, mely a nyitóképernyőt tartalmazza, valamint rendelkezhetünk arról is, hogy indulása után hány ezredmásodpercig legyen látható ez a képernyőn.
<OBJECT id=hhctrl2 type="application/x-oleobject"
        classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"
        codebase="hhctrl.ocx#Version=4,74,8702,0"
>
    <PARAM name="Command" value="Splash">
    <PARAM name="Item1" value="as.gif">
    <PARAM name="Item2" value="2000">
</OBJECT>
Látható, hogy itt a Command paraméter a Splash értéket kapja. Ezek után jöhetnek a szükséges paraméterek, melyek az alábbiak lehetnek.
<PARAM  name="Command" value="Splash">
<PARAM  name="Item1" value="image file path">
<PARAM  name="Item2" value="millisecond value">
[<PARAM name="Item3" value="alternate image file path">]
A [ ] jelek közötti paramétereket nem kötelező használni.
Az Item1 paraméterben kell megadni a kép állomány nevét, az Item2-ben pedig a láthatóság idejét ezredmásodpercben.
Az Item3-ban megadható egy olyan kép állomány, mely akkor jelenik meg, ha a help-et futtató gép hardvere 256 színnél többet is képes megjeleníteni.
Ezzel a help állomány elkészült, fordítsuk le, hogy létrejöjjön a CHM.
Nézzük most ennek felhasználását. Tegyünk egy HelpProvider komponenst a Form-ra. Ennek Namespace property-jében kell megadnunk a CHM állományt, amelyet a komponens használni fog.
      helpProvider1.HelpNamespace = Application.StartupPath + "\\Help04.chm";
Miután feltettünk egy HelpProvidert, minden kontrol tulajdonság listája kiegészül egy Misc kategóriával, melyben megjelenik néhány olyan property, amely a helpProveider1 komponenshez kötődik.
Ha most azt szeretnénk elérni, hogy egy-egy kontrolon történő F1 gomb lenyomására a létrehozott help állomány egy adott lapja jelenjen meg, akkor a következő a teendő.
A ShowHelp property-t állítsuk igazra. Ezzel elérjük az F1 gomb automatikus kezelését.
A HelpKeyword property-ben adjuk meg annak a web lap állománynak a nevét, melyet belefordítottunk a CHM-be és amelyet szeretnék megjeleníteni az F1 lenyomásakor.
A HelpNavigator property-ben válasszuk ki a Topic értéket, mivel most egy megadott témára szeretnénk ugrani, hiszen ennek címét adtuk meg a HelpKeyword property-ben.
Ezeket a lépéseket el kell játszanunk minden olyan kontrol esetén, melyhez szeretnénk F1 gombra megjelenő súgó oldalt hozzárendelni.

HTMLHelp cikksorozat