Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу здесь за 20 тыс руб в месяц! alarforum@yandex.ru


Ответ
 
Опции темы
Старый 29.01.2015, 22:00   #1
bunukar
Пользователь
 
Регистрация: 26.04.2010
Сообщений: 40
По умолчанию Динамическая форма HTML

Приветствую, уважаемые форумчане!
Столкнулся с проблемой при заполнении динамической формы. На форме есть <SELECT1>, при выборе элемента появляется еще один <SELECT2> - она всегда разный и зависит от выбранного элемента <SELECT1>

Делаю таким способом:
Код:
A := WebBrowser1.OleObject.Document.getElementById('fld_category_id');
A.Value := '105';
WebBrowser1.OleObject.Document.GetElementByID('fld_category_id').Click;
Значение выбирается и подставляется, но клик не происходит и <SELECT2> не появляется.

Такой способ:

Код:
Doc:= WebBrowser1.OleObject.Document;
Sel:=Doc.forms.Item(0).item(7);
Sel.getElementsByTagName('option').item(4).selected := 'true';
Тот же результат - второй SELECT не появляется.

Вся работа делается в WebBrowser.

Помогите пожалуйста решить вопрос, как можно программно выбрать элемент SELECT1, чтобы появился SELECT2. Очень нужно.
bunukar вне форума Ответить с цитированием
Старый 29.01.2015, 22:15   #2
lomastr_
Форумчанин
 
Регистрация: 16.01.2015
Сообщений: 672
По умолчанию

А что такое fld_category_id? Где разметка?
lomastr_ вне форума Ответить с цитированием
Старый 29.01.2015, 22:15   #3
bunukar
Пользователь
 
Регистрация: 26.04.2010
Сообщений: 40
По умолчанию

На многих ресурсах пишут что это можно сделать через JS.
Нашел такой код:
Код:
<script language="javascript" type="text/javascript">
alert(document.getElementById('fromAccount').selectedIndex);
document.getElementById('fromAccount').selectedIndex = 1;
</script>
Подскажите, получиться ли? И как интегрировать такой код?
bunukar вне форума Ответить с цитированием
Старый 29.01.2015, 22:16   #4
bunukar
Пользователь
 
Регистрация: 26.04.2010
Сообщений: 40
По умолчанию

Цитата:
Сообщение от lomastr_ Посмотреть сообщение
А что такое fld_category_id? Где разметка?
Это ID Первого SELECT. Именно на него нужно нажать. Сама подстановка работает - визуально элемент выбирается. Но клика не происходит, соответственно второй SELECT не появляется.
bunukar вне форума Ответить с цитированием
Старый 29.01.2015, 22:17   #5
lomastr_
Форумчанин
 
Регистрация: 16.01.2015
Сообщений: 672
По умолчанию

click и selectedIndex = 1 не одно и тоже
lomastr_ вне форума Ответить с цитированием
Старый 29.01.2015, 22:21   #6
bunukar
Пользователь
 
Регистрация: 26.04.2010
Сообщений: 40
По умолчанию

Цитата:
Сообщение от lomastr_ Посмотреть сообщение
click и selectedIndex = 1 не одно и тоже
Подскажите, пожалуйста, как тогда можно это сделать?
bunukar вне форума Ответить с цитированием
Старый 29.01.2015, 22:35   #7
lomastr_
Форумчанин
 
Регистрация: 16.01.2015
Сообщений: 672
По умолчанию

надо для самого элемента селекта установить selectedIndex
lomastr_ вне форума Ответить с цитированием
Старый 29.01.2015, 22:43   #8
bunukar
Пользователь
 
Регистрация: 26.04.2010
Сообщений: 40
По умолчанию

Цитата:
Сообщение от lomastr_ Посмотреть сообщение
надо для самого элемента селекта установить selectedIndex
Как это сделать?

Код:
Doc:= WebBrowser1.OleObject.Document;
Sel:=Doc.forms.Item(0).item(7);
Sel.getElementsByTagName('option').item(4).selected := 'true';
Вот так я обращаюсь к нужному элементу селекта.

P.S.

Код:
A := WebBrowser1.OleObject.Document.getElementById('fld_category_id').selectedIndex;
WebBrowser1.OleObject.Document.getElementById('fld_category_id').selectedIndex:=4;
Такое тоже работает и элемент выбирается, то SELECT2 не появляется (ввиду отсутствия клика)

Последний раз редактировалось bunukar; 29.01.2015 в 22:51.
bunukar вне форума Ответить с цитированием
Старый 29.01.2015, 22:49   #9
lomastr_
Форумчанин
 
Регистрация: 16.01.2015
Сообщений: 672
По умолчанию

это елемент опции элемента селекта, а надо сам элемент селкт
типа
WebBrowser1.OleObject.Document.getE lementById('fld_category_id').selec tedIndex = <нужный>;
единственное не помню обязательно ли его приводить к IHTMLSelectElement (вроде так правильно) или нет
lomastr_ вне форума Ответить с цитированием
Старый 29.01.2015, 22:54   #10
bunukar
Пользователь
 
Регистрация: 26.04.2010
Сообщений: 40
По умолчанию

Цитата:
Сообщение от lomastr_ Посмотреть сообщение
это елемент опции элемента селекта, а надо сам элемент селкт
типа
WebBrowser1.OleObject.Document.getE lementById('fld_category_id').selec tedIndex = <нужный>;
единственное не помню обязательно ли его приводить к IHTMLSelectElement (вроде так правильно) или нет
Чуть выше описал, не то что мне нужно.
Может быть как то внедрить JavaScript и им сделать клик?
bunukar вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
HTML-форма, компоненты. manula PHP 3 19.02.2013 11:07
Форма HTML Stens HTML и CSS 1 19.12.2012 00:19
Динамическая форма с радио и селект Benderbej JavaScript, Ajax 0 28.08.2010 18:07
динамическая форма DmitryKh Microsoft Office Excel 1 12.04.2010 10:28
Форма в html Ruska882009 HTML и CSS 2 27.05.2009 19:30


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Здесь нужно купить рекламу за 7 тыс руб в месяц! )
пишите сюда - alarforum@yandex.ru
ИКС 840