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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TWebBrowser+OnKeyDown 
:(
    Опции темы
Gorinich
Дата 16.10.2005, 14:17 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Люди-человеки , помогите!!! Как сделать так, чтобы WebBrowser с загруженным документом реагировал на события OnKeyDown, OnMouseOver и т.д. smile .Я делаю это перехватывая сообщение WM_ONKEYDOWN , но мне это не нравится smile
  Вверх
December
Дата 16.10.2005, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


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

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



А чем не нравится-то?
Вообще для полноценного контроля над TWebBrowser без ApplicationEvents.OnMessage не обойтись. Особенности, блин, реализации. Какие есть конкретные проблемы?


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
Gorinich
Дата 18.10.2005, 14:21 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Во-первых не знаю как ловить сочетания клавиш. А во вторых слышал , что можно подключиться к объектной модели DHTML, но не знаю как smile
  Вверх
December
Дата 18.10.2005, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


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

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



Цитата(Gorinich @ 18.10.2005, 14:21)
Во-первых не знаю как ловить сочетания клавиш.

Существует ряд вариантов, половина из них подходит для работы с TWebBrowser. Часа через 4 выложу свой механизм отлова, он довольно хорошо отлажен.

Цитата(Gorinich @ 18.10.2005, 14:21)
А во вторых слышал , что можно подключиться к объектной модели DHTML, но не знаю как

Это меня тоже интересует, но исследовать данный вопрос ручки не дошли smile Может, поищешь в инете? smile


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
December
Дата 18.10.2005, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


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

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



Я делаю так...
Код

procedure TMainForm.ApplicationEvents1ShortCut(var Msg: TWMKey;
  var Handled: Boolean);
begin
if ShowingModalDialog then exit;  //ShowingModalDialog - it's my variable, its goal should be obvious :)
if (Msg.KeyData and $40000000)>0 then exit;  //key up!
if (Msg.KeyData and $FFFF)>1 then exit;  //not the first press!
if MSg.CharCode=$4E then
  begin
  if CtrlDown then
    begin
    //here goes your code that responds to Ctrl+N combination
    Handled:=true;
    end;//if Ctrl pressed
  end;//if N key
if (Msg.CharCode=VK_F5) and (Msg.Msg<>258) then
  begin
  //here goes your code that shoud respond to F5 key
  Handled:=true;
  end;//if F5
if Msg.CharCode=VK_ESCAPE then
  begin
  //another piece of code
  Handled:=true;
  end;//if Escape
end;

Для комплекта...
Код

function CtrlDown:Boolean;
var
  State:TKeyboardState;
begin
GetKeyboardState(State);
Result:=((State[vk_Control] And 128)<>0);
end;

function ShiftDown:Boolean;
var
  State:TKeyboardState;
begin
GetKeyboardState(State);
Result:=((State[vk_Shift] and 128)<>0);
end;

function AltDown:Boolean;
var
  State : TKeyboardState;
begin
GetKeyboardState(State);
Result:=((State[vk_Menu] and 128) <> 0);
end;

И напоследок... Ты наверняка читал про то, что если не пошаманить с функциями IsDialogMessage, TranslateAccelerator, то много-много чего в ТВебБродилке работать не будет. И наверняка пошаманил smile Если это так, то не забудь дополнительно вызывать ApplicationEvents1ShortCut после TranslateAccelerator smile


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
Guest
Дата 19.10.2005, 16:05 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Большое спасибо за примеры! Посмотрев пост о замене Find'a, я попробовал
BOOL RegisterHotKey(
HWND hWnd, // window to receive hot-key notification
int id, // identifier of hot key
UINT fsModifiers, // key-modifier flags
UINT vk // virtual-key code
);
перекрываю WebBrowser' овские CTRL+F и CTRL+Z ,перехватываю WMHotKey и выполняю свои действия smile
На счет подключения к событиям DHTML. В инете везде развешена статья Тимофея Чадова "Подключение к событиям объектной модели DHTML при использовании WebBrowser-control", но пример дан на С++, а я в нем не очень шарю. Описывается подключение к событиям с использованием ConnectionPoints, MFC, CHtmlEventSink и т.д. Вообще не нашел примеров на Delphi.
December, зря ты упомянул IsDialogMessage и TranslateAccelerator вопросов возникло еще больше smile
И еще в догонку smile на форме также находится TreeView, в котором отображаются Image'и и Link'и со страницы из WebBrowser'а, для каждого вида вершин своя иконка. Может подскажете как лучше/проще организовать Undo/Redo (например при удалении Image'а со страницы), вообще связь м/у ними.
Я делаю так (для простоты опишу однократное):
1.Отслеживаю нажатие клавиши DELETE.
2.Проверяю, чтО удаляется. Если картинка, то: сохраняю TreeView в фаил Undo.txt.
3. Удаляю вершину из TreeView, записываю TreeView в файл Redo.txt.
При Undo делаю TreeView1.LoadFromFile('Undo.txt'), при Redo делаю TreeView1.LoadFromFile('Redo.txt'). Но так теряются иконки ассоциированные с вершинами (показывается только первая из ImageList'a) обновить почему-то не получается (может руки кривоваты). Конечно проще не всегда лучше, но может есть способ попроще smile
  Вверх
December
Дата 19.10.2005, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


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

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



Стоп-стоп-стоп.
За примеры - всегда пожалуйста, но ещё читаем правила: один топик - один вопрос. Так что насчёт TreeView - это в общие вопросы.
Цитата(Guest @ 19.10.2005, 16:05)
IsDialogMessage и TranslateAccelerator

Если не используешь TWebBrowser для сёрфинга и работы с вводом текста от пользователя, то можно не обращать внимания на это дело.
Цитата(Guest @ 19.10.2005, 16:05)
статья Тимофея Чадова

Тут не важно, cpp или Delphi, тяжелее с технологиями... Ладно, как-нить разберёмся...


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0449 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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