Delphi - ActiveForm felhasználása Delphi-ben

ActiveForm 2. rész

forráskód letöltése
Múlt héten 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.

Mostani cikkben azt vizsgáljuk, hogy a web lapon lévő Delphi Form-on bevitt adatokat miként kérdezhetjük le programból. Most csupán a múlt héten elkészült példát kell kiegészítenünk, így az eddig elkészülteket nem ismertetjük újra, hiszen ezeket múltkor részletesen tárgyaltuk.

Adott tehát a web lapon megjelenő Delphi-ben készült Form-unk, melyre három adat vihető be: név, cím, születési dátum. Most már csak az lenne a kérdés, hogy miként férhetünk hozzá a felhasználó által beírt adatokhoz.

Ehhez először is hozzunk létre egy olyan tulajdonságot az ActiveForm-hoz, melyen keresztül hozzáférhetünk a beírt adatokhoz.

Ehhez az ActiveForm Type Library-ában kell matatnunk egy kicsit. Válasszuk a View - Unit menüpontot, majd a megjelenő ablakból az ActiveFormProj1_TLB unit-ot. Ekkor megjelenik a Type Library forráskódja. Nyomjuk le az F12 gombot. Most láthatóvá válik a Type Library szerkesztője.

Itt igen sok mindent fogunk látni, de bennünket most csak a bal oldali hierarchiából az ActiveFormProj1 - IActiveFormX eleme érdekel. Kattintsunk is erre. Itt kell létrehoznunk egy csak olvasható property-t, melyen keresztül majd kiolvassuk a beírt adatokat.

Ehhez kattintsunk a felső sorban található nyomógombok közül a New Property nevűre. Pontosabban a gomb mellett található, lefele mutató kis nyílra. Ekkor megjelenik egy menü, melyből kiválasztva a Read Only menüpontot, létrejön egy új, csak olvasható property, melynek Property1 lesz a neve. Ezt át is írhatnánk, de most hagyjuk meg ezzel a névvel. A property típusát állítsuk VARIANT-ra. Ehhez az Attribute lapon a Type mezőben válasszuk a VARIANT elemet.

Az új property most már meg is van, csupán frissítenünk kell a forráskódunkat. Ehhez a Refresh Implementation gombra kell kattintanunk.

Ezek után keressük elő a Form-unkat és nézzük meg a forráskódját. Ha mindent jól tettünk, akkor találnunk kell egy Get_Property1 függvényt.

function TActiveFormX.Get_Property1: OleVariant;
begin

end;

Ez lesz az a pont, ahol értéket adhatunk az új property-nek. Itt most az egyszerűség kedvéért mind a három beviteli mezőből egyetlen sztringet készítünk és ezt adjuk visszatérési értékként.

result:='Név: '+Edit1.Text+#10'Cím: '+Edit2.Text+#10'Születési dátum: '+DateToStr(MonthCalendar1.Date);

Ezek után fordítsuk újra az ActiveForm-ot majd a Web Deploy-al ismét publikáljuk is az új OCX, HTM állományokat.

Most már rendelkezik az ActiveX objektumunk egy Property1 nevű property-vel, melyet lekérdezve a három beviteli mező adatát kaphatjuk vissza egyetlen sztringbe. Így most már csak ezt a lekérdezést kell megvalósítanunk.

Ehhez azonban kicsit módosítanunk kell a Delphi által létrehozott teszt web lapot. Nyissuk meg az ActiveFormProj1.htm állományt egy egyszerű szövegszerkesztővel, akár a Delphi-t is használhatjuk.

Első lépésként az ActiveX objektumot megjelenítő HTML kódon kell változtatnunk. Az objektumnak ugyanis nincs neve, így viszont nem is tudunk majd hivatkozni rá. Ezért szúrjunk be egy sort, ahová begépeljük a name=xxx sort. Itt az xxx egy tetszőleges, de egyedi név legyen.
<OBJECT
  … 
  name=dsoobj
  …
>
</OBJECT>
Ezek után helyezzünk a Form alá a web lapra egy OK gombot, melyet lenyomva megjelenítjük a beírt adatokat oly módon, hogy ezt a létrehozott Property1 property-n keresztül kérdezzük le.
<input type=button value=ok style="width: 130" 
    onclick="alert(dsoobj.Property1)">
Amint az látható, az objektum neve után egy ponttal elválasztva hivatkozhatunk az adott property nevére, mintha csak Delphi-ben lennénk.

A gomb lenyomásakor megjelennek tehát a beviteli lapra írt adatok. Jövő héten az lesz a következő lépés, hogy ezeket az adatokat web szerverünk felé visszajuttassuk, így megtörténhet a tényleges adatbevitel, adatfeldolgozás, tárolás.

ActiveForm cikksorozat