Aizpildiet / iesniedziet veidlapas, izmantojot Delphi, izmantojot “TWebBrowser”

TWebBrowser Delphi vadība nodrošina piekļuvi tīmekļa pārlūka funkcionalitātei no jūsu Delphi lietotnēm - lai jūs varētu izveidot pielāgotu Web pārlūkošanas lietojumprogrammu vai, lai jūsu, interneta, failu un tīkla pārlūkošanu, dokumentu apskatīšanu un datu lejupielādes iespējas pievienotu aplikācijas.

Web veidlapas

A tīmekļa forma vai a veidlapa tīmekļa lapā ļauj tīmekļa lapas apmeklētājam ievadīt datus, kas vairumā gadījumu tiek nosūtīti uz serveri apstrādei.

Vienkāršākā tīmekļa forma varētu sastāvēt no vienas ievades elements (rediģēt vadību) un a Iesniegt pogu. Lielākā daļa tīmekļa meklētājprogrammu (piemēram, Google) izmanto šādu tīmekļa veidlapu, lai jūs varētu meklēt internetā.

Sarežģītākās tīmekļa formās būtu nolaižamie saraksti, izvēles rūtiņas, radiopogas utt. Tīmekļa veidlapa ir līdzīga standarta Windows formai ar teksta ievades un atlases vadīklu.

Katrā veidlapā būtu poga - iesniegšanas poga -, kas pārlūkam liek rīkoties tīmekļa veidlapā (parasti nosūtīt to Web serverim apstrādei).

instagram viewer

Programmatiski aizpildītas tīmekļa veidlapas

Ja darbvirsmas lietojumprogrammā Web lapu parādīšanai izmantojat TWebBrowser, varat programmatiski kontrolēt tīmekļa formas: manipulēt, mainīt, aizpildīt, aizpildīt tīmekļa veidlapas laukus un iesniegt to.

Šeit ir pielāgoto Delphi funkciju kolekcija, kuru varat izmantot, lai uzskaitītu visas tīmekļa lapas Web veidlapas, iegūtu ievades elementus, programmētu lauku aizpildīšanu un formas iesniegšanu.

Lai ērtāk sekotu piemēriem, pieņemsim, ka Delphi (standarta Windows) veidlapā ir TWebBrowser vadība ar nosaukumu “WebBrowser1”.

Piezīme: jums vajadzētu pievienot mshtml jūsu lietojuma klauzulai, lai apkopotu šeit uzskaitītās metodes.

Uzskaitiet Web veidlapu nosaukumus, iegūstiet Web veidlapu pēc indeksa

Tīmekļa vietnei vairumā gadījumu ir tikai viena tīmekļa forma, bet dažām tīmekļa lapām var būt vairāk nekā viena tīmekļa forma. Tālāk ir norādīts, kā iegūt visu Web lapu nosaukumus.

funkcija WebFormNames (const dokuments: IHTMLDocument2): TStringList; var formas: IHTMLElementCollection; forma: IHTMLFormElement; idx: vesels skaitlis; sākt formas: = dokuments. Veidlapas kā IHTMLElementCollection; rezultāts: = TStringList. Izveidot; priekš idx: = 0 uz -1 + formas.garums darītsākt forma: = formas.item (idx, 0) kā IHTMLFormElement; rezultāts. Pievienot (forma.vārds); beigas; beigas; 

Vienkāršs lietojums Web formātu vārdu parādīšanai TMemo:

var formas: TStringList; sākt formas: = WebFormNames (WebBrowser1.Document AS IHTMLDocument2); mēģiniet memo1.Līnijas. Piešķirt (formas); beidzot formas. Bezmaksas; beigas; beigas; 

Lūk, kā to izdarīt iegūt Web formas gadījumu pēc indeksa. Vienai veidlapas lapai indekss būtu 0 (nulle).

funkcija WebFormGet (const formaNumber: vesels skaitlis; const dokuments: IHTMLDocument2): IHTMLFormElement; var formas: IHTMLElementCollection; sākt formas: = dokuments. Veidlapas  IHTMLElementKolekcija; rezultāts: = formas. Vienība (formaNumber, '')  IHTMLFormElement. beigas; 

Kad esat ieguvis tīmekļa veidlapu, varat to darīt uzskaitiet visus HTML ievades elementus pēc nosaukuma, jūs varat iegūstiet vai iestatiet katra lauka vērtībuun, visbeidzot, jūs varat iesniedziet tīmekļa veidlapu.

Tīmekļa lapas var mitināt tīmekļa veidlapas ar ievades elementiem, piemēram, rediģēšanas lodziņiem un nolaižamajiem sarakstiem, kurus no Delphi koda varat programmēt un vadīt.

Kad esat ieguvis tīmekļa veidlapu, varat to darīt uzskaitiet visus HTML ievades elementus pēc nosaukuma:

funkcija WebFormFields (const dokuments: IHTMLDocument2; const formName: virkne): TStringList; var forma: IHTMLFormElement; lauks: IHTMLElement; fName: virkne; idx: vesels skaitlis; sākt forma: = WebFormGet (0, WebBrowser1.Document AS IHTMLDocument2); rezultāts: = TStringList. Izveidot; priekš idx: = 0 uz -1 + forma.garums darīt sākuma lauks: = form.item (idx, '') kā IHTMLElement; ja lauks = tad nulle Turpināt; fName: = field.id; ja field.tagName = 'INPUT' tad fName: = (lauks  IHTMLInputElement) .name; ja field.tagName = 'SELECT' tad fName: = (lauks  IHTMLSelectElement) .name; ja field.tagName = 'TEXTAREA' tad fName: = (lauks  IHTMLTextAreaElement) .name; rezultāts. Pievienot (fName); beigas; beigas;

Kad zināt tīmekļa veidlapu laukus, varat to programmēt iegūt vērtību vienam HTML laukam:

funkcija WebFormFieldValue ( const dokuments: IHTMLDocument2; const formaNumber: vesels skaitlis; const fieldName: virkne): virkne; var forma: IHTMLFormElement; lauks: IHTMLElement; sākt forma: = WebFormGet (formaNumber, WebBrowser1.Document AS IHTMLDocument2); lauks: = forma. Vienums (fieldName, '') kā IHTMLElement; ja lauks = tad nulle Izeja; ja field.tagName = 'INPUT' tad rezultāts: = (lauks  IHTMLInputElement) .vērtība; ja field.tagName = 'SELECT' tad rezultāts: = (lauks  IHTMLSelectElement) .vērtība; ja field.tagName = 'TEXTAREA' tad rezultāts: = (lauks  IHTMLTextAreaElement) .vērtība; beigas;

Lietošanas piemērs, lai iegūtu ievades lauka ar nosaukumu “URL” vērtību:

const FIELDNAME = 'URL'; var dok.: IHTMLDocument2; fieldValue: virkne; sākt doc: = WebBrowser1.Document AS IHTMLDocument2; fieldValue: = WebFormFieldValue (doc, 0, FIELDNAME); memo1.Līnijas. Pievienot ('Lauks: "URL", vērtība:' + fieldValue);beigas;

Visai idejai nebūtu vērtības, ja jūs to nespētu aizpildiet tīmekļa formas elementus:

procedūra WebFormSetFieldValue (const dokuments: IHTMLDocument2; const formaNumber: vesels skaitlis; const fieldName, newValue: virkne); var forma: IHTMLFormElement; lauks: IHTMLElement; sākt forma: = WebFormGet (formaNumber, WebBrowser1.Document AS IHTMLDocument2); lauks: = forma. Vienums (fieldName, '')  IHTMLElements; ja lauks = tad nulle Izeja; ja field.tagName = 'INPUT' tad (lauks  IHTMLInputElement) .value: = newValue; ja field.tagName = 'SELECT' tad (lauks  IHTMLSelectElement): = newValue; ja field.tagName = 'TEXTAREA' tad (lauks  IHTMLTextAreaElement): = newValue; beigas;

Iesniedziet Web veidlapu

Visbeidzot, kad visi lauki tiek manipulēti, jūs, iespējams, vēlēsities iesniegt tīmekļa veidlapu no Delphi koda. Lūk, kā:

procedūra WebFormSubmit ( const dokuments: IHTMLDocument2; const formaNumber: vesels skaitlis); var forma: IHTMLFormElement; lauks: IHTMLElement; sākt forma: = WebFormGet (formaNumber, WebBrowser1.Document AS IHTMLDocument2); forma.iesniegt; beigas;

Ne visas tīmekļa veidlapas ir "atvērtas"

Dažās tīmekļa formās, iespējams, tiek ievietots captcha attēls, lai tīmekļa lapas netiktu programmatiski manipulētas.

Iespējams, ka dažas tīmekļa veidlapas netiks iesniegtas, kad jūs noklikšķiniet uz pogas Iesniegt. Dažās tīmekļa veidlapās tiek izpildīts JavaScript vai kāda cita procedūra tiek izpildīta, izmantojot tīmekļa veidlapas notikumu “onsubmit”.

Jebkurā gadījumā tīmekļa lapas var kontrolēt programmatiski, vienīgais jautājums ir "cik tālu jūs esat gatavs iet?"

instagram story viewer