Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.11.13;
Скачать: [xml.tar.bz2];

Вниз

Автоматизация и контроль над 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.038 c
2-1129884252
ZZZ
2005-10-21 12:44
2005.11.13
Программное изменение раскладки клавиатуры.


2-1129697638
syte_ser78
2005-10-19 08:53
2005.11.13
Сново о украинской букве І


4-1126693655
Still Swamp
2005-09-14 14:27
2005.11.13
Надо в CallBack API функции передать метод TObject


6-1123077503
DVladimir
2005-08-03 17:58
2005.11.13
Вопрос по idHTTP


3-1127905448
Dail
2005-09-28 15:04
2005.11.13
Как распечатать cxGrid???





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский