Модераторы: MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> EmbeddedWB не работает без Parent-контрола 
V
    Опции темы
kami
Дата 12.10.2012, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

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



Добрый день, дамы и господа!
Вопрос в следующем:
есть html-файл с java-скриптами. Загружаю его в stringlist, меняю кое-какие параметры и загружаю этот stringlist в EmbeddedWB. Скрипты на страничке запрашивают информацию из интернета, что-то там делают и выводят итог на эту же локальную страницу. Результат я забираю в свою программу.

В зависимости от ситуации, мне далеко не всегда необходимо показывать пользователю окно с браузером. Но!
Если я пытаюсь не назначать EmbeddedWB.Parent, то событие OnDocumentComplete не отрабатывает. Фокус с
Код

if "итоговые результаты не выведены на страницу" then
  Application.ProcessMessages;

тоже не работает, скрипты просто не отрабатывают.
Если же назначить EmbeddedWB.Parent = TForm.Create(...), но саму форму не показать, то ситуация аналогичная - "не взлетает".
Я готов смириться с тем, чтобы окно было видимым, но последним в Z-order. Но, если окно, на которое динамически брошен EmbeddedWB, показывать, то оно почему-то становится поверх всех окон приложения и никакие SendToBack для него не отрабатывают. 

С OLE-контролами раньше не работал, пытался просмотреть исходники - ничего не понял, как вызываются обработчики событий.

Прошу помощи в разрешении этой проблемы. В идеале - всё должно работать не только в vcl-потоке, но и в дополнительных. В доп.потоке, естественно, без показа окна браузера, только "забор" результатов со страницы.

P.S. Не использовать ява-скрипты, реализовав их логику в программе не предлагать smile
PM MAIL WWW   Вверх
MetalFan
Дата 12.10.2012, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

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



kami, а если при создании EmbeddedWB отдать в конструктор эту самую форму? помимо установки Parent'а... а еще проверить visible


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
kami
Дата 12.10.2012, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

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



MetalFan, Отдаю, и как Owner и как Parent. Иначе не арбайтен.

Проблема в том, что мне нужна работа с EmbeddedWB.Parent = nil, или хотя бы OwnerForm.Visible = False. На совсем крайний случай - OwnerForm.SendToBack.
А не получается ни одно из действий.


Это сообщение отредактировал(а) kami - 12.10.2012, 14:02
PM MAIL WWW   Вверх
kami
Дата 12.10.2012, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

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



Я бы с удовольствием обошелся бы вообще без веб-браузера, заменив его на что-нибудь.
Но не знаю, как заставить это "что-нибудь" в скрытом режиме:
- загрузить html-код из буфера
- выполнить ява-скрипты
- (необязательно) просигнализировать о выполнении.
- выдать получившуюся информацию (что-то типа getElementByID('...').InnerText)
PM MAIL WWW   Вверх
MetalFan
Дата 12.10.2012, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

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



kami, может сбацаешь тестовый проект, на которым проблема сразу видна? я б глянул на досуге.


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
kami
Дата 13.10.2012, 00:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

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



MetalFan, буду очень благодарен.

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  123.zip 6,70 Kb
PM MAIL WWW   Вверх
MetalFan
Дата 13.10.2012, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

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



kami, да, действительно, форма, на которой создается WB  должна быть видима в момент загрузки... Но...
Делаем так:
Код

...
constructor TRouteComponent.Create(ParentControl: TWinControl);
begin
  FParentSelfCreated := not Assigned(ParentControl);
  if FParentSelfCreated then
    begin
      FParentControl := TForm.Create(nil);
      with TForm(FParentControl) do
      begin
        BorderStyle := bsNone;
        Width := 0;
        Height := 0;
        Left := -10;
        Top := -10;
        Show;
      end;
      FParentSelfCreated := True;
    end
...

И форма типа "видима" и овцы целы)
Только я бы "таймаут" бы увеличил... не у всех быстрый инет и компы, чтобы за 6 сек отработало... секунд хотябы 15-20 было бы наверное достаточно.

Это сообщение отредактировал(а) MetalFan - 13.10.2012, 10:51


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Чучмек
Дата 13.10.2012, 13:45 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


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

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



Код

Sendmessage(WB.Handle,WM_ACTIVATE,0,0); 



--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
MetalFan
Дата 13.10.2012, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

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



Чучмек, хм) ларчик просто открывался. а почему это интересно влияет?


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
kami
Дата 13.10.2012, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

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



Господа, прошу прощения за долгое молчание - интернет халявный и глючит. Только попробуешь отправить сообщение - обрубает.
MetalFan, здОрово! До такого решения как-то не додумался smile Спасибо!
Чучмек, а это еще интереснее. Действительно, почему помогает? Кстати, если WB выставить Parent = nil и отправить WM_ACTIVATE, то он появляется в левом-верхнем углу экрана, без бордюра  smile 

Сперва не помогало, кстати, замучился проверять. Но выяснилось, что IE перешел в автономный режим как раз из-за глючности подключения.  smile 

Цитата(MetalFan @  13.10.2012,  10:50 Найти цитируемый пост)
Только я бы "таймаут" бы увеличил... 

А это не мои проблемы. Хотят пользоваться - пусть имеют быстрый интернет, тем более что он и без этой части программы нужен, иначе работа просто встанет.
PM MAIL WWW   Вверх
Чучмек
Дата 13.10.2012, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


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

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



Цитата(kami @  13.10.2012,  21:33 Найти цитируемый пост)
а это еще интереснее. Действительно, почему помогает? 

Инициализация в OnActivate.

Цитата(kami @  13.10.2012,  21:33 Найти цитируемый пост)
сли WB выставить Parent = nil и отправить WM_ACTIVATE, то он появляется в левом-верхнем углу экрана, без бордюра 
 На невидимой панели надо.

Добавлено через 8 минут и 51 секунду
Вообще надо WA_ACTIVE отправлять но WB не делает разницы между WA_ACTIVE и WA_INACTIVE, а нули быстрее набирать


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: ActiveX/СОМ/CORBA"

Rrader
Girder

Запрещено:

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

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


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

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

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


 




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


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

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