Delphi - ActiveForm felhasználása Delphi-ben

ActiveForm 1. rész

forráskód letöltése
A Delphi segítségével készíthetünk olyan speciális ActiveX komponenst, melyet elhelyezhetünk egy web lapon is.
Ez a speciális ActiveX komponens nem más, mint egy hagyományosnak tűnő Delphi Form. Erre a Form-ra épp úgy, mint egy hagyományos programban bármilyen komponenst elhelyezhetünk, bármilyen funkciót megvalósíthatunk.
Ezek után ezt a Delphi Form-ot elhelyezhetjük egy web lapra és ettől kezdve a világon bárhonnan is néznek erre az oldalra ott a Form-ot látják és a hozzá tartozó funkciókat használhatják. Azt pedig könnyen beláthatjuk, hogy egy Form-on, a rajta lévő tetszőleges komponensekkel és a hozzájuk rendelt szintén tetszőleges funkciókkal együtt sokkal egyedibb, több funkciósabb web lapot hozhatunk létre, mint ha csak a HTML nyelvet használnánk. Vágjuk rögtön a megvalósítás közepébe:
File - New menüpont után az ActiveX lapon válasszuk az ActiveForm elemet. A megjelenő ActiveForm Wizard ablakban hagyjunk minden értéket azon, amit a Delphi felajánl. Egyedül az Include Version Information-t jelöljük meg.

Az OK gomb lenyomása után a Delphi létrehozza az új projectet, melyből ActiveForm készül:
  • ActiveFormProj1 lesz a project állomány neve
  • ActiveFormImpl1 lesz maga az ActiveForm
  • ActiveFormProj1_TLB-ban helyezkedik el a project Type Library-e.


Ezek után tegyünk a Form-ra amit csak szeretnénk, és hozzuk létre a szükséges kódot is a feltett komponensekhez.

Ha ezzel készen vagyunk a következők a teendők:

Válasszuk a Project - Web Deploy Options menüpontot. A megjelenő dialógus ablak első, Project nevű lapján töltsük ki az alábbi mezőket:
  • Target dir: D:\Inetpub\wwwroot (ide jön az a könyvtár, ahová szeretné elhelyezni az elkészült ActiveForm állományt, fontos, hogy ez olyan könyvtár legyen, amelyhez hozzá lehet férni az interneten keresztül épp úgy mint web lapjaihoz)
  • Target URL: http://www.animare.hu/ (itt adja meg saját web címét, ha csak teszteljük, fejlesztjük a programunkat, akkor nincs szükség feltétlenül valós web szerverre. Használhatjuk például a Personal Web Server-t is. Ekkor, ha a fejlesztés és a teszt is egy gépen történik, akkor ide írhatjuk a http://localhost/-ot is ami a saját gépre hivatkozik. Tesztelés után ne felejtsük el azonban ezt módosítani, mielőtt valós szerveren helyeznénk el.)
  • HTML dir: D:\Inetpub\wwwroot (lásd mint a Target dir esetében)
  • Auto increment release number-t jelölje be. Erre azért van szükség, mert amikor változtat majd az ActiveForm-on és újra lefordítja, akkor a verziószám automatikusan nő. Amikor egy internetező erre web oldalra téved, akkor annak böngészője nem tölti le állandóan az ActiveForm-ot, ha egyszer már letöltötte, hanem csak akkor, ha a verziószáma nagyobb, mint ami a kliensnél már rendelkezésre áll.


Ezek után Ok gomb, majd a Project - Project build menüpont. Ekkor, ha nincs hiba a létrehozott programban, akkor létrejön az ActiveForm állománya, mely nem EXE, vagy DLL, hanem OCX kiterjesztést kap.

Most a Project - Web Deploy menüpont választásával elhelyezhetjük a megfelelő könyvtárakba a szükséges állományokat. Fenti beállítások mellett a létrejött ActiveFormProj1.ocx állomány a D:\Inetpub\wwwroot könyvtárba (Web Deploy Options - Target dir) kerül. A Delphi létrehoz rögtön egy web lapot is, melynek segítségével ki is próbálhatjuk a létrehozott ActiveForm-ot. Ez ilyenkor a D:\Inetpub\wwwroot könyvtárba (Web Deploy Options - HTML dir) kerül és ActiveFormProj1.htm nevet kapja.

Ha most elindítunk egy böngészőt és beírjuk a következőt: http:// www.animare.hu/ActiveFormProj1.htm, akkor meg kell jelennie a Delphi által létrehozott teszt web lapnak és rajta az ActiveForm objektumunknak. Nyilván fenti web lap címnél mindenkinek a sajátját kell beírnia a www.animare.hu helyett.


Felmerülő problémák elhárítása:

A böngészőnk alapértelmezésben nem engedélyezi a nem szignált ActiveX vezérlők futtatását gépünkön. Így amikor a fenti web lapot behívjuk és a böngésző letöltötte a Form-unkat (*.OCX), akkor egy hibaüzenetet fogunk kapni és a Form nem jelenik meg.

Erre két megoldás van:
1. szignáljuk az ActiveX vezérlőnket
2. beállítjuk a böngészőnknél, hogy az elfogadjon és futtasson nem szignált ActiveX vezérlőket is

Nézzük mindkettőt:
1. szignáláshoz először is be kell szereznünk egy digitális aláírást. Ehhez felkereshetjük, mondjuk a www.verisign.com honlapját, ahol igényelhetünk ilyet, persze csak pénzért, amiért cserébe kapunk egy LIC kiterjesztésű állományt, melyet be kell építenünk az ActiveForm-unkba.
Ezt úgy tehetjük, hogy ha a File - New menüpont után az ActiveX lapon válasszuk az ActiveForm-ot és a megjelenő ablakban a Make Control Licensed (D5), illetve Include Design-Time Licence (D4, D3) CheckBox-ot is bejelöljük. Ezek után a Project - Web Deploy Options menüpontnál megjelenő ablakban kapunk egy Code Signing lapot is, ahol megadhatjuk a szükséges adatokat.

2. a másik megoldás gyorsabb és egyszerűbb: a böngészőnk tulajdonságainál keressük elő a biztonsági beállításokra vonatkozó részt. Pl. MS IE 5-nél: Tools - Internet Options menüpont Security lap. Itt a Download unsigned ActiveX controls-t engedélyezzük, vagy legalábbis válasszuk azt a lehetőséget, hogy ilyen esetben kérdezzen meg bennünket a böngésző, hogy kívánjuk-e futtatni a szignálással nem rendelkező ActiveX-et vagy sem. Így minden esetben még a futtatás előtt eldönthetjük, hogy megbízunk-e a programban illetve nem.


Az ActiveForm-ok egyik legnagyobb hátránya, hogy méretük elég nagy a mai internet sávszélességhez. A mellékelt példánkhoz létrejött ActiveFormProj1.ocx 413 kB, amit web lappal együtt le kell töltenie a böngészőnek ahhoz, hogy használni is lehessen azt. Ezt a letöltést persze csak egyszer kell megtenni és ezek után már a böngészőnk eltárolja az OCX-et a kliens saját gépén, így a következő látogatáskor már nem kell ismételten letölteni. Persze ha változik az OCX verziószáma, akkor ismét jön a letöltés. A nagy méret persze nem gond, ha például csak helyi, intranet hálózatunkhoz készítünk ilyen web-es alkalmazást.

Ezen a nagy méreten valamelyest változtathatunk: lehetőségünk van egy tömörített változat publikálására. Ekkor a Project - Web Deploy Options menüpontnál megjelenő ablaknál az Use CAB file compression-t is jelöljük meg. Ekkor nem csak OCX jön létre, hanem annak egy tömörített verziója is CAB kiterjesztéssel. Mellékelt példánk ebben az esetben 413 kB helyett 219 kB lesz, ami egy modemes internetezőnek még mindig elég nagy lehet, de már sokkal jobb, mint a 413 kB.


Végül nézzük, hogy az elkészült ActiveForm-ot hogyan illeszthetjük be egy tetszőleges web lapra. A Delphi létrehoz egy ActiveFormProj1.htm állományt, melyet a teszteléshez használhatunk. A legegyszerűbb, ha az ebben lévő kódot másoljuk át saját web lapunkra:
<OBJECT
  classid="clsid:F0020057-E0F9-4F60-8B2E-B2AFA90CD46E"
  codebase="http://localhost/ActiveFormProj1.ocx#version=1,0,25,0"
  width=355
  height=281
  align=center
  hspace=0
  vspace=0
>
</OBJECT>
Ha megfigyeljük a codebase paramétert, láthatjuk hogy itt kell megadni, hogy hol található az ocx állomány. Ide jön a Web Deploy Options ablak a Target URL mezőjének értéke, valamint az ocx állomány neve, verziószáma. Ha például másik helyre tesszük az ocx-et, akkor elegendő az is, ha itt módosítjuk, nem kell a Web Deploy Options-nál ezt megtennünk:
	 
codebase="http://www.animare.hu/ActiveFormProj1.ocx#
      version=1,0,25,0"
Ha CAB-ot használunk, akkor természetesen nem az ocx-et kell megcímeznünk:
codebase="http://www.animare.hu/ActiveFormProj1.CAB#
     version=1,0,25,0"

Mellékelt példában létrehoztunk egy olyan Form-ot, melyen egy egyedi adatbevitelt valósítunk meg. Amint az látható is, egy ilyen funkciójú adatbevitel elkészítése HTML nyelven, különféle script-ekkel is elég nehezen megvalósítható feladat, míg mindezt Delphi-ben leprogramozni nem állt másból, mint néhány komponens elhelyezése a Form-on.

Az adatbevitel most még nem működőképes, jelenleg csak az volt a cél, hogy megjelenjen a web lapon az ActiveForm.

A jövő héten megvizsgáljuk azt, hogy miként lehetséges az adatbevitel éles helyzetben történő megvalósítása.

ActiveForm cikksorozat