HyperLink


Bejelentkezés
E-mail: 
Jelszó: 






Skip Navigation Links
 

TWebBrowser komponensbe töltött lap SUBMIT eseményének előidézése


Példaprogram letöltése

4737 bájt

Az már talán senki számára nem ismeretlen, hogy a TWebBrowser komponens milyen hasznos segítség olyan esetekben, mikor egy weblapot az alkalmazás űrlapján szeretnénk megjeleníteni. A komponens másik nagy előnye, hogy objektummodelljének elérése következtében kapcsolatot teremthetünk az adott weblap kontroljaival, objektumaival. Ennek köszönhetően információkat helyezhetünk el a vezérlőkben, vagy adatokat gyűjthetünk onnan. Cikkünkben azt vizsgáljuk, hogy tudjuk a betöltött, űrlapot reprezentáló weblap adatait elküldeni a szerverre, vagyis hogyan válthatunk ki az alkalmazásból egy SUBMIT eseményt anélkül, hogy a Weblap nyomógombjára kattintanánk.

A mellékelt alkalmazás indulásakor a mappában található Test.htm állományt töltjük be a TWebBrowser komponensbe, melynek felületén egy szövegbeviteli kontrol, és egy SUBMIT nyomógomb található. A lap betöltődésekor meghívódik az alert metódus, így értesülhetünk a lap újratöltéséről is.
A lap betöltését a komponens Navigate2 metódusával végezzük el.
Url := ExtractFilePath(Application.ExeName) + 'Test.htm';
WebBrowser1.Navigate2(Url, Flags, TargetFrameName, PostData, Headers);
Az alkalmazás MŰVELET gombjára kattintva érhetjük el, hogy a Weblap nyomógombja kvázi megnyomódjon, vagyis a lap a képzeletbeli szerver-oldalra eljusson.
A művelet érdekében létre kell hoznunk az adott HTML lap Document objektumát. Ezt a következő kóddal tehetjük meg:
WebBrowser1.ControlInterface.Document.QueryInterface(IHtmlDocument2, doc);
Amennyiben ez nem sikerül, akkor kilépünk a függvényből. A következő lépés, hogy lekérdezzük az összes INPUT HTML elemet. Jól tudjuk, hogy a szövegmezők egy része, és a nyomógombok is részei ennek a csoportnak.
ov := 'INPUT';
disp := doc.all.tags(ov);
...
disp.QueryInterface(IHTMLElementCollection, collection);
Egy ciklussal megyünk végig ezen a kollekción. Minden elemhez létrehozunk egy objektumot, hogy a Name property-jét elérjük.
for i := 1 to collection.Get_length do begin
  disp := collection.item(pred(i), 0);
  disp.QueryInterface(HTMLInputImage, inputelement);
Ha az objektum létrehozása sikerült, akkor lekérdezzük a tag nevét. Amennyiben ez a karakterlánc azonos a SUBMIT karakterlánccal, vagyis a HTML elem ilyen típusú, akkor meghívjuk az objektum Click metódusát.
  if Assigned(inputelement) then begin
    if inputelement.Name = 'submit' then begin
      inputelement.Click;
    end;
  ...
A művelet eredményeképpen a weblap ismét betöltődik, és a BODY elemben megvalósított üzenetablak-megjelenítés ismételten lefut.

Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2003 évkönyv 765. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2010 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |