![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Автоматизация и контроль над Internet Explorer [D6, Win2k]
Dimedrol © (2005-10-20 12:51:00)Коллеги, я использую TwebBrowser
для того чтобы работать с web-страничкой.
Мне понадобилась такая фунциональность,
чтобы я, например, мог узнать, на каком элементе формы
мы сейчас кликнули и записать туда что-нить.
Изменить значение какого-то поля на форме
можно вот так:
Webbrowser1.OleObject.Document.all.tags('Input').item('MyFieldName').value:='Privet vsem!';
А вот, чтобы узнать, в каком поле мы сейчас находимся,
тут, вроде, нужно расширить умолчабельную функциональность.
Как это описано здесь -
http://groups.google.com/group/borland.public.delphi.internet/browse_thread/thread/7cae29209cb15cce/94ce6db8007d0cc3?lnk=st&q=TWebBrowser+item+clicked&rnum=4&hl=en#94ce6db8007d0cc3
Чтобы это сделать нужно сделать, как мне стало известно,
необходимо сначала импортнуть библиотеку типов -
"MSHTML type library".
Описано тут - http://bdn.borland.com/article/0,1410,26574,00.html
Получиться здоровенный PAS-файл. (у меня - ок. 11мб)
Так вот, когда я пытаюсь его компильнуть, находит 4 ошибки,
как то - undeclared identifier 'fonts'и т.п.
Кто-то боролся с этим ?
Dimedrol (2005-10-21 17:33:00) [1]Да да... это я догадался.
Но, пока нет.
Я уже ваяю прогу. И все нормально.
Мне просто нужно было:
- узнать на каком элементе формы сделали DoubleClick;
- узнать значение HIDDEN элемента с похожим именем;
... т.к. в Value этого Hidden элемента я записал ID записи из базы,
к которой мне нужно выполнить запрос.
С "умолчабельным" MSHTML.pas - все срабатывает.
Спасибо! :-)
PS
Вообще я все это затеял, чтобы не возиться с Javascript.
Там мне нужно в зависимости от значения одного поля ввода,
которое моежно поменять на-лету, выдавать список значений на выбор
для другого поля.
Список может быть довольно большой - до 1000 элементов а иногда и больше.
Не хочу грузить HTML страницу такими данными.
И, кстати, если значение "флага" в первом поле воода поменяется,
мне придется перечитать значения всех этих 1000 элементов...
isasa (2005-10-21 15:18:00) [2]:)
Если понадобятся "свежие" разработки, операцию импорта придется выполнить :)
// PASTLWTR : 1.1
// File generated on 7/26/99 12:19:44 PM from Type Library described below.
// ************************************************************************ //
// Type Lib: C:\WINNT\System32\mshtml.tlb (1)
Dimedrol (2005-10-21 15:05:00) [3]Вааааааау!
ОГРОМНОЕ спасибо, isasa ©!
Ларчик-то просто октрывался!
Как обычно.
Какой же я тупой! :-))
Короче - заработало!
Там действительно уже есть интерфейс IHTMLDocument2!
isasa (2005-10-21 14:21:00) [4]А посмотреть
$Delphi$\Source\Internet\MSHTML.pas
evvcom (2005-10-21 13:59:00) [5]
> Получиться здоровенный PAS-файл. (у меня - ок. 11мб)
Странно. У меня D7 создала всего на 1 987 078 байт. IE 6.0.2800.
Dimedrol (2005-10-21 12:28:00) [6]чтобы получить - IHTMLDocument2
мне и надо импортнуть библиотеку типов - "MSHTML type library"!!!
programania (2005-10-20 21:55:00) [7]
ID: IHTMLDocument2;
IL: IHTMLElement;
...
form1.webBrowser1.Document.QueryInterface(IHTMLDocument2, ID);
if ID<>nil then begin
IL:=ID.Get_activeElement;
showMessage('Активный элемент '+IL.Get_outerHTML);
end;
//или по координатам мыши
function GetElementType(x, y: integer): string;
var ID: IHTMLDocument2;
begin
Result:='Unknown';
form1.webBrowser1.Document.QueryInterface(IHTMLDocument2, ID);
if ID<>nil then begin
IL:=ID.Get_activeElement;
s:=IL.Get_outerHTML;
IL:=ID.elementFromPoint(x,y);
if IL<>nil then
Result:=IL.Get_outerHTML;//Get_tagName;
end;
end;
Dimedrol (2005-10-20 18:03:00) [8]Мда... ясности не прибавило.
А адрес, - так этот форум подсвечивает "незнакомые" адреса.
Думаю что ты догадался скопировать всю строку и встваить в браузер вручную.
evvcom (2005-10-20 15:49:00) [9]
> http://bdn.borland.com/article/0,1410,26574,00.html
Что за адрес такой?
Вообще делается это примерно так. В модели объектов браузера ищется необходимый объект, который имеет нужное тебе свойство. В данном случае это что-то типа EVENT. Запрашивается указатель на интерфейс этого объекта и считывается свойство, которое в данном случае в свою очередь тоже является объектом.