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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 19.04.2013, 08:51
Pcrepair
 
Сообщения: n/a
По умолчанию Программное управление TWebBrowser

Добрый день. Есть код:

Код:
var
  Main: TMain;
  Data:Variant;

implementation
uses MSHTML;
(*загрузка Гугля*)
procedure TMain.Button1Click(Sender: TObject);
var
SmUrl,HtmlCode:string;
Flags, TargetFrameName, PostData, Headers: Olevariant;
Document:IHTMLDocument2; (*Перем типа*)
begin
  Wbbr.Navigate(Edit1.Text, Flags, TargetFrameName, PostData, Headers);
  Document:=Wbbr.Document as IHTMLDocument2;
  if Assigned(Document) then               
  HtmlCode:=Document.body.innerHtml;
  Memo1.Text:=HtmlCode;
end;

(*находим форму ввода поисковых слов и вводим их*)
procedure TMain.Button2Click(Sender: TObject);
var
I,J:integer;
begin
  for I := 0 to (Wbbr.OleObject.Document.forms.Item(0).Elements.Length-1) do
    begin
      if Wbbr.OleObject.Document.Forms.Item(I).Elements.Name='f' then
        Data:=Wbbr.OleObject.Document.Forms.Item(I).Elements;
        Break;
    end; (*находим нужную форму по имени*)

  for J := 0 to (Data.Length-1) do
    begin
      if (Data.Item(J).Name='q') then Data.Item(J).Value:=Edit2.Text;
    end;  (*копируем в строку ввода на странице символы из ЕДИТ2*)

end;

(*находим кнопку начать поиск и программно жмем ея*)
procedure TMain.Button3Click(Sender: TObject);
var J:integer;
begin
  for J := 0 to (Data.Length-1) do
    begin
      if (Data.Item(J).value='Поиск в Google') then
      //(Wbbr.Document as IHTMLDocument2).ParentWindow.Focus;
      Data.Item(J).Click;
    end;
end;

Практически все работает, но если после нажатия на Батон2 не кликнуть на ТВебБраузер мышью, то при нажатии на Батон3 загрузка страницы не присходит
Если кто в курсе, скажите что не так еще.
Ответить с цитированием
  #2  
Старый 19.04.2013, 10:18
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

На первый взгляд - при нажатии на баттон2 происходит увод фокуса с браузера и при жиме на "начать поиск" эта комманда возможно не доходит. Вариант решения - возвращать фокус компоненту или заменить обычные баттоны на битбтн или спидбаттоны у них перехода по Таб (передачи фокуса) нет.
Ответить с цитированием
  #3  
Старый 19.04.2013, 11:30
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

управляет списком на WEB-странице через TRadioGroup:
http://zalil.ru/34450569
естественно можно и на самой странице кликать. исходник недавно выкладывал.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #4  
Старый 19.04.2013, 17:53
Pcrepair
 
Сообщения: n/a
По умолчанию

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

кстати, теритчски, фокус на ТВБР не причем, ведь должен быть программный доступ к внутренностям страницы, лежащей в ДОКУМЕНТ.браузера

во всяком случае в источниках так поясняют
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter