![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как в 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;