Най- TWebBrowser Контролът на Delphi осигурява достъп до функционалността на уеб браузъра от вашите приложения на Delphi - за да ви позволи да създадете персонализиран уеб приложение за сърфиране или за добавяне на интернет, файлове и мрежово сърфиране, преглед на документи и възможности за изтегляне на данни към вашия приложения.
Уеб форми
А уеб форма или а форма на уеб страница позволява на посетител на уеб страница да въведе данни, които в повечето случаи се изпращат на сървъра за обработка.
Най-простият уеб формуляр може да се състои от един входен елемент (редактиране на контрола) и a Изпращане бутон. Повечето уеб търсачки (като Google) използват такава уеб форма, за да ви позволят да търсите в интернет.
По-сложните уеб формуляри ще включват падащи списъци, квадратчета, радио бутони и т.н. Уеб формуляр е много като стандартен прозорец с контроли за въвеждане и избор на текст.
Всеки формуляр включва бутон - бутон за изпращане - който казва на браузъра да предприеме действия върху уеб формата (обикновено да го изпрати на уеб сървър за обработка).
Програмно попълване на уеб форми
Ако в настолното си приложение използвате TWebBrowser за показване на уеб страници, можете програмно да контролирате уеб формуляри: манипулирайте, променяйте, попълвайте, попълвайте полета на уеб формуляр и го изпращайте.
Ето колекция от персонализирани функции на Delphi, които можете да използвате, за да изброите всички уеб форми на уеб страница, да изтеглите входни елементи, да програмирате полета и накрая да изпратите формуляра.
За да следвате по-лесно примерите, нека да кажем, че има TWebBrowser контрол, наречен "WebBrowser1" във формуляра Delphi (стандартен Windows).
Забележка: трябва да добавите MSHTML към клаузата за вашите употреби, за да компилирате изброените тук методи.
Списък на имена на уеб формуляри, Вземете уеб формуляр по индекс
Уебстраницата в повечето случаи би имала само една уеб форма, но някои уеб страници може да имат повече от една уеб форма. Ето как да намерите имената на всички уеб формуляри на уеб страница:
функция WebFormNames (конст документ: IHTMLDocument2): TStringList; Var форми: IHTMLElementCollection; форма: IHTMLFormElement; idx: цяло число; започвам форми: = документ. Формира се като IHTMLElementCollection; резултат: = TStringList. Създаване; за idx: = 0 да се -1 + форми.дължина правязапочвам форма: = form.item (idx, 0) като IHTMLFormElement; доведе. Добавяне (име на формата); край; край;
Просто използване за показване на списъка с имена на уеб формуляри в TMemo:
Var форми: TStringList; започвам форми: = WebFormNames (WebBrowser1.Document КАТО IHTMLDocument2); опитвам memo1.Lines. Присвояване (формуляри); накрая форми. Безплатно; край; край;
Ето как да го направите вземете екземпляра на уеб формуляр по индекс. За една страница с формуляр индексът ще бъде 0 (нула).
функция WebFormGet (конст formNumber: цяло число; конст документ: IHTMLDocument2): IHTMLFormElement; Var форми: IHTMLElementCollection; започвам форми: = документ. Форми като IHTMLElementCollection; резултат: = форми. Елемент (формаNumber, '') като IHTMLFormElement. край;
След като имате уеб формата, можете избройте всички елементи за въвеждане на HTML по име, можеш Вземете или задайте стойността за всяко от полетатаи накрая можете изпратете уеб формата.
Уеб страниците могат да съдържат уеб формуляри с елементи за въвеждане като полета за редактиране и падащи списъци, които можете да контролирате и манипулирате програмно от кода на Delphi.
След като имате уеб формата, можете избройте всички елементи за въвеждане на HTML по име:
функция WebFormFields (конст документ: IHTMLDocument2; конст formName: низ): TStringList; Var форма: IHTMLFormElement; поле: IHTMLElement; fName: низ; idx: цяло число; започвам форма: = WebFormGet (0, WebBrowser1.Document КАТО IHTMLDocument2); резултат: = TStringList. Създаване; за idx: = 0 да се -1 + форма.дължина правя start field: = form.item (idx, '') като IHTMLElement; ако поле = нула тогава Продължи; fName: = field.id; ако field.tagName = 'INPUT' тогава fName: = (поле като IHTMLInputElement) .name; ако field.tagName = 'ИЗБРАНИ' тогава fName: = (поле като IHTMLSelectElement) .name; ако field.tagName = 'TEXTAREA' тогава fName: = (поле като IHTMLTextAreaElement) .name; доведе. Добавяне (fName); край; край;
Когато знаете имената на полетата в уеб формуляр, можете програмно вземете стойността за едно HTML поле:
функция WebFormFieldValue ( конст документ: IHTMLDocument2; конст formNumber: цяло число; конст име на полето: низ): низ; Var форма: IHTMLFormElement; поле: IHTMLElement; започвам форма: = WebFormGet (formNumber, WebBrowser1.Document КАТО IHTMLDocument2); поле: = форма. Item (fieldName, '') като IHTMLElement; ако поле = нула тогава Exit; ако field.tagName = 'INPUT' тогава резултат: = (поле като IHTMLInputElement) .value; ако field.tagName = 'ИЗБРАНИ' тогава резултат: = (поле като IHTMLSelectElement) .value; ако field.tagName = 'TEXTAREA' тогава резултат: = (поле като IHTMLTextAreaElement) .value; край;
Пример за използване за получаване на стойността на поле за въвеждане, наречено "URL":
конст FIELDNAME = 'URL адрес'; Var doc: IHTMLDocument2; fieldValue: низ; започвам doc: = WebBrowser1.Document КАТО IHTMLDocument2; fieldValue: = WebFormFieldValue (doc, 0, FIELDNAME); memo1.Lines. Add ('Поле: "URL", стойност:' + fieldValue);край;
Цялата идея нямаше да има стойност, ако не бихте могли да го направите попълнете елементи на уеб формуляр:
процедура WebFormSetFieldValue (конст документ: IHTMLDocument2; конст formNumber: цяло число; конст fieldName, newValue: низ); Var форма: IHTMLFormElement; поле: IHTMLElement; започвам форма: = WebFormGet (formNumber, WebBrowser1.Document КАТО IHTMLDocument2); поле: = форма. Елемент (fieldName, '') като IHTMLElement; ако поле = нула тогава Exit; ако field.tagName = 'INPUT' тогава (поле като IHTMLInputElement) .value: = newValue; ако field.tagName = 'ИЗБРАНИ' тогава (поле като IHTMLSelectElement): = newValue; ако field.tagName = 'TEXTAREA' тогава (поле като IHTMLTextAreaElement): = newValue; край;
Изпратете уеб формуляр
И накрая, когато всички полета са манипулирани, вероятно бихте искали да изпратите уеб формата от кода на Delphi. Ето как:
процедура WebFormSubmit ( конст документ: IHTMLDocument2; конст formNumber: цяло число); Var форма: IHTMLFormElement; поле: IHTMLElement; започвам форма: = WebFormGet (formNumber, WebBrowser1.Document КАТО IHTMLDocument2); form.submit; край;
Не всички уеб форми са "отворени"
Някои уеб форми могат да съдържат изображение на captcha, за да се предотврати програмното манипулиране на уеб страниците.
Възможно е някои уеб формуляри да не бъдат изпращани, когато „щракнете върху бутона за изпращане“. Някои уеб форми изпълняват JavaScript или някаква друга процедура се изпълнява, обработвана от събитието "onsubmit" на уеб формата.
Във всеки случай уеб страниците могат да се контролират програмно, единственият въпрос е "докъде сте подготвени да отидете?"