Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.09.12;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.009 c
15-1276247660
balepa
2010-06-11 13:14
2010.09.12
Задержка на CloseHandle при чтении файла на удаленном ПК


2-1274947026
Dzmitry
2010-05-27 11:57
2010.09.12
A call to an OS function failed


2-1276854352
terra
2010-06-18 13:45
2010.09.12
как заблокировать колонки в StringGrid


10-1167900733
d_oleg
2007-01-04 11:52
2010.09.12
TActiveForm и переход фокуса по TAB


4-1220443358
dmitry_12_08_74
2008-09-03 16:02
2010.09.12
как получить handle текущего активного окна на рабочем столе