![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Заполняем форму Twebbrowseroм
Pimin © (2002-01-18 03:08:00)Уважаемые подскажите рабочий пример, как заполнить twebbrowser-ом простую формочку на странице скажем два поля и нажать на кнопочку, что бы передать эти значения скрипту. С дельфи никогда не сталкивался, а код этот очень нужен, буду очень благодарен.
Yuraz (2002-01-19 11:20:00) [1]Делаю вот так, не прокатывает:
NMHTTP1.InputFileMode := FALSE;
NMHTTP1.OutputFileMode := FALSE;
strPostData:="action=" + Edit5.Text + "&"+ "cat=" + Edit14.Text + "&"+ "names=" + Edit6.Text + "&"+ "sity=" + Edit7.Text + "&"+ "adres=" + Edit8.Text + "&"+ "text=" + Edit13.Text ;
NMHTTP1.Post(Edit2.Text, strPostData);
Yuraz (2002-01-19 10:56:00) [2]Люди, если не сложно, то же самое бы с NMHTTP кто написал...
eblade (2002-01-18 14:27:00) [3]"FIRSTNAME=" + Tedit1.text + "&...
Pimin (2002-01-18 14:09:00) [4]Нарыл где то такой вариант...пробывал работает...правда возник глупейший вопрос, но никак не могу сообразить в чем тут дело. Короче в strPostData мы указываем переменные которые передаются скрипту...а как сделать чтобы дынные прали из например Tedit? Если пишу strPostData := "FIRSTNAME=Tedit1.text&...то не получается передаются не значение из полей а просто текст Tedit1.text...может я что-то не так делаю?
procedure TForm1.SubmitPostForm;
var
strPostData: string;
Data: Pointer;
URL, Flags, TargetFrameName, PostData, Headers: OleVariant;
begin
strPostData := "FIRSTNAME=Hans&LASTNAME=Gulo&NOTE=thats+it";
PostData := VarArrayCreate([0, Length(strPostData) - 1], varByte);
Data := VarArrayLock(PostData);
try
Move(strPostData[1], Data^, Length(strPostData));
finally
VarArrayUnlock(PostData);
end;
URL := " http://127.0.0.1/cgi-bin/register.pl";
Flags := EmptyParam;
TargetFrameName := EmptyParam;
Headers := EmptyParam;
WebBrowser1.Navigate2(URL, Flags, TargetFrameName, PostData, Headers);
end;
nikkie (2002-01-18 13:59:00) [5]ИМХО на дельфи пишутся такие вещи гораздо проще, чем C++ (специфику билдера не знаю, могу сравнивать только с VC++). на дельфи QueryInterface и не нужен - все делается просто приведением типа (WebBrwoser.Document as IHTMLDocument2).
>Дельфи ... некоторые интерфейсы не поддерживает
вот это неправда. такое просто невозможно.
в остальном согласен с ctapik-net - надо в документе найти поля ввода, выставить им значения и нажать на submit.
ЗЫ задача имеет решение и без использования webbrowser, а просто с помощью отправки HTTP-запроса. так, имхо, разумней и легче
ctapik-net (2002-01-18 13:43:00) [6]Пример врядли найдешь, а вот подтолкнуть пожалуйста. Тебе надо привести WebBrowser.Document к интерфейсу IHTMLDocument2 Interface. Делается с помощью QueryInterface. Далее читаешь MSDN по IHTMLDocument2. Потом используя IHTMLDocument2 и IHTMLElementCollection Interface, IHTMLInputElement Interface, IHTMLSelectElement Interface, IHTMLTextAreaElement Interface сможешь поменять все что душе угодно. Только писать под Дельфи эту фигню замучиешся, т.к. он некоторые интерфейсы не поддерживает. ИМХО Builder - то что нужно.