Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.13;
Скачать: CL | DM;

Вниз

Автоматизация и контроль над Internet Explorer   Найти похожие ветки 

 
Dimedrol ©   (2005-10-20 12:51) [0]

Коллеги, я использую 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" и т.п.

Кто-то боролся с этим ?


 
evvcom ©   (2005-10-20 15:49) [1]


> http://bdn.borland.com/article/0,1410,26574,00.html

Что за адрес такой?

Вообще делается это примерно так. В модели объектов браузера ищется необходимый объект, который имеет нужное тебе свойство. В данном случае это что-то типа EVENT. Запрашивается указатель на интерфейс этого объекта и считывается свойство, которое в данном случае в свою очередь тоже является объектом.


 
Dimedrol ©   (2005-10-20 18:03) [2]

Мда... ясности не прибавило.

А адрес,  - так этот форум подсвечивает "незнакомые" адреса.
Думаю что ты догадался скопировать всю строку и встваить в браузер вручную.


 
programania ©   (2005-10-20 21:55) [3]


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-21 12:28) [4]

чтобы получить - IHTMLDocument2
мне и надо импортнуть библиотеку типов -  "MSHTML type library"!!!


 
evvcom ©   (2005-10-21 13:59) [5]


> Получиться здоровенный PAS-файл. (у меня - ок. 11мб)

Странно. У меня D7 создала всего на 1 987 078 байт. IE 6.0.2800.


 
isasa ©   (2005-10-21 14:21) [6]

А посмотреть
$Delphi$\Source\Internet\MSHTML.pas


 
Dimedrol ©   (2005-10-21 15:05) [7]

Вааааааау!
ОГРОМНОЕ спасибо, isasa © !
Ларчик-то просто октрывался!
Как обычно.
Какой же я тупой! :-))

Короче - заработало!
Там действительно уже есть интерфейс IHTMLDocument2!


 
isasa ©   (2005-10-21 15:18) [8]

:)
Если понадобятся "свежие" разработки, операцию импорта придется выполнить :)

// 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 17:33) [9]

Да да... это я догадался.
Но, пока нет.
Я уже ваяю прогу. И все нормально.

Мне просто нужно было:
- узнать на каком элементе формы сделали DoubleClick;
- узнать значение HIDDEN элемента с похожим именем;

... т.к. в Value этого Hidden элемента я записал ID записи из базы,
к которой мне нужно выполнить запрос.
С "умолчабельным" MSHTML.pas - все срабатывает.

Спасибо! :-)

PS
Вообще я все это затеял, чтобы не возиться с Javascript.
Там мне нужно в зависимости от значения одного поля ввода,
которое моежно поменять на-лету, выдавать список значений на выбор
для другого поля.
Список может быть довольно большой - до 1000 элементов а иногда и больше.
Не хочу грузить HTML страницу такими данными.
И, кстати, если значение "флага" в первом поле воода поменяется,
мне придется перечитать значения всех этих 1000 элементов...



Страницы: 1 вся ветка

Текущий архив: 2005.11.13;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.041 c
3-1128417033
Ram
2005-10-04 13:10
2005.11.13
Как реализовать модификацию базы через запрос SQL?


14-1129805367
flipper
2005-10-20 14:49
2005.11.13
Чем отличается свич от хаба?


9-1119391313
SOL
2005-06-22 02:01
2005.11.13
delphiX


2-1129612756
Set2000
2005-10-18 09:19
2005.11.13
Вопрос по ComboBox


6-1122448409
ZSergey
2005-07-27 11:13
2005.11.13
ServerSocket и ClientSocket