Форум: "Начинающим";
Текущий архив: 2010.09.12;
Скачать: [xml.tar.bz2];
ВнизZoom в TWebBrowser (обработка мыши) Найти похожие ветки
← →
TechnoDreamer (2010-06-17 02:28) [0]Хочу сделать зум в TWebBrowser как в IE с использованием ctrl+, ctrl- и ctrl-скролл.
Про .OleObject.Document.Body.Style.Zoom знаю. Реализовать через меню или другие контролы легко, а вот как обработать именно с использованием клавы\мышки учитывая отсутсвие соответсвующих событий - не знаю.
← →
ArchAL (2010-06-17 10:15) [1]Всё довольно просто:
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
← →
Andy BitOff © (2010-06-17 10:21) [2]
> ArchAL (17.06.10 10:15) [1]
Надо бы еще проверить, чтобы мышь находилась непосредственно над окном браузера, в котором отображена страница.
← →
TechnoDreamer (2010-06-18 01:07) [3]Тогда ламерский вопрос, как обрабатывать onMouseWheelDown когда фокус не на форме. У меня это событии вызавается только при старте программы, стоит кликнуть по любому контролу на форме и события больше не будет.
← →
Германн © (2010-06-18 01:33) [4]
> Тогда ламерский вопрос, как обрабатывать onMouseWheelDown
> когда фокус не на форме. У меня это событии вызавается только
> при старте программы, стоит кликнуть по любому контролу
> на форме и события больше не будет.
Это как это "фокус не на форме"?
← →
TechnoDreamer (2010-06-18 01:42) [5]Ну типа activecontol<>nil... короче когда фокус в каком-нибуть контроле, думаю вы поняли, не придирайтесь к словам :-)
← →
TechnoDreamer (2010-06-18 01:47) [6]Сорри, оказывается на обычных контролах всё работает (только таких в проекте не присутсвует), видать событие каким-то образом перехватывают DevExpress"овские контролы.
В общем сделал через отлов сообщения WM_MOUSEWHEEL, надеюсь это правильное решение...
← →
Германн © (2010-06-18 01:48) [7]
> Ну типа activecontol<>nil
А причем тут ActiveControl? Я не придираюсь. Просто тебе нужно всего лишь проверить, что мышь находится непосредственно
над окном браузера, в котором отображена страница.
А фокус и ActiveControl имеют отношение только к клавиатуре.
← →
Германн © (2010-06-18 01:51) [8]
> В общем сделал через отлов сообщения WM_MOUSEWHEEL, надеюсь
> это правильное решение...
Не думаю, что оно по-настоящему грамотное. Ведь на форме может быть более одного контрола, который должен реагировать на колесо мыши.
← →
TechnoDreamer (2010-06-18 02:00) [9]хм, действительно, хотя я отлавливаю только с нажатым ctrl, т.е. обычный скролл работает нормально (проверил).
P.S. После некоторых экпериментов выяснилось, что событие не вызывается только на котролах у которых есть свои события onMouseWheel, например у tcxDBTreeList.
А как то можно проверить, есть фокус у TWebBrowser или нет?
← →
TechnoDreamer (2010-06-18 02:02) [10]
> Просто тебе нужно всего лишь проверить, что мышь находится
> непосредственно
> над окном браузера, в котором отображена страница.
оки, так и сделаю.
← →
Anatoly Podgoretsky © (2010-06-18 10:21) [11]У посторонних компонентов есть своя собственная поддержка, форумы, почему бы у авторов не спросить, а что это ваши компоненты не работают?
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.09.12;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c