Manipola i moduli Web usando TWebBrowser

Il controllo Delphi TWebBrowser consente di accedere alla funzionalità del browser Web dalle app Delphi per consentire all'utente di creare un'applicazione di navigazione Web personalizzata o di aggiungere alle applicazioni Internet, file e funzionalità di navigazione di rete, visualizzazione di documenti e download di dati.

Moduli Web

UN modulo web o a modulo su una pagina web consente a un visitatore di una pagina Web di inserire dati che, nella maggior parte dei casi, vengono inviati al server per l'elaborazione.

Il modulo Web più semplice potrebbe essere costituito da uno elemento di input (modifica controllo) e a Invia pulsante. La maggior parte dei motori di ricerca Web (come Google) utilizza un modulo Web di questo tipo per consentire la ricerca in Internet.

I moduli Web più complessi includono elenchi a discesa, caselle di controllo, pulsanti di opzione, ecc. Un modulo Web è molto simile a un modulo Windows standard con input di testo e controlli di selezione.

Ogni modulo includerebbe un pulsante - un pulsante di invio - che indica al browser di agire sul modulo Web (in genere per inviarlo a un server Web per l'elaborazione).

Compilazione di moduli Web a livello di programmazione

Se nell'applicazione desktop si utilizza TWebBrowser per visualizzare le pagine Web, è possibile controllare a livello di codice i moduli Web: manipolare, modificare, compilare, popolare i campi di un modulo Web e inviarlo.

Ecco una raccolta di funzioni personalizzate di Delphi che è possibile utilizzare per elencare tutti i moduli Web in una pagina Web, recuperare elementi di input, popolare i campi a livello di codice e infine inviare il modulo.

Per seguire più facilmente gli esempi, supponiamo che esista un controllo TWebBrowser denominato "WebBrowser1" in un modulo Delphi (Windows standard).

Nota: è necessario aggiungere MSHTML alla tua clausola usi al fine di compilare i metodi elencati qui.

Elenca i nomi dei moduli Web, ottieni un modulo Web per indice

Nella maggior parte dei casi, una pagina Web ha un solo modulo Web, ma alcune pagine Web potrebbero avere più di un modulo Web. Ecco come ottenere i nomi di tutti i moduli Web su una pagina Web:

 funzione WebFormNames (const documento: IHTMLDocument2): TStringList; var   moduli: IHTMLElementCollection; modulo: IHTMLFormElement; idx: intero; inizio   form: = document.Forms come IHTMLElementCollection; risultato: = TStringList.Create;   per idx: = 0 per -1 + forme.lunghezza fare   inizio     form: = forms.item (idx, 0) come IHTMLFormElement; risultato.Add (form.name);   fine; fine; 

Un semplice utilizzo per visualizzare l'elenco dei nomi dei moduli Web in un TMemo:

 var   forme: TStringList; inizio   form: = WebFormNames (WebBrowser1.Document COME IHTMLDocument2);   provare     memo1.Lines.Assign (moduli);   infine     forms.Free;   fine; fine; 

Ecco come ottenere l'istanza di un modulo Web per indice. Per una pagina a modulo singolo l'indice sarebbe 0 (zero).

 funzione WebFormGet (const formNumber: numero intero; const documento: IHTMLDocument2): IHTMLFormElement; var   moduli: IHTMLElementCollection; inizio   form: = document.Forms come IHTMLElementCollection; risultato: = forms.Item (formNumber, ") come IHTMLFormElement fine;