TWebBrowser Ovládací prvek Delphi poskytuje přístup k funkcím webového prohlížeče z vašich aplikací Delphi - umožňuje vám vytvořit přizpůsobený web prohlížecí aplikace nebo přidat do Internetu možnosti procházení souborů, souborů a sítí, prohlížení dokumentů a stahování dat aplikace.
Webové formuláře
A webový formulář nebo a formulář na webové stránce umožňuje návštěvníkovi webové stránky zadávat data, která jsou ve většině případů odesílána na server ke zpracování.
Nejjednodušší webový formulář by se mohl skládat z jednoho vstupní prvek (úprava kontroly) a Předložit knoflík. Většina webových vyhledávačů (jako je Google) používá takový webový formulář, který vám umožní prohledávat internet.
Složitější webové formuláře by obsahovaly rozevírací seznamy, zaškrtávací políčka, přepínače atd. Webový formulář je podobně jako standardní formulář pro Windows s ovládacími prvky pro zadávání textu a výběr.
Každý formulář by měl obsahovat tlačítko - tlačítko Odeslat -, které říká prohlížeči, aby podnikl kroky ve webovém formuláři (obvykle je odeslat na webový server ke zpracování).
Programově naplnění webových formulářů
Pokud ve vaší stolní aplikaci používáte TWebBrowser k zobrazení webových stránek, můžete programově ovládat webové formuláře: manipulovat, měnit, vyplňovat, vyplňovat pole webového formuláře a odeslat.
Zde je kolekce vlastních funkcí Delphi, které můžete použít k výpisu všech webových formulářů na webové stránce, k načtení vstupních prvků, k programovému vyplnění polí a konečnému odeslání formuláře.
Chcete-li snadněji následovat příklady, řekněme, že ve formuláři Delphi (standardní Windows) je ovládací prvek TWebBrowser s názvem „WebBrowser1“.
Poznámka: měli byste přidat mshtml do své klauze o použití za účelem kompilace zde uvedených metod.
Seznam názvů webových formulářů, získání webového formuláře podle indexu
Webová stránka by ve většině případů měla pouze jeden webový formulář, ale některé webové stránky mohou mít více než jeden webový formulář. Zde je návod, jak získat názvy všech webových formulářů na webové stránce:
funkce WebFormNames (konst dokument: IHTMLDocument2): TStringList; var formy: IHTMLElementCollection; forma: IHTMLFormElement; idx: celé číslo; začít forms: = document. Formuláře jako IHTMLElementCollection; result: = TStringList. Vytvořit; pro idx: = 0 na -1 + forms.length dělatzačít form: = forms.item (idx, 0) jako IHTMLFormElement; výsledek. Přidat (form.name); konec; konec;
Jednoduché použití k zobrazení seznamu názvů webových formulářů v TMemo:
var formy: TStringList; začít forms: = WebFormNames (WebBrowser1.Document TAK JAKO IHTMLDocument2); Snaž se memo1.Lines. Přiřadit (formy); Konečně formuláře. Volný, uvolnit; konec; konec;
Zde je návod získat instanci webového formuláře pomocí indexu. Pro jednu stránku formuláře by index byl 0 (nula).
funkce WebFormGet (konst formNumber: integer; konst dokument: IHTMLDocument2): IHTMLFormElement; var formy: IHTMLElementCollection; začít forms: = document. formuláře tak jako IHTMLElementCollection; result: = forms. Položka (formNumber, '') tak jako HTMLFormElement. konec;
Jakmile budete mít webový formulář, můžete seznam všech vstupních prvků HTML podle jejich názvu, můžeš získat nebo nastavit hodnotu pro každé polea konečně můžete odešlete webový formulář.
Webové stránky mohou hostovat webové formuláře se vstupními prvky, jako jsou textová pole a rozevírací seznamy, které můžete programově ovládat a manipulovat z kódu Delphi.
Jakmile budete mít webový formulář, můžete seznam všech vstupních prvků HTML podle jejich názvu:
funkce WebFormFields (konst dokument: IHTMLDocument2; konst formName: tětiva): TStringList; var forma: IHTMLFormElement; pole: IHTMLElement; fName: string; idx: celé číslo; začít forma: = WebFormGet (0, WebBrowser1.Document TAK JAKO IHTMLDocument2); result: = TStringList. Vytvořit; pro idx: = 0 na -1 + form.length dělat počáteční pole: = form.item (idx, '') jako IHTMLElement; -li field = pak žádný Pokračovat; fName: = field.id; -li field.tagName = 'INPUT' pak fName: = (pole tak jako IHTMLInputElement) .name; -li field.tagName = 'SELECT' pak fName: = (pole tak jako IHTMLSelectElement) .name; -li field.tagName = 'TEXTAREA' pak fName: = (pole tak jako IHTMLTextAreaElement) .name; výsledek. Přidat (fName); konec; konec;
Pokud znáte názvy polí ve webovém formuláři, můžete programovat získat hodnotu pro jedno pole HTML:
funkce WebFormFieldValue ( konst dokument: IHTMLDocument2; konst formNumber: integer; konst fieldName: tětiva): tětiva; var forma: IHTMLFormElement; pole: IHTMLElement; začít forma: = WebFormGet (formNumber, WebBrowser1.Document TAK JAKO IHTMLDocument2); field: = form. Položka (fieldName, '') jako IHTMLElement; -li field = pak žádný Výstup; -li field.tagName = 'INPUT' pak výsledek: = (pole tak jako IHTMLInputElement) .value; -li field.tagName = 'SELECT' pak výsledek: = (pole tak jako IHTMLSelectElement) .value; -li field.tagName = 'TEXTAREA' pak výsledek: = (pole tak jako IHTMLTextAreaElement) .value; konec;
Příklad použití k získání hodnoty vstupního pole s názvem „URL“:
konst FIELDNAME = 'url'; var doc: IHTMLDocument2; fieldValue: tětiva; začít doc: = WebBrowser1.Document TAK JAKO IHTMLDocument2; fieldValue: = WebFormFieldValue (doc, 0, FIELDNAME); memo1.Lines. Přidat ('Field: "URL", value:' + fieldValue);konec;
Celá myšlenka by neměla žádnou hodnotu, pokud byste nebyli schopni vyplňte prvky webového formuláře:
postup WebFormSetFieldValue (konst dokument: IHTMLDocument2; konst formNumber: integer; konst fieldName, newValue: tětiva); var forma: IHTMLFormElement; pole: IHTMLElement; začít forma: = WebFormGet (formNumber, WebBrowser1.Document TAK JAKO IHTMLDocument2); field: = form. Položka (fieldName, '') tak jako IHTMLElement; -li field = pak žádný Výstup; -li field.tagName = 'INPUT' pak (pole tak jako IHTMLInputElement) .value: = newValue; -li field.tagName = 'SELECT' pak (pole tak jako IHTMLSelectElement): = newValue; -li field.tagName = 'TEXTAREA' pak (pole tak jako IHTMLTextAreaElement): = newValue; konec;
Odeslat webový formulář
Nakonec, když se manipuluje se všemi poli, pravděpodobně byste chtěli odeslat webový formulář z kódu Delphi. Zde je návod:
procedura WebFormSubmit ( konst dokument: IHTMLDocument2; konst formNumber: integer); var forma: IHTMLFormElement; pole: IHTMLElement; začít forma: = WebFormGet (formNumber, WebBrowser1.Document TAK JAKO IHTMLDocument2); form.submit; konec;
Ne všechny webové formuláře jsou „otevřené mysli“
Některé webové formuláře mohou hostit obrázek captcha, aby zabránily programové manipulaci s webovými stránkami.
Některé webové formuláře nemusí být odeslány, když kliknete na tlačítko Odeslat. Některé webové formuláře provádějí JavaScript nebo se provádí jiná procedura zpracovaná událostí "onsubmit" webového formuláře.
V každém případě lze webové stránky ovládat programově, jedinou otázkou je „jak daleko jste připraveni jít?“