TWebBrowser Delphi kontrolü, özelleştirilmiş bir Web oluşturmanıza izin vermek için Delphi uygulamalarınızdan Web tarayıcısı işlevlerine erişim sağlar tarama uygulaması veya İnternet, dosya ve ağ taraması, belge görüntüleme ve veri indirme özellikleri eklemek için uygulamalar.
Web Formları
bir internet formu veya bir web sayfasındaki form bir web sayfası ziyaretçisinin çoğu durumda işlenmek üzere sunucuya gönderilen verileri girmesine olanak tanır.
En basit web formu birinden oluşabilir giriş elemanı (düzenleme kontrolü) ve bir Sunmak buton. Çoğu web arama motoru (Google gibi), İnternet'te arama yapmanıza olanak sağlamak için böyle bir web formu kullanır.
Daha karmaşık web formları, açılır listeler, onay kutuları, radyo düğmeleri vb. Web formu, metin girişi ve seçim denetimleri olan standart bir windows formuna çok benzer.
Her form, tarayıcıya web formunda işlem yapmasını söyleyen bir düğme (bir gönderme düğmesi) içerir (genellikle işlem için bir web sunucusuna göndermesini sağlar).
Web Formlarını Programlı Olarak Doldurma
Masaüstü uygulamanızda web sayfalarını görüntülemek için TWebBrowser kullanıyorsanız, web formlarını program aracılığıyla denetleyebilirsiniz: bir web formunun alanlarını değiştirme, değiştirme, doldurma, doldurma ve gönderme.
İşte bir web sayfasındaki tüm web formlarını listelemek, giriş öğelerini almak, alanları programlı olarak doldurmak ve son olarak formu göndermek için kullanabileceğiniz özel Delphi işlevleri koleksiyonu.
Örnekleri daha kolay takip etmek için, bir Delphi (standart Windows) formunda "WebBrowser1" adlı bir TWebBrowser denetimi olduğunu varsayalım.
Not: eklemelisiniz mshtml burada listelenen yöntemleri derlemek için kullanır.
Web Formu Adlarını Listele, Dizine Göre Web Formu Alma
Bir web sayfasının çoğu durumda yalnızca bir web formu vardır, ancak bazı web sayfalarının birden fazla web formu olabilir. Bir web sayfasındaki tüm web formlarının adlarını şu şekilde alabilirsiniz:
fonksiyon WebFormNames (const belge: IHTMLDocument2): TStringList; var formlar: IHTMLElementCollection; form: IHTMLFormElement; idx: tam sayı; başla formlar: = belge. IHTMLElementCollection olarak formlar; sonuç: = TStringList. Oluşturmak; için idx: = 0 için -1 + form. Uzunluk yapmakbaşla form: = forms.item (idx, 0), IHTMLFormElement olarak; sonuç. Ekle (form.name); son; son;
Bir TMemo'da web formu adlarının listesini görüntülemek için basit bir kullanım:
var formlar: TStringList; başla formlar: = WebFormNames (WebBrowser1.Document GİBİ Ihtmldocument2); Deneyin memo1.Lines. Atama (formlar); en sonunda formlar. Bedava; son; son;
İşte nasıl web formunun örneğini dizine göre al. Tek bir form sayfası için dizin 0 (sıfır) olur.
fonksiyon WebFormGet (const formNumber: integer; const belge: IHTMLDocument2): IHTMLFormElement; var formlar: IHTMLElementCollection; başla formlar: = belge. Formlar gibi IHTMLElementCollection; sonuç: = formlar. Öğe (formNumber, '') gibi IHTMLFormElement. son;
Web formunu aldıktan sonra, tüm HTML giriş öğelerini adlarına göre listele, yapabilirsin alanların her biri için değer alma veya ayarlamave son olarak, web formunu gönder.
Web sayfaları, Delphi kodundan programsal olarak denetleyip değiştirebileceğiniz düzenleme kutuları ve açılır listeler gibi giriş öğeleri içeren web formlarını barındırabilir.
Web formunu aldıktan sonra, tüm HTML giriş öğelerini adlarına göre listele:
fonksiyon WebFormFields (const belge: IHTMLDocument2; const FormName: sicim): TStringList; var form: IHTMLFormElement; alan: IHTMLElement; fName: string; idx: tam sayı; başla form: = WebFormGet (0, WebBrowser1.Document GİBİ Ihtmldocument2); sonuç: = TStringList. Oluşturmak; için idx: = 0 için -1 + form. Uzunluk yapmak başlangıç alanı: = form.item (idx, '') IHTMLElement olarak; Eğer alan = o zamana kadar Devam et; fAd: = field.id; Eğer field.tagName = 'INPUT' sonra fAd: = (alan gibi IHTMLInputElement) .name; Eğer field.tagName = 'SEÇ' sonra fAd: = (alan gibi IHTMLSelectElement) .name; Eğer field.tagName = 'TEXTAREA' sonra fAd: = (alan gibi IHTMLTextAreaElement) .name; sonuç. Ekle (fName); son; son;
Bir web formundaki alanların adlarını bildiğinizde, programlı olarak değeri elde et tek bir HTML alanı için:
fonksiyon WebFormFieldValue ( const belge: IHTMLDocument2; const formNumber: integer; const alan adı: sicim): sicim; var form: IHTMLFormElement; alan: IHTMLElement; başla form: = WebFormGet (formNumber, WebBrowser1.Document GİBİ Ihtmldocument2); alan: = form. Öğe (fieldName, '') IHTMLElement olarak; Eğer alan = o zamana kadar Çıkış; Eğer field.tagName = 'INPUT' sonra sonuç: = (alan gibi IHTMLInputElement) .value; Eğer field.tagName = 'SEÇ' sonra sonuç: = (alan gibi IHTMLSelectElement) .value; Eğer field.tagName = 'TEXTAREA' sonra sonuç: = (alan gibi IHTMLTextAreaElement) .value; son;
"URL" adlı bir giriş alanının değerini almak için kullanım örneği:
const FIELDNAME = 'url'; var doc: IHTMLDocument2; alan değeri: sicim; başla doc: = WebBrowser1.Document GİBİ IHTMLDocument2; fieldValue: = WebFormFieldValue (doc, 0, FIELDNAME); memo1.Lines. Ekle ('Alan: "URL", değer:' + fieldValue);son;
Yapamazsan tüm fikrin değeri olmazdı web form öğelerini doldurma:
prosedür WebFormSetFieldValue (const belge: IHTMLDocument2; const formNumber: integer; const fieldName, newValue: sicim); var form: IHTMLFormElement; alan: IHTMLElement; başla form: = WebFormGet (formNumber, WebBrowser1.Document GİBİ Ihtmldocument2); alan: = form. Öğe (fieldName, '') gibi IHTMLElement; Eğer alan = o zamana kadar Çıkış; Eğer field.tagName = 'INPUT' sonra (alan gibi IHTMLInputElement) .value: = newValue; Eğer field.tagName = 'SEÇ' sonra (alan gibi IHTMLSelectElement): = newValue; Eğer field.tagName = 'TEXTAREA' sonra (alan gibi IHTMLTextAreaElement): = newValue; son;
Web Formu Gönder
Son olarak, tüm alanlar manipüle edildiğinde, muhtemelen web formunu Delphi kodundan göndermek istersiniz. Bunu nasıl yapacağınız aşağıda açıklanmıştır:
WebFormSubmit ( const belge: IHTMLDocument2; const formNumber: integer); var form: IHTMLFormElement; alan: IHTMLElement; başla form: = WebFormGet (formNumber, WebBrowser1.Document GİBİ Ihtmldocument2); form.submit; son;
Tüm Web Formları "Açık Görüşlü" Değildir
Bazı web formları, web sayfalarının programlı olarak değiştirilmesini önlemek için bir captcha görüntüsü barındırabilir.
"Gönder düğmesini tıkladığınızda" bazı web formları gönderilmeyebilir. Bazı web formları JavaScript yürütür veya başka bir yordam web formunun "onsubmit" olayı tarafından yürütülür.
Her durumda, web sayfaları programlı olarak kontrol edilebilir, tek soru "ne kadar ileri gitmeye hazırsınız?"