Шаг 68.
Visual Prolog.
Работа с полосами прокрутки

    На этом шаге мы рассмотрим работу с полосами прокрутки.

Обращение к полосе прокрутки

    Для работы с полосами прокрутки окна и полосами прокрутки, принадлежащими элементам управления, используется похожий набор предикатов. Так как нет отдельного идентификатора для полос прокрутки окна, для обращения к полосам прокрутки используется дескриптор окна. Специальный параметр scroll_type используется для определения того, к какой полосе прокрутки идет обращение:

   global domains
      scroll_type=integer
   constants
      sb_Horz=0 % Горизонтальная полоса прокрутки окна
      sb_Vert=1 % Вертикальная полоса прокрутки окна
      sb_Ctl=2  % Полоса прокрутки как элемент управления в окне

Диапазон полосы прокрутки

    Чтобы работать с реальной позицией движка, сначала нужно установить диапазон полосы прокрутки. Это можно сделать вызовом предиката:

   win SetScrollRange(Window,Scroll_type,integer Min,integer Max)

    Предикат win_GetScrollRange возвращает диапазон полосы прокрутки.

   win GetScrollRange(Window,Scroll_type,integer Min,integer Max)

    Если вы явно не установили диапазон, то будет установлен диапазон по умолчанию. Для полос прокрутки окна это значение находится в пределах от 0 до 100. Для полос прокрутки как элементов управления диапазона по умолчанию нет. На 16-разрядной платформе Windows разность между Min и Мах должна быть не больше 32 767.

Позиционирование полосы прокрутки

    Реальное положение движка полосы прокрутки должно контролироваться приложением, т. к. оно не изменяется автоматически после действий пользователя. Положение движка должно быть внутри диапазона полосы прокрутки. Приложение устанавливает позицию при помощи предиката:

   win_SetScrollPos(Window,Scroll_type,integer Pos)

    Текущая позиция может быть прочитана при помощи предиката:

   Integer=win_GetScrollPos(Window,Scroll_type)

Соразмерность полосы прокрутки

    На некоторых платформах можно устанавливать размер движка в зависимости от размера полосы прокрутки, что позволяет визуально определять общий объем данных. Значение Proportion должно быть между нулем и длиной интервала (Мах - Min) для полосы прокрутки:

   win_SetScrollProportion(Window,Scroll_type,unsigned Proportion)

    Текущее значение этого соотношения можно получить при помощи предиката:

   Unsigned=win_GetScrollProportion(Window,Scroll_type)

    На следующем шаге мы рассмотрим "собственное" рисование для элементов управления .




Предыдущий шаг Содержание Следующий шаг