Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> На html странице есть <select> что то типа ListBox, onchange="onCategoryChange(this.value) 
:(
    Опции темы
mr_smit
Дата 10.3.2008, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 27.2.2008
Где: Самара

Репутация: 3
Всего: 4



Кто сможет дочитать до конца, тот просто герой.

На html странице есть такой кусок кода:

Код

<tr>
    <td>Категория:</td>
    <td><select class="rating" name="catlist[]" id="category" onchange="onCategoryChange(this.value)" style="width: 220px; height: 73px;" multiple="multiple"><option value="0"></option><option style="" value="9">Новости</option><option style="" value="10">Программы</option><option style="" value="2">Игры</option><option style="" value="11">E-Book</option><option style="" value="3">Фильмы</option><option style="" value="6">Скрипты</option><option style="" value="4">Музыка</option><option style="" value="8">Шаблоны</option><option style="" value="7">Графика</option><option style="" value="14">Обучение</option><option style="" value="12">Для Мобил</option><option style="" value="15">Приколы</option></select></td>

  </tr>


выглядит это так:

user posted image

Вопрос: как КЛИКНУТЬ на одном из пунктов? Что бы получилось вот так

user posted image

В моей программе присутствует TWebBrowser куда загружается эта страница.

Сделал так:
Код

function FillForm(WebBrowser: TWebBrowser; FieldName: string; Value: string): Boolean;
  var
    i, j: Integer;
    FormItem: Variant;
  begin
    Result := False;
    //нет форм в документе 
  if WebBrowser.OleObject.Document.all.tags('FORM').Length = 0 then
    begin
      Exit;
    end;
    //число форм в документе  
  for I := 0 to WebBrowser.OleObject.Document.forms.Length - 1 do
    begin
      FormItem := WebBrowser.OleObject.Document.forms.Item(I);
      for j := 0 to FormItem.Length - 1 do
      begin
        try
          //когда нужное поле найдено, заполняем его 
        if FormItem.Item(j).Name = FieldName then
          begin
            FormItem.Item(j).Value := Value;
            Result := True;
          end;
        except
          Exit;
        end;
      end;
    end;
  end;


т.е. ищем, например:
Код

<form>
<input name="title" type="text">
</form>


Текстовые поля заполняются нормально:
Код

if not FillForm(WebBrowser1, 'title', 'название') then
      label3.Caption:='title не найден.';


А этот "ListBox" выделяется
Код

if not FillForm(WebBrowser1, 'catlist[]', '2') then
      label3.Caption:='catlist[] не найден.';


Но клика по нему не происходит. Из html кода:
Код

onchange="onCategoryChange(this.value)"


Т.е. onchange не срабатывает. И когда переходишь на следующую страницу браузер не видит что ты выделил и оставляет это поле пустым.

Что можно сделать?
PM MAIL   Вверх
ilBEastli
Дата 10.3.2008, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 18.9.2006

Репутация: нет
Всего: 2



Попробуй после
Код

FormItem.Item(j).Value := Value;

написать
Код

FormItem.Item(j).OnChange

PM MAIL ICQ   Вверх
mr_smit
Дата 10.3.2008, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 27.2.2008
Где: Самара

Репутация: 3
Всего: 4



user posted image

Не работает.

Чуть чуть изменил:
Код

FormItem.Item(j).OnChange:='onCategoryChange(this.value)';

Тоже не работает.

Попробовал ещё вот так:

Код

var
ovElements: OleVariant;
i: Integer;

...........

ovElements := WebBrowser1.OleObject.Document.forms.item(0).elements;
  for i := 0 to (ovElements.Length - 1) do
    if (ovElements.item(i).tagName = 'select') and
      (ovElements.item(i).name = 'catlist[]') and
      (ovElements.item(i).Value = '2') then
      ovElements.item(i).Click;


Тоже не работает.

Главное пункт выделяется, а браузер не видит. Мышкой кликаешь по выделенному пункту, всё нормально - видит. Что ж делать то с этим onchange="onCategoryChange(this.value)"

Это сообщение отредактировал(а) mr_smit - 10.3.2008, 22:09
PM MAIL   Вверх
Dron_kss
Дата 19.3.2008, 03:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 19.3.2008

Репутация: нет
Всего: нет



Сам пишу подобную прогу и мой тебе совет не через браузер работать а через idhttp. Будет быстрее и легче прога. А вот пример как послать твою категорию 
Код

ss.add('catlist[]=2');

PM MAIL   Вверх
DmitryHT
Дата 19.3.2008, 03:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 31.8.2007

Репутация: нет
Всего: нет



может на странице несколько форм... нужно проверять по всем

Код

  for i:=0 to (WebBrowser.OleObject.Document.forms.Length - 1) do
  Begin


либо юзай инди 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0464 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.