Delphi - ActiveForm felhasználása Delphi-ben

ActiveForm 3. rész

forráskód letöltése
Cikksorozat első részében elkészítettünk egy speciális ActiveX komponenst, mely nem más mint egy Delphi-ből már jól ismert Form, amelyre tetszőleges komponenseket tehetünk. Ezt el is helyeztük egy web lapon, így a Delphi-ben készült Form-ot megjeleníthetjük egy böngészőben egy web lapon.

Múlt héten azt kezdtük el vizsgálni, hogy miként tudjuk megállapítani, hogy milyen adatokat írt be a felhasználó erre a Form-ra.

Mostani cikkben azt vizsgáljuk, hogy a bevitt adatokat miként juttathatjuk vissza web szerverünkhöz további feldolgozásra. A mellékelt példa kipróbálásához az alábbi lépésekre van szükség:
  • Az ActiveTest könyvtárban lévő project nyissa meg, fordítsa le és a kész EXE-t helyezze el web szervere scripts könyvtárába, illetve oda, ahonnan programot képes futtatni.
  • Az ActiveForm könyvtárban lévő project nyissa meg, fordítsa le.
  • Válassza a Project - Web Deployment Options menüpontot a sorozat első részében leírtak szerint adja meg a szükséges adatokat.
  • Válassza a Project - Web Deploy menüpontot.
  • A létrejött ActiveFormProj1.htm állományt írja felül az ActiveForm könyvtárban lévővel.
  • Indítsa el az Internet Explorer-t és írja be a következőt: http://szervernev/ActiveFormProj1.htm, ahol a szervernev a saját web szerverének neve.

Nézzük most a megvalósítást.

Múlthéten létrehoztunk egy Property1 nevű property-t az ActiveFormProj1 Type Library-be, annak érdekében, hogy az ActiveForm-ra beírt adatokat elérhessük egyetlen sztringként.

Most viszont arra lenne szükségünk, hogy minden egyes adatot elérhessünk egyesével is, ezért létrehozunk még három property-t DataName, DataAddress, DataDate névvel, mely a három lehetséges beviteli adatot fogja szolgáltatni számunkra.

E property-k létrehozása ugyanúgy történik, mint ahogy múlt héten a Property1 esetében tettük, így ennek módját nem ismételjük meg itt.

Ezek után az OCX már fordítható is, több dolgunk nem akad vele.

Nézzük most a Delphi által generált web lapot, az ActiveFormProj1.htm állományt. Itt először nevet kell adnunk az objektumunknak, hogy a web lapon hivatkozni is tudjunk rá.
Ezért az OBJECT taghoz beszúrjuk a name=dsoobj sort.

Az objektumunk után készítünk egy adatbeviteli Form-ot a web lapra:
<form method=get action="/scripts/activetest.exe" 
     onsubmit="dataname.value=dsoobj.DataName;
     dataaddress.value=dsoobj.DataAddress;
     datadate.value=dsoobj.DataDate">
<input type=hidden name=dataname value=0>
<input type=hidden name=dataaddress value=0>
<input type=hidden name=datadate value=0>
<input type=submit value=ok style="width: 130">
</form>
Amint látható a kódból az OK gomb lenyomása az ActiveTest.exe-t fogja hívni a web szerverünkön. Ez lesz az az alkalmazás, mely a felhasználó által megadott adatokat feldolgozza. A beviteli HTML Form nem is tartalmaz mást, mint három rejtett (hidden) mezőt, valamint egy OK gombot. Ezeknek a rejtett mezőknek akkor adunk értéket, amikor a felhasználó az OK gombra kattint. Ehhez a FORM OnSubmit eseményét használjuk fel. Itt egy kis rövid script-el elérjük, hogy minden rejtett mező értéket kapjon. Ehhez az ActiveForm-unk három új property-ét használjuk fel.

Végeredményképpen előáll a következő web lap címzés, ha például névhez azt írjuk, hogy Animare, a címhez azt hogy Pécs, míg a dátumhoz 2000. szeptember 4:
http://www.animare.hu/scripts/activetest.exe?
      dataname=Animare&dataaddress=
      Pécs&datadate=2000.+09.+04.
Amint az látható, az adott web szerveren a Scripts könyvtárban meg lesz hívva az ActiveTest.exe program. Paraméterként át lesz adva neki a következő: dataname paraméter Animare, dataaddress paraméter Pécs és datadate paraméter 2000. 09. 04.

Vagyis sikerült kiolvasni az ActiveForm-ra beírt adatokat és ezeket egy web szerver alkalmazásnak paraméterekben átadni.

Nézzük most az ActiveText.exe programot, mely megkapja a beírt adatokat.

Ezt a programot az ActiveTest könyvtárban találjuk. Az alkalmazás nem más, mint egy egyszerű web szerver program.

A program a kapott paraméterek alapján nem tesz mást, mint előállít egy web lapot, melyet visszaküld a kliens web böngészőjének. Természetesen az alkalmazás most már bármit megtehetne az adatokkal, hiszen azok eljutattuk a web szerverünkre. Ettől kezdve már tárolhatjuk adatbázisba, feldolgozhatjuk igény szerint.

Az egyes paramétereket a Request objektum QueryFields property-én keresztül érhetjük el. Például, ha a beírt névre vagyunk kíváncsiak, akkor: s:=Request.QueryFields.Values['dataname'];

ActiveForm cikksorozat