Populasikan / Kirim Formulir Menggunakan 'TWebBrowser' di Delphi

Itu TWebBrowser Kontrol Delphi menyediakan akses ke fungsionalitas browser Web dari aplikasi Delphi Anda - untuk memungkinkan Anda membuat Web yang disesuaikan aplikasi browsing atau untuk menambahkan Internet, penelusuran file dan jaringan, melihat dokumen, dan kemampuan mengunduh data ke Internet aplikasi.

Formulir Web

SEBUAH formulir web atau a formulir di halaman web memungkinkan pengunjung halaman web untuk memasukkan data yang, dalam banyak kasus, dikirim ke server untuk diproses.

Bentuk web paling sederhana bisa terdiri dari satu elemen input (kontrol edit) dan a Kirimkan tombol. Sebagian besar mesin pencari web (seperti Google) menggunakan formulir web untuk memungkinkan Anda mencari di internet.

Bentuk web yang lebih kompleks akan mencakup daftar drop-down, kotak centang, tombol radio, dll. Formulir web sangat mirip formulir windows standar dengan input teks dan kontrol pemilihan.

Setiap formulir akan menyertakan tombol - tombol kirim - yang memberitahu browser untuk mengambil tindakan pada formulir web (biasanya untuk mengirimnya ke server web untuk diproses).

instagram viewer

Formulir Web yang Diprogram secara Pemrograman

Jika dalam aplikasi desktop Anda menggunakan TWebBrowser untuk menampilkan halaman web, Anda dapat secara terprogram mengontrol formulir web: memanipulasi, mengubah, mengisi, mengisi bidang isian formulir web dan mengirimkannya.

Berikut adalah kumpulan fungsi Delphi khusus yang dapat Anda gunakan untuk mendaftar semua formulir web pada halaman web, untuk mengambil elemen input, untuk mengisi bidang yang terprogram dan untuk akhirnya mengirimkan formulir.

Untuk lebih mudah mengikuti contoh, katakanlah ada kontrol TWebBrowser bernama "WebBrowser1" pada formulir Delphi (Windows standar).

Catatan: Anda harus menambahkan mshtml klausa kegunaan Anda untuk mengkompilasi metode yang tercantum di sini.

Daftar Nama Formulir Web, Dapatkan Formulir Web dengan Indeks

Halaman web biasanya hanya memiliki satu formulir web, tetapi beberapa halaman web mungkin memiliki lebih dari satu formulir web. Berikut cara mendapatkan nama semua formulir web di halaman web:

fungsi Nama WebForm (const dokumen: IHTMLDocument2): TStringList; var formulir: IHTMLElementCollection; formulir: IHTMLFormElement; idx: integer; mulai formulir: = dokumen. Formulir sebagai IHTMLElementCollection; hasil: = TStringList. Membuat; untuk idx: = 0 untuk -1 + forms.length melakukanmulai form: = forms.item (idx, 0) sebagai IHTMLFormElement; hasil. Tambahkan (form.name); akhir; akhir; 

Penggunaan sederhana untuk menampilkan daftar nama formulir web di TMemo:

var bentuk: TStringList; mulai formulir: = WebFormNames (WebBrowser1.Document SEBAGAI IHTMLDocument2); mencoba memo1.Lines. Tetapkan (formulir); akhirnya formulir. Gratis; akhir; akhir; 

Begini caranya dapatkan contoh formulir web dengan indeks. Untuk halaman formulir tunggal indeks akan menjadi 0 (nol).

fungsi WebFormapatkan (const formNumber: integer; const dokumen: IHTMLDocument2): IHTMLFormElement; var formulir: IHTMLElementCollection; mulai formulir: = dokumen. Formulir sebagai IHTMLElementCollection; hasil: = formulir. Item (formNumber, '') sebagai IHTMLFormElement. akhir; 

Setelah Anda memiliki formulir web, Anda bisa daftar semua elemen input HTML dengan namanya, kamu bisa dapatkan atau tetapkan nilai untuk masing-masing bidang, dan akhirnya, kamu bisa kirimkan formulir web.

Halaman web dapat meng-host formulir web dengan elemen input seperti kotak edit dan daftar drop-down yang dapat Anda kontrol dan manipulasi secara terprogram dari kode Delphi.

Setelah Anda memiliki formulir web, Anda bisa daftar semua elemen input HTML dengan namanya:

fungsi WebFormFields (const dokumen: IHTMLDocument2; const formName: tali): TStringList; var formulir: IHTMLFormElement; bidang: IHTMLElement; fName: string; idx: integer; mulai form: = WebFormGet (0, WebBrowser1.Document SEBAGAI IHTMLDocument2); hasil: = TStringList. Membuat; untuk idx: = 0 untuk -1 + form.length melakukan mulai bidang: = form.item (idx, '') sebagai IHTMLElement; jika bidang = nihil kemudian Terus; fName: = field.id; jika field.tagName = 'INPUT' kemudian fName: = (bidang sebagai IHTMLInputElement) .name; jika field.tagName = 'SELECT' kemudian fName: = (bidang sebagai IHTMLSelectElement) .name; jika field.tagName = 'TEXTAREA' kemudian fName: = (bidang sebagai IHTMLTextAreaElement) .name; hasil. Tambah (fName); akhir; akhir;

Ketika Anda tahu nama-nama bidang di formulir web, Anda bisa secara terprogram dapatkan nilainya untuk bidang HTML tunggal:

fungsi WebFormFieldValue ( const dokumen: IHTMLDocument2; const formNumber: integer; const fieldName: tali): tali; var formulir: IHTMLFormElement; bidang: IHTMLElement; mulai form: = WebFormGet (formNumber, WebBrowser1.Document SEBAGAI IHTMLDocument2); bidang: = formulir. Item (fieldName, '') sebagai IHTMLElement; jika bidang = nihil kemudian Keluar; jika field.tagName = 'INPUT' kemudian hasil: = (bidang sebagai IHTMLInputElement) .value; jika field.tagName = 'SELECT' kemudian hasil: = (bidang sebagai IHTMLSelectElement) .value; jika field.tagName = 'TEXTAREA' kemudian hasil: = (bidang sebagai IHTMLTextAreaElement) .value; akhir;

Contoh penggunaan untuk mendapatkan nilai bidang input bernama "URL":

const FIELDNAME = 'url'; var doc: IHTMLDocument2; nilai bidang: tali; mulai doc: = WebBrowser1.Document SEBAGAI IHTMLDocument2; fieldValue: = WebFormFieldValue (doc, 0, FIELDNAME); memo1.Lines. Tambahkan ('Field: "URL", value:' + fieldValue);akhir;

Seluruh ide tidak akan memiliki nilai jika Anda tidak dapat melakukannya isi elemen formulir web:

prosedur WebFormSetFieldValue (const dokumen: IHTMLDocument2; const formNumber: integer; const fieldName, newValue: tali); var formulir: IHTMLFormElement; bidang: IHTMLElement; mulai form: = WebFormGet (formNumber, WebBrowser1.Document SEBAGAI IHTMLDocument2); bidang: = formulir. Item (fieldName, '') sebagai IHTMLElement; jika bidang = nihil kemudian Keluar; jika field.tagName = 'INPUT' kemudian (bidang sebagai IHTMLInputElement) .value: = newValue; jika field.tagName = 'SELECT' kemudian (bidang sebagai IHTMLSelectElement): = newValue; jika field.tagName = 'TEXTAREA' kemudian (bidang sebagai IHTMLTextAreaElement): = newValue; akhir;

Kirim Formulir Web

Akhirnya, ketika semua bidang dimanipulasi, Anda mungkin ingin mengirimkan formulir web dari kode Delphi. Begini caranya:

prosedur WebFormSubmit ( const dokumen: IHTMLDocument2; const formNumber: integer); var formulir: IHTMLFormElement; bidang: IHTMLElement; mulai form: = WebFormGet (formNumber, WebBrowser1.Document SEBAGAI IHTMLDocument2); form.submit; akhir;

Tidak Semua Formulir Web "Berpikiran Terbuka"

Beberapa formulir web mungkin meng-host gambar captcha untuk mencegah halaman web dimanipulasi secara terprogram.

Beberapa formulir web mungkin tidak dikirimkan ketika Anda "mengklik tombol kirim." Beberapa formulir web menjalankan JavaScript atau beberapa prosedur lain dijalankan dijalankan oleh acara "onsubmit" dari formulir web.

Bagaimanapun, halaman web dapat dikontrol secara program, satu-satunya pertanyaan adalah "seberapa jauh Anda siap untuk melangkah?"

instagram story viewer