TWebBrowser Delphi-juhtseade võimaldab juurdepääsu teie Delphi-rakenduste veebibrauseri funktsioonidele - selleks saate luua kohandatud veebi sirvimisrakendust või Interneti-failide ja võrgu sirvimise, dokumentide kuvamise ning andmete allalaadimisvõimaluste lisamiseks oma rakendustele rakendused.
Veebivormid
A veebivorm või a vorm veebilehel võimaldab veebilehe külastajal sisestada andmeid, mis enamasti saadetakse serverisse töötlemiseks.
Lihtsaim veebivorm võiks koosneda ühest sisend element (redigeerige juhtimist) ja a Esita nuppu. Enamik veebiotsingumootoreid (nagu Google) kasutab sellist veebivormi, et saaksite Internetist otsida.
Keerukamad veebivormid hõlmaksid ripploendeid, märkeruute, raadionuppe jne. Veebivorm sarnaneb tavalise aknavormiga, kus on tekstisisestus ja valiku juhtelemendid.
Igas vormis oleks nupp - edastamisnupp -, mis käsib brauseril veebivormis toiminguid teha (tavaliselt saata see veebiserverisse töötlemiseks).
Programmiliselt täidetavad veebivormid
Kui kasutate oma töölauarakenduses veebilehtede kuvamiseks TWebBrowserit, saate veebivorme programmiliselt juhtida: veebivormi väljadega manipuleerida, neid muuta, täita, asustada ja neid saata.
Siin on Delphi kohandatud funktsioonide kogum, mida saate kasutada kõigi veebilehel olevate veebivormide loetlemiseks, sisendielementide hankimiseks, väljade programmiliselt asustamiseks ja vormi edastamiseks.
Näidete hõlpsamaks järgimiseks oletame, et Delphi (tavaline Windows) vormil on olemas TWebBrowser-i juhtseade nimega "WebBrowser1".
Märkus: peaksite lisama mshtml siinse meetodi koostamiseks oma kasutusklausli juurde.
Veebivormi nimede loetlemine, veebivormi hankimine indeksi järgi
Veebilehel oleks enamikul juhtudel ainult üks veebivorm, kuid mõnel veebilehel võib olla mitu veebivormi. Siit saate teada, kuidas kõigi veebilehtede veebivormide nimesid hankida:
funktsiooni WebFormNames (const dokument: IHTMLDocument2): TStringList; var vormid: IHTMLElementCollection; vorm: IHTMLFormElement; idx: täisarv; alustada vormid: = dokument. Vormid kui IHTMLElementCollection; tulemus: = TStringList. Loo; jaoks idx: = 0 kuni -1 + vorme.pikkus tehaalustada vorm: = forms.item (idx, 0) kui IHTMLFormElement; tulemus. Lisa (vorm.nimi); lõpp; lõpp;
Lihtne kasutamine veebivormi nimede kuvamiseks TMemos:
var vormid: TStringList; alustada vormid: = WebFormNames (WebBrowser1.Document AS IHTMLDocument2); proovida memo1.Liinid. Määra (vormid); lõpuks vormid. Tasuta; lõpp; lõpp;
Siit saate teada, kuidas seda teha hankige veebivormi eksemplari indeksi järgi. Ühe vormi lehe puhul oleks indeks 0 (null).
funktsiooni WebFormGet (const formNumber: täisarv; const dokument: IHTMLDocument2): IHTMLFormElement; var vormid: IHTMLElementCollection; alustada vormid: = dokument. Vormid kui IHTMLElementKogumine; tulemus: = vormid. Üksus (vormNumber, '') kui IHTMLFormElement. lõpp;
Kui olete veebivormi saanud, saate seda teha loetlege kõik HTML-i sisestuselemendid nende nime järgi, sa saad hankige või määrake iga välja väärtusja lõpuks saate esitage veebivorm.
Veebilehed saavad hostida sisestuselementidega veebivorme, nagu näiteks redigeerimiskastid, ja ripploenditest, mida saate Delphi-koodist programmiliselt juhtida ja käsitseda.
Kui olete veebivormi saanud, saate seda teha loetlege kõik HTML-i sisestuselemendid nende nime järgi:
funktsiooni WebFormFields (const dokument: IHTMLDocument2; const formName: nöör): TStringList; var vorm: IHTMLFormElement; väli: IHTMLElement; fName: string; idx: täisarv; alustada vorm: = WebFormGet (0, WebBrowser1.Document AS IHTMLDocument2); tulemus: = TStringList. Loo; jaoks idx: = 0 kuni -1 + vormi pikkus teha alusta väli: = form.item (idx, '') kui IHTMLElement; kui väli = null siis Jätka; fName: = field.id; kui field.tagName = 'INPUT' siis fName: = (väli kui IHTMLInputElement) .name; kui field.tagName = 'SELECT' siis fName: = (väli kui IHTMLSelectElement) .name; kui field.tagName = 'TEXTAREA' siis fName: = (väli kui IHTMLTextAreaElement) .name; tulemus. Lisa (fName); lõpp; lõpp;
Kui teate veebivormi väljade nimesid, saate seda programmiliselt kasutada saada väärtus ühe HTML-i välja jaoks:
funktsiooni WebFormFieldValue ( const dokument: IHTMLDocument2; const formNumber: täisarv; const fieldName: nöör): nöör; var vorm: IHTMLFormElement; väli: IHTMLElement; alustada vorm: = WebFormGet (vormNumber, WebBrowser1.Document AS IHTMLDocument2); väli: = vorm. Üksus (väliNimi, '') kui IHTMLElement; kui väli = null siis Väljapääs; kui field.tagName = 'INPUT' siis tulemus: = (väli kui IHTMLInputElement) .value; kui field.tagName = 'SELECT' siis tulemus: = (väli kui IHTMLSelectElement) .value; kui field.tagName = 'TEXTAREA' siis tulemus: = (väli kui IHTMLTextAreaElement) .value; lõpp;
Näide kasutamise kohta sisestusvälja väärtuse URL-i saamiseks:
const FIELDNAME = 'url'; var doc: IHTMLDocument2; fieldValue: nöör; alustada doc: = WebBrowser1.Document AS IHTMLDocument2; fieldValue: = WebFormFieldValue (doc, 0, FIELDNAME); memo1.Liinid. Lisa ('väli:' URL ', väärtus:' + fieldValue);lõpp;
Kogu ideel poleks mingit väärtust, kui te seda ei saaks täitke veebivormi elemendid:
protseduur WebFormSetFieldValue (const dokument: IHTMLDocument2; const formNumber: täisarv; const fieldName, newValue: nöör); var vorm: IHTMLFormElement; väli: IHTMLElement; alustada vorm: = WebFormGet (vormNumber, WebBrowser1.Document AS IHTMLDocument2); väli: = vorm. Üksus (fieldName, '') kui IHTMLElement; kui väli = null siis Väljapääs; kui field.tagName = 'INPUT' siis (väli kui IHTMLInputElement) .value: = newValue; kui field.tagName = 'SELECT' siis (väli kui IHTMLSelectElement): = newValue; kui field.tagName = 'TEXTAREA' siis (väli kui IHTMLTextAreaElement): = newValue; lõpp;
Esitage veebivorm
Lõpuks, kui kõigi väljadega on manipuleeritud, soovite tõenäoliselt edastada veebivormi Delphi koodist. Siit saate teada:
protseduur WebFormSubmit ( const dokument: IHTMLDocument2; const vormNumber: täisarv); var vorm: IHTMLFormElement; väli: IHTMLElement; alustada vorm: = WebFormGet (vormNumber, WebBrowser1.Document AS IHTMLDocument2); vorm.saate; lõpp;
Kõik veebivormid pole "avatud meelega"
Mõni veebivorm võib hostida captcha-pilti, et takistada veebilehtede programmilist kasutamist.
Mõnda veebivormi ei pruugita saata, kui klõpsate nupul Saada. Mõni veebivorm täidab JavaScripti või mõni muu protseduur käivitatakse veebivormi "onsubmit" sündmuse kaudu.
Igal juhul saab veebilehti programmiliselt juhtida, ainus küsimus on "kui kaugele olete valmis minema?"