![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Zoom в TWebBrowser (обработка мыши)
TechnoDreamer © (2010-06-17 02:28:00)Хочу сделать зум в TWebBrowser как в IE с использованием ctrl+, ctrl- и ctrl-скролл.
Про .OleObject.Document.Body.Style.Zoom знаю. Реализовать через меню или другие контролы легко, а вот как обработать именно с использованием клавы\мышки учитывая отсутсвие соответсвующих событий - не знаю.
Anatoly Podgoretsky (2010-06-18 10:21:00) [1]У посторонних компонентов есть своя собственная поддержка, форумы, почему бы у авторов не спросить, а что это ваши компоненты не работают?
TechnoDreamer (2010-06-18 02:02:00) [2]
> Просто тебе нужно всего лишь проверить, что мышь находится
> непосредственно
> над окном браузера, в котором отображена страница.
оки, так и сделаю.
TechnoDreamer (2010-06-18 02:00:00) [3]хм, действительно, хотя я отлавливаю только с нажатым ctrl, т.е. обычный скролл работает нормально (проверил).
P.S. После некоторых экпериментов выяснилось, что событие не вызывается только на котролах у которых есть свои события onMouseWheel, например у tcxDBTreeList.
А как то можно проверить, есть фокус у TWebBrowser или нет?
Германн (2010-06-18 01:51:00) [4]
> В общем сделал через отлов сообщения WM_MOUSEWHEEL, надеюсь
> это правильное решение...
Не думаю, что оно по-настоящему грамотное. Ведь на форме может быть более одного контрола, который должен реагировать на колесо мыши.
Германн (2010-06-18 01:48:00) [5]
> Ну типа activecontol<>nil
А причем тут ActiveControl? Я не придираюсь. Просто тебе нужно всего лишь проверить, что мышь находится непосредственно
над окном браузера, в котором отображена страница.
А фокус и ActiveControl имеют отношение только к клавиатуре.
TechnoDreamer (2010-06-18 01:47:00) [6]Сорри, оказывается на обычных контролах всё работает (только таких в проекте не присутсвует), видать событие каким-то образом перехватывают DevExpress'овские контролы.
В общем сделал через отлов сообщения WM_MOUSEWHEEL, надеюсь это правильное решение...
TechnoDreamer (2010-06-18 01:42:00) [7]Ну типа activecontol<>nil... короче когда фокус в каком-нибуть контроле, думаю вы поняли, не придирайтесь к словам :-)
Германн (2010-06-18 01:33:00) [8]
> Тогда ламерский вопрос, как обрабатывать onMouseWheelDown
> когда фокус не на форме. У меня это событии вызавается только
> при старте программы, стоит кликнуть по любому контролу
> на форме и события больше не будет.
Это как это "фокус не на форме"?
TechnoDreamer (2010-06-18 01:07:00) [9]Тогда ламерский вопрос, как обрабатывать onMouseWheelDownкогда фокус не на форме. У меня это событии вызавается только при старте программы, стоит кликнуть по любому контролу на форме и события больше не будет.
Andy BitOff (2010-06-17 10:21:00) [10]
> ArchAL (17.06.10 10:15) [1]
Надо бы еще проверить, чтобы мышь находилась непосредственно над окном браузера, в котором отображена страница.
ArchAL (2010-06-17 10:15:00) [11]Всё довольно просто:
1. Создаёшь глобальную переменную, напримерZoomSize:real;
2. Обрабатываешь событие onMouseWheelDown (либо Up) для формы.
3. Пишешь внутри код
if (ssCTRl in Shift) then
begin
ZoomSize:=ZoomSize-0.1;
MainBrowser.OleObject.Document.Body.Style.Zoom:=ZoomSize;
end;
Для Up соответственно +0.1
4. Не забудь задать первоначальное значение для ZoomSizeравное 1