Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как в TWebBrowser'е включить бэкспэйс, чтобы возвращаться на [D5, D7, WinME]


Алекс А ©   (2004-07-10 03:33:00) 

предыдущую страницу ? Вместо TWebBrowser'а использую TEmbeddedWB.
Причём нажатия клавиш на браузере не отлавливаютя в TForm при включённом KeyPreview. И как отловить нажатие этой клавиши вообще непонятно.


Piter   (2004-07-18 20:49:00) [1]

nikkie ©   (15.07.04 16:50) [6]
это все опера дурацкие интерфейсные идеи навевает...


ОПЕРА?! Она-то здесь при чем? Backspace - это было назад, по моему, в IE 3.x Об Опере еще никто не знал!


именно BkSpace не передается браузером в TranslateAccelerator

а у меня передается... может, ты просто фокус не установил на браузере? Ведь у браузера генерируется TranslateAccelerator только когда фокус на нем...


См. второй постинг в ветке

что, прямо такой же код и у тебя? :)
Интересно. Насколько понимаю, это вырезка из DMClient, очень интересно... У тебя тоже главная форма MainForm? :)
И на ней лежит ActionList? :)


Алекс А   (2004-07-16 01:19:00) [2]


> Piter ©   (15.07.04 14:19) [5]
> Алекс А   (15.07.04 4:58) [4]
>
> ТВОЙ блин код обработки TranslateAccelerator

См. второй постинг в ветке.


> nikkie ©   (15.07.04 16:50) [6]
> Alt+влево/вправо логичнее гораздо выглядит...

Только требует двух рук.


> это все опера дурацкие интерфейсные идеи навевает...

Нет. Виноваты во всём Майкрософт, своим кривым и глючным браузером. Одни клавиши в одном месте обрабатываются, другие в другом, третьи в третьем. Чтоб извлечь картинки надо сорок тегов обработать. Уж сколько лет браузеру, не могут все дыры залатать. Козлы.


nikkie   (2004-07-15 16:50:00) [3]

именно BkSpace не передается браузером в TranslateAccelerator. можешь ловить его в Application.OnMessage.

ЗЫ это все опера дурацкие интерфейсные идеи навевает...
имхо совсем неочевидно, что BkSpace должен работать как "назад".
и уж тем более не очевидно, что Shift+BkSpace должно работать как "вперед".
Alt+влево/вправо логичнее гораздо выглядит...
а между прочим, надо еще проверять, где фокус находится - если в текстовом поле, то BkSpace должен стандартно работать.


Piter   (2004-07-15 14:19:00) [4]

Алекс А   (15.07.04 4:58) [4]

ТВОЙ блин код обработки TranslateAccelerator


Алекс А   (2004-07-15 04:58:00) [5]


> Piter ©   (15.07.04 02:47) [3]
> тем не менее, данные разведки показывают, что все отслеживается
> нормально.
>
> Более того, если не обработать данное событие и не вернуть
> s_ok, то браузер автоматически по backspace возвращается
> на предыдущую страницу (если она есть).


Ничего не возвращает. Ни с этим кодом, ни без этого кода, никак. По Альт и стрелкам - переходит. А по бэкспэйс - нет.


> В общем, код в студию.

Какой код ?
Код Интернет Эксплорера в Майкрософт.
Код embeddedwb на www.euromind.com/iedelphi


Piter   (2004-07-15 02:47:00) [6]

Алекс А   (15.07.04 1:37) [2]
Кнопку бэкспэйс этот код не отслеживает. Некоторые кнопки отслеживае, а именно эту нет


тем не менее, данные разведки показывают, что все отслеживается нормально.

Более того, если не обработать данное событие и не вернуть s_ok, то браузер автоматически по backspace возвращается на предыдущую страницу (если она есть).

В общем, код в студию.


Алекс А   (2004-07-15 01:37:00) [7]


> nikkie ©   (12.07.04 02:06) [1]

Кнопку бэкспэйс этот код не отслеживает. Некоторые кнопки отслеживае, а именно эту нет. :) Вот что делать ? Как сам Интернет Эксплорер определяет нажатие на неё ?


nikkie   (2004-07-12 02:06:00) [8]

function TDMCChildForm.WebBrowserTranslateAccelerator(const lpMsg: PMsg;
 const pguidCmdGroup: PGUID; const nCmdID: Cardinal): HRESULT;
type
 PWMKey = ^TWMKey;
begin
 if lpMsg.message = WM_KEYDOWN then
   begin
     if MainForm.ActionList.IsShortCut(PWMKey(LongInt(lpMsg) + sizeof(HWND))^) then
       begin
         Result := S_OK;
         Exit;
       end;
   end;
 Result := S_FALSE;
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо