На этом шаге мы рассмотрим события от полос прокрутки, фокуса и стирание фона.
e_HScroll(ScrollCode,integer Pos)
Это событие посылается, когда пользователь активизирует горизонтальную полосу прокрутки окна. Параметр Pos определяет позицию в полосе прокрутки.
e_VScroll(ScrollCode,integer Pos)
Это событие посылается, когда пользователь активизирует вертикальную пололосу прокрутки окна. Параметр Pos определяет позицию в полосе прокрутки.
e_GetFocus()
Это событие генерируется прежде, чем окно получает фокус, так чтобы пользователь не мог нажимать на кнопки или использовать любые другие элементы управления находящиеся в окне.
Окно или диалоговое окно получает событие e_Control (_,_,_,getfocus), если получают фокус его окна редактирования или окна списка.
e_LoseFocus()
Это событие генерируется, когда пользователь выбирает другое окно или приложение. Когда приходит данное событие, окно все еще имеет фокус и сохраняет его до тех пор, пока не будет выполнен ваш код.
Окно или диалоговое окно получает событие e_Control(_,_,_, losefocus), если теряют фокус его окна редактирования или окна списка.
e_EraseBackground()
Событие e_EraseBackground посылается, когда окно должно быть перерисовано. Обычно система управления окнами заполняет окно до перерисовки заданным по умолчанию цветом фона. Если предложение предиката обработчика для этого события выполнится успешно, то стандартное закрашивание фона произведено не будет.
Если вы хотите получить прозрачное окно или нарисовать фон как часть обработки события e_Update, вам нужно написать предложение, обрабатывающее это событие. Чтобы ускорить процесс перерисовки и избавиться от мерцания изображения, достаточно записать:
% Не выполнять автоматическое заполнение фона
my_window_event_handler(Window,e_EraseBackground(),0):-!.
На следующем шаге мы рассмотрим изменение окон.