Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Технологии
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 08.04.2013, 16:37
razumsap razumsap вне форума
Прохожий
 
Регистрация: 08.04.2013
Сообщения: 2
Версия Delphi: 2007
Репутация: 10
По умолчанию Выбор элемента ListBox

Добрый день. Пытаюсь заполнить веб-форму у котрой есть ListBox. Его значение я могу заполнить, но мне еще надо симитировать его выбор мышкой, чтоб после среагировал ява-скрипт.
Код:
var 
  Doc: OleVariant;
v,el   : OleVariant;
...
begin
  Doc := WebBrowser1.OleObject.document;
  el := doc.getElementById('fld_category_id');
  el.getElementsByTagName('option').item(4).selected := 'true';
  el.FireEvent('onchange', v);
end;
Код написал, но скрипт не запускается, видать не отрабатывает событие "onchange". Помогите советом, как сделать?
Ответить с цитированием
  #2  
Старый 08.04.2013, 19:13
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Цитата:
Сообщение от razumsap
...надо симитировать его выбор мышкой, чтоб после среагировал ява-скрипт...
Можно так, хоть и стрёмно, но всё же
Код:
SetCursorPos(x, y); // Установка позиции курсора  x и y 

// клик по левой кнопке мышки (ЛКМ)
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); 
mouse_event(MOUSEEVENTF_LEFTUP,   0, 0, 0, 0);  

 // клик по правой кнопке мышки (ПКМ)
mouse_event(MOUSEEVENTF_RIGHTDOWN,0, 0, 0, 0);
mouse_event(MOUSEEVENTF_RIGHTUP,  0, 0, 0, 0);

// двойной щелчок по ЛКМ
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); 
mouse_event(MOUSEEVENTF_LEFTUP,   0, 0, 0, 0);
GetDoubleClickTime;
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP,   0, 0, 0, 0);
Требуется установить курсор над нужным контролом и эмульнуть клик по нему.

Ещё можно послать сообщение, но для этого у адресата должен быть Handle, иначе послание не дойдёт
Код:
// двойной щелчок по ЛКМ
SendMessage(Handle,  WM_LBUTTONDBLCLK, 10, 10)
Хотя наверное есть в природе правильный способ, но я такого не знаю.
Ответить с цитированием
  #3  
Старый 10.04.2013, 08:56
razumsap razumsap вне форума
Прохожий
 
Регистрация: 08.04.2013
Сообщения: 2
Версия Delphi: 2007
Репутация: 10
По умолчанию

жаль, но не то что надо
Ответить с цитированием
  #4  
Старый 10.04.2013, 09:18
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

выложи минимальный проект: html-ку со списком и скриптом, программку с загрузкой этой странички. попробую поразбираться.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #5  
Старый 11.04.2013, 10:53
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

проще некуда:

Код:
var
  doc: IHTMLDocument3;
begin
  doc:=WebBrowser1.Document as IHTMLDocument3;
  (doc.getElementById('select_id') as IHTMLSelectElement).selectedIndex:=UpDown1.Position;
  (doc.getElementById('select_id') as IHTMLElement).click;
end;

http://zalil.ru/34428576
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:24.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter