TWebBrowser Delphi kontrola omogućuje pristup funkcionalnosti web-preglednika iz vaših Delphi aplikacija - kako biste omogućili stvaranje prilagođenog weba aplikaciju za pregledavanje ili za dodavanje mogućnosti pregledavanja interneta, datoteka i mreža, pregledavanje dokumenata i mogućnosti preuzimanja podataka aplikacija.
Web obrasci
web obrazac ili a obrazac na web stranici omogućuje posjetitelju web stranice da unese podatke koji se, u većini slučajeva, šalju poslužitelju na obradu.
Najjednostavniji web obrazac mogao bi se sastojati od jednog ulazni element (uređivanje kontrole) i a podnijeti dugme. Većina web pretraživača (poput Googlea) koristi takav web obrazac za omogućavanje pretraživanja interneta.
Složeniji web obrasci uključuju padajuće popise, potvrdne okvire, radio gumbe itd. Web obrazac sličan je standardnom Windows obliku s kontrolama unosa i odabira teksta.
Svaki obrazac sadržavao bi tipku - gumb za slanje - koji poručuje pregledniku da poduzima akcije na web obrascu (obično ga šalje web poslužitelju na obradu).
Programsko punjenje web obrazaca
Ako u stolnoj aplikaciji koristite TWebBrowser za prikaz web stranica, možete programski kontrolirati web obrasce: manipulirati, mijenjati, popunjavati, popunjavati polja web obrasca i slati ih.
Evo zbirke prilagođenih Delphi funkcija pomoću kojih možete popisati sve web obrasce na web stranici, dohvatiti elemente unosa, programirati popunjavanje polja i konačno predati obrazac.
Da biste lakše slijedili primjere, recimo da postoji TWebBrowser kontrola pod nazivom "WebBrowser1" na Delphi (standardni Windows) obrascu.
Napomena: trebali biste dodati Mshtml na svoju upotrebu klauzule kako biste sastavili ovdje navedene metode.
Navedite imena web obrazaca, nabavite web obrazac po indeksu
Web stranica u većini slučajeva ima samo jedan web obrazac, ali neke web stranice mogu imati više od jednog web obrasca. Evo kako do naziva svih web obrazaca na web stranici:
funkcija WebFormNames (const dokument: IHTMLDocument2): TStringList; var oblici: IHTMLElementCollection; obrazac: IHTMLFormElement; idx: cijeli broj; početi obrasci: = dokument. Oblikuje se kao IHTMLElementCollection; rezultat: = TStringList. Stvoriti; za idx: = 0 do -1 + oblici.duljina činipočeti form: = form.item (idx, 0) kao IHTMLFormElement; proizlaziti. Dodati (form.name); kraj; kraj;
Jednostavna upotreba za prikazivanje popisa naziva web obrasca u TMemo:
var oblici: TStringList; početi oblici: = WebFormNames (WebBrowser1.Document KAO IHTMLDocument2); probati memo1.Lines. Dodijeliti (obrasci); konačno oblici. Besplatno; kraj; kraj;
Evo kako dobiti indeks web stranice u indeksu. Za jednu stranicu obrasca indeks bi bio 0 (nula).
funkcija WebFormGet (const formNumber: cijeli broj; const dokument: IHTMLDocument2): IHTMLFormElement; var oblici: IHTMLElementCollection; početi obrasci: = dokument. obrasci kao IHTMLElementCollection; rezultat: = oblici. Stavka (obrazacNbroj, '') kao IHTMLFormElement. kraj;
Jednom kada imate web obrazac, to možete popis svih elemenata unosa HTML-a prema njihovom imenu, možeš dobiti ili postaviti vrijednost za svako od polja, i konačno, možete pošaljite web obrazac.
Web stranice mogu ugostiti web obrasce s elementima unosa kao što su okviri za uređivanje i padajuće popise kojima programski možete kontrolirati i upravljati iz Delphi koda.
Jednom kada imate web obrazac, to možete popis svih elemenata unosa HTML-a prema njihovom imenu:
funkcija WebFormFields (const dokument: IHTMLDocument2; const formName: niz): TStringList; var obrazac: IHTMLFormElement; polje: IHTMLElement; fName: string; idx: cijeli broj; početi oblik: = WebFormGet (0, WebBrowser1.Document KAO IHTMLDocument2); rezultat: = TStringList. Stvoriti; za idx: = 0 do -1 + oblik.duljina čini početno polje: = form.item (idx, '') kao IHTMLElement; ako polje = nula tada Nastaviti; fName: = field.id; ako field.tagName = 'ULAZ' zatim fName: = (polje kao IHTMLInputElement) .name; ako field.tagName = 'IZBOR' zatim fName: = (polje kao IHTMLSelectElement) .name; ako field.tagName = 'TEXTAREA' zatim fName: = (polje kao IHTMLTextAreaElement) .name; proizlaziti. Dodaj (fName); kraj; kraj;
Kad znate web polja na web obrascu, možete ih programirati dobiti vrijednost za jedno HTML polje:
funkcija WebFormFieldValue ( const dokument: IHTMLDocument2; const formNumber: cijeli broj; const naziv polja: niz): niz; var obrazac: IHTMLFormElement; polje: IHTMLElement; početi oblik: = WebFormGet (formNumber, WebBrowser1.Document KAO IHTMLDocument2); polje: = oblik. Stavka (poljeName, '') kao IHTMLElement; ako polje = nula tada Izlaz; ako field.tagName = 'ULAZ' zatim rezultat: = (polje kao IHTMLInputElement) .value; ako field.tagName = 'IZBOR' zatim rezultat: = (polje kao IHTMLSelectElement) .value; ako field.tagName = 'TEXTAREA' zatim rezultat: = (polje kao IHTMLTextAreaElement) .value; kraj;
Primjer upotrebe za dobivanje vrijednosti polja za unos naziva "URL":
const FIELDNAME = 'url'; var doc: IHTMLDocument2; fieldValue: niz; početi doc: = WebBrowser1.Document KAO IHTMLDocument2; fieldValue: = WebFormFieldValue (doc, 0, FIELDNAME); memo1.Lines. Add ('Field: "URL", value:' + fieldValue);kraj;
Cijela ideja ne bi imala vrijednost ako to ne biste mogli popunite elemente web obrasca:
postupak WebFormSetFieldValue (const dokument: IHTMLDocument2; const formNumber: cijeli broj; const fieldName, newValue: niz); var obrazac: IHTMLFormElement; polje: IHTMLElement; početi oblik: = WebFormGet (formNumber, WebBrowser1.Document KAO IHTMLDocument2); polje: = oblik. Stavka (poljeNije, '') kao IHTMLElement; ako polje = nula tada Izlaz; ako field.tagName = 'ULAZ' zatim (polje kao IHTMLInputElement) .value: = newValue; ako field.tagName = 'IZBOR' zatim (polje kao IHTMLSelectElement): = novaValue; ako field.tagName = 'TEXTAREA' zatim (polje kao IHTMLTextAreaElement): = novaValue; kraj;
Pošaljite web obrazac
Konačno, kad su sva polja manipulirana, vjerojatno biste htjeli poslati web obrazac iz Delphi koda. Evo kako:
postupak WebFormSubmit ( const dokument: IHTMLDocument2; const formNumber: cijeli broj); var obrazac: IHTMLFormElement; polje: IHTMLElement; početi oblik: = WebFormGet (formNumber, WebBrowser1.Document KAO IHTMLDocument2); form.submit; kraj;
Nisu svi web obrasci "otvorenog uma"
Neki bi web obrasci mogli ugostiti sliku captcha kako bi se spriječilo programsko manipuliranje web stranicama.
Neke web obrasce možda neće biti poslano kada "kliknete gumb za slanje". Neki web obrasci izvršavaju JavaScript ili neki drugi postupak izvršava se postupkom "onsubmit" web obrasca.
U svakom slučaju, web stranice se mogu kontrolirati programatski, jedino je pitanje "koliko ste spremni ići?"