Главная страница
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.013 c
2-1276721389
GanibalLector
2010-06-17 00:49
2010.09.12
TClientSocket в DLL


2-1276664021
Delphist2
2010-06-16 08:53
2010.09.12
текст в ячейке excel


6-1226147951
Рем
2008-11-08 15:39
2010.09.12
Шлюз (покси) для разных рабочих групп ?


15-1274256143
12
2010-05-19 12:02
2010.09.12
Помогите пропатчить dll. Обход ошибочного кода. Не взлом!


2-1276760149
john-s
2010-06-17 11:35
2010.09.12
Не могу добавить данные типа float в mysql