Užpildykite / pateikite formas naudodami „TWebBrowser“ „Delphi“

click fraud protection

„TWebBrowser“ „Delphi“ valdymas suteikia prieigą prie interneto naršyklės funkcijų iš jūsų „Delphi“ programų - kad galėtumėte kurti tinkintą žiniatinklį naršymo programą arba norėdami pridėti savo interneto, failų ir tinklo naršymo, dokumentų peržiūros ir duomenų atsisiuntimo galimybes programos.

Žiniatinklio formos

A žiniatinklio forma arba a forma tinklalapyje leidžia tinklalapio lankytojui įvesti duomenis, kurie dažniausiai siunčiami į serverį apdoroti.

Paprasčiausią interneto formą gali sudaryti viena įvesties elementas (redaguoti valdymą) ir a Pateikti mygtuką. Daugelis žiniatinklio paieškos sistemų (pvz., „Google“) naudoja tokią žiniatinklio formą, kad galėtų ieškoti internete.

Sudėtingesnės žiniatinklio formos apimtų išskleidžiamuosius sąrašus, žymimuosius laukelius, radijo mygtukus ir kt. Žiniatinklio forma yra panaši į įprastą „Windows“ formą su teksto įvesties ir pasirinkimo valdikliais.

Kiekvienoje formoje būtų mygtukas - pateikimo mygtukas, kuris lieptų naršyklei atlikti veiksmus žiniatinklio formoje (paprastai nusiųsti ją žiniatinklio serveriui apdoroti).

instagram viewer

Programiškai užpildomos interneto formos

Jei darbalaukio programoje naudojate „TWebBrowser“ tinklalapiams rodyti, galite programiškai valdyti žiniatinklio formas: manipuliuoti, keisti, užpildyti, užpildyti žiniatinklio formos laukus ir juos pateikti.

Čia yra pasirinktinių „Delphi“ funkcijų rinkinys, kurį galite naudoti norėdami išvardyti visas žiniatinklio formas internete, nuskaityti įvesties elementus, programiškai užpildyti laukus ir galutinai pateikti formą.

Kad būtų lengviau sekti pavyzdžius, tarkime, kad „Delphi“ (standartinėje „Windows“) formoje yra „TWebBrowser“ valdiklis pavadinimu „WebBrowser1“.

Pastaba: turėtumėte pridėti mshtml jūsų naudojimo sąlygai, kad būtų sudaryti čia išvardyti metodai.

Išvardykite internetinių formų pavadinimus, gaukite žiniatinklio formos pagal rodyklę sąrašą

Daugeliu atvejų tinklalapyje būtų tik viena interneto forma, tačiau kai kuriuose tinklalapiuose gali būti daugiau nei viena interneto forma. Štai kaip gauti visų žiniatinklio formų pavadinimus tinklalapyje:

funkcija „WebFormNames“ (const dokumentas: IHTMLDocument2): TStringList; var formos: IHTMLElementCollection; forma: IHTMLFormElement; idx: sveikasis skaičius; prasideda formos: = dokumentas. Formos kaip IHTMLElementCollection; rezultatas: = „TStringList“. Kurti; dėl idx: = 0 į –1 + formos.ilgis darytiprasideda forma: = formos.item („idx“, 0) kaip „IHTMLFormElement“; rezultatas. Pridėti (forma.pavadinimas); galas; galas; 

Paprastas naudojimas norint parodyti žiniatinklio formų vardų sąrašą „TMemo“:

var formos: „TStringList“; prasideda formos: = WebFormNames (WebBrowser1.Document AS IHTMLDocument2); bandyti memo1.Lines. Paskirti (formos); pagaliau formos. Laisvas; galas; galas; 

Štai kaip tai padaryti gaukite žiniatinklio formos egzempliorių pagal rodyklę. Vienos formos puslapio rodyklė būtų 0 (nulis).

funkcija „WebFormGet“ (const formNumber: sveikasis skaičius; const dokumentas: IHTMLDocument2): IHTMLFormElement; var formos: IHTMLElementCollection; prasideda formos: = dokumentas. Formos kaip IHTMLElementKolekcija; rezultatas: = formos. Prekė (formaNumber, '') kaip „IHTMLFormElement“. galas; 

Kai turėsite žiniatinklio formą, galėsite išvardykite visus HTML įvesties elementus pagal jų pavadinimą, tu gali gaukite arba nustatykite kiekvieno lauko vertęir galiausiai galite pateikti žiniatinklio formą.

Tinklalapiai gali talpinti interneto formas su įvesties elementais, tokiais kaip redagavimo laukai, ir išskleidžiamuosius sąrašus, kuriuos galite valdyti ir valdyti programiškai iš „Delphi“ kodo.

Kai turėsite žiniatinklio formą, galėsite išvardykite visus HTML įvesties elementus pagal jų pavadinimą:

funkcija „WebFormFields“ (const dokumentas: IHTMLDocument2; const formName: stygos): „TStringList“; var forma: IHTMLFormElement; laukas: IHTMLElement; fName: string; idx: sveikasis skaičius; prasideda forma: = „WebFormGet“ (0, „WebBrowser1.Document“ AS IHTMLDocument2); rezultatas: = „TStringList“. Kurti; dėl idx: = 0 į -1 + forma.ilgis daryti pradžios laukas: = form.item (idx, '') kaip IHTMLElement; jei laukas = tada nulis Tęsti; fName: = field.id; jei field.tagName = 'INPUT' tada fName: = (laukas kaip IHTMLInputElement) .name; jei field.tagName = 'SELECT' tada fName: = (laukas kaip IHTMLSelectElement) .name; jei field.tagName = 'TEXTAREA' tada fName: = (laukas kaip IHTMLTextAreaElement) .name; rezultatas. Pridėti (fName); galas; galas;

Kai žinai žiniatinklio formos laukų pavadinimus, tai gali padaryti programiškai gauti vertę vienam HTML laukui:

funkcija „WebFormFieldValue“ ( const dokumentas: IHTMLDocument2; const formNumber: sveikasis skaičius; const lauko pavadinimas: stygos): stygos; var forma: IHTMLFormElement; laukas: IHTMLElement; prasideda forma: = „WebFormGet“ („formNumber“, „WebBrowser1.Document“ AS IHTMLDocument2); laukas: = forma. Elementas (fieldName, '') kaip IHTMLElement; jei laukas = tada nulis Išeiti; jei field.tagName = 'INPUT' tada rezultatas: = (laukas kaip IHTMLInputElement) .value; jei field.tagName = 'SELECT' tada rezultatas: = (laukas kaip IHTMLSelectElement) .value; jei field.tagName = 'TEXTAREA' tada rezultatas: = (laukas kaip IHTMLTextAreaElement) .value; galas;

Naudojimo pavyzdys norint gauti įvesties lauko, pavadinto „URL“, vertę:

const FIELDNAME = 'URL'; var doc: IHTMLDocument2; fieldValue: stygos; prasideda doc: = „WebBrowser1.Document“ AS IHTMLDocument2; fieldValue: = WebFormFieldValue (doc, 0, FIELDNAME); memo1.Lines. Pridėti ('Laukas: "URL", reikšmė:' + fieldValue);galas;

Visa idėja neturėtų jokios vertės, jei negalėtumėte užpildyti internetinės formos elementus:

procedūra „WebFormSetFieldValue“ (const dokumentas: IHTMLDocument2; const formNumber: sveikasis skaičius; const fieldName, newValue: stygos); var forma: IHTMLFormElement; laukas: IHTMLElement; prasideda forma: = „WebFormGet“ („formNumber“, „WebBrowser1.Document“ AS IHTMLDocument2); laukas: = forma. Elementas (fieldName, '') kaip IHTMLElement; jei laukas = tada nulis Išeiti; jei field.tagName = 'INPUT' tada (laukas kaip IHTMLInputElement) .value: = newValue; jei field.tagName = 'SELECT' tada (laukas kaip IHTMLSelectElement): = newValue; jei field.tagName = 'TEXTAREA' tada (laukas kaip IHTMLTextAreaElement): = newValue; galas;

Pateikite žiniatinklio formą

Galiausiai, kai bus manipuliuojama visais laukais, tikriausiai norėtumėte pateikti žiniatinklio formą iš „Delphi“ kodo. Štai kaip:

procedūra „WebFormSubmit“ ( const dokumentas: IHTMLDocument2; const formNumber: sveikasis skaičius); var forma: IHTMLFormElement; laukas: IHTMLElement; prasideda forma: = „WebFormGet“ („formNumber“, „WebBrowser1.Document“ AS IHTMLDocument2); forma.pateikti; galas;

Ne visos žiniatinklio formos yra atviros

Kai kurios žiniatinklio formos gali talpinti „captcha“ atvaizdą, kad tinklalapiais nebūtų galima manipuliuoti programiškai.

Kai kurios žiniatinklio formos gali būti nepateiktos, kai „spustelite mygtuką pateikti“. Kai kurios žiniatinklio formos vykdo „JavaScript“ ar kita procedūra vykdoma įvykdžius žiniatinklio formos „pateikimo“ įvykį.

Bet kokiu atveju tinklalapius galima valdyti programiškai, vienintelis klausimas yra "kiek jūs pasiruošę eiti?"

instagram story viewer