Реферат: Turbo Vision
1 группа включает все события от мыши.Эти события воздействуют в
зависимости от координат курсора мыши.Модальный объект, воспринявший
такое событие, передает его своим подэлементам в Z-порядке, отыскивая
подэлемент, в который попадает курсор мыши.Этот подэлемент, если он
существует и является группой, в свою очередь, также передает это со-
бытие своим подэлементам в Z-порядке и т.д., пока этот поиск не оста-
новится из-за отсутствия соответствующего подходящего подэлемента.Если
соответствующий объект найден, то он будет обрабатывать событие, в
противном случае событие обрабатываться не будет.
2 группа предназначена для сфокусированного объекта и включает
события от клавиш клавиатуры и команды.Эти события передаются по це-
почке выделенных объектов непосредственно сфокусированному объекту.Ес-
ли сфокусированный объект "не знает", как обработать соответствующее
событие, то оно передается назад по цепочке выделенных объектов к мо-
дальному объекту.
3 группа включает события-сообщения (стандартные и создаваемые
пользователем).Эти события передаются всем подэлементам модального
объекта в Z-порядке.Те, в свою очередь, передают их своим подэлементам
в Z-порядке и т.д. до тех пор, пока это событие не будет обработано
каким-либо объектом или же не будут просмотрены все объекты.
При обработке события сначала выполняются соответствующие дейс-
твия у объекта, которому предназначено событие, после чего событие
"очищается" стандартным методом ClearEvent :
procedure tView.ClearEvent(var Event: tEvent);
где Event - текущее "очищаемое" событие.Если событие не "очистить", то
оно будет передаваться и дальше в соответствии с механизмом его обра-
ботки и может быть обработано еще каким-либо объектом.
Команды
События от объектов (команды или сообщения) имеют в качестве од-
ного из параметров параметр Command типа Word, задающий код команды,
которую необходимо выполнить при обработке этого события.
Все используемые в Turbo Vision команды делятся на 4 группы :
- команды, зарезервированные за системой и которые можно маскиро-
вать методом DisableCommands объекта tView и демаскировать методом
EnablеCommands объекта tView, - коды от 0 до 99;
- команды, которые может вводить программист и которые можно мас-
кировать и демаскировать аналогично первой группе, - кода от 100 до
225;
- команды, зарезервированные за системой, но которые нельзя мас-
кировать и демаскировать, как команды первой группы, - коды от 256 до
999;
- команды, которые может вводить программист, но которые нельзя
маскировать и демаскировать, - коды от 1000 до 65535.
Программист может использовать зарезервированные за Turbo Vision
команды, не переопределяя их.Более того, команды этой категории имеют
стандартные названия, и средства пакета стандартным образом реагируют
на них.Так, например, команда cmClose вызывает закрытие активного ок-
на, а cmMenu - активизирует меню и т.д.Все стандартные команды начина-
ются с префикса cm.
ПОРЯДОК РАБОТЫ С ОТОБРАЖАЕМЫМИ ОБЪЕКТАМИ
Работа с отображаемыми объектами осуществляется в несколько эта-
пов, выполняемых в определенной последовательности.На этих этапах
отображаемый объект описывается, создается, помещается в соответствую-
щую группу, задаются его параметры, производится работа с объектом,
получаются введенные параметры, наконец, объект удаляется.
Описание отображаемого объекта
Если отображаемый объект не является стандартным, его следует
описать - ввести необходимые параметры и методы на основе правил объ-
ектного программирования.Методы могут быть 4-х видов : конструкторы,
деструкторы, переопределенные методы предка и специфические методы для
данного объекта.
Конструктор позволяет инициализировать отображаемый объект : за-
дать исходные параметры, создать его подэлементы и т.д.Кроме того, он
создает таблицу виртуальных методов, без которой нельзя будет обра-
титься к этим методам.
Деструктор выполняет действия, обратные действиям конструктора, и
используется при удалении отображаемого объекта, имеющего виртуальные
методы.Сам деструктор также является виртуальным.
Переопределенный метод предка позволяет, используя возможности
исходного метода, модифицировать их, добавить в них некоторые дополни-
тельные свойства, специфические для данного объекта.Переопределенный
метод должен быть виртуальным.
Специфический для данного объекта метод - это метод, который не
имеет аналогов у предка данного объекта.
Создание отображаемого объекта
Если отображаемый объект не размещен постоянно в сегменте данных
(не задана соответствующая переменная конкретного типа-объекта), необ-
ходимо создать соответствующий объект.Модальные объекты, как правило,
не размещаются постоянно в сегменте данных и создаются только на время
работы с ними; немодальные объекты могут и одного, и другого вида, но
чаще все-таки также не размещаются постоянно в сегменте данных.Созда-
ется объект с помощью стандартной подпрограммы New, использующей конс-
труктор Init.
Помещение отображаемого объекта в группу
После создания отображаемого объекта его следует поместить в со-
ответствующую группу : если он является элементом окна, то в соответс-
твующее окно, если же он сам является окном, то в рабочую область
DeskTop.
У каждого объекта-группы имеются методы Insert и InsertBefore, с
помощью которых можно поместить немодальный отображаемый объект в
группу.
Для размещения немодального окна в рабочей области вместо метода
Insert лучше воспользоваться методом InsertWindow :
function tProgram.InsertWindow(P: pWindow): pWindow;
где P - указатель на размещаемое окно; результат - указатель на разме-
щенное окно, и nil - если не размещено.
Метод является функцией, которая перед размещением окна проверяет
допустимость такой операции (имеется ли необходимая область памяти и
правильно ли сконструированы окно и его компоненты).
Задание параметров воображаемому объекту
В Turbo Vision принят следующий стандартный способ передачи пара-
метров.Для объекта-группы или его потомка формируется переменная ти-
па-записи, отдельные поля которой представляют собой параметры для по-
дэлементов группы.Поля должны идти в той же последовательности, в ка-
кой подэлементы включались в группу.Для каждого подэлемента параметры
создаются по-своему.Для стандартных элементов параметры должны быть
следующими :
- строка ввода - строка того же размера;
- триггерный список - число типа Word, в котором каждый бит опре-
деляет состояние соответствующего элемента списка;
- селективный список - число типа Word, определяющее порядковый
номер выделенного элемента списка;
- триггерный список с несколькими состояниями - информация разме-
ром в 4 байта, определяющая состояние каждого элемента списка
(под каждый элемент может отводиться 1,2,4 и 8 бит информации;
- список коллекции строк - запись размером в 6 байт, первое поле
которой - указатель на коллекцию просматриваемых строк, а вто-
рое - число типа Word, определяющее порядковый номер выделен-
ного элемента списка;
- параметрический текст - по 4 байта на каждый параметр.
Для нестандартных элементов пользователь сам определяет вид и
размер параметра.
Задать параметры немодальному отображаемому объекту лучше всего с
помощью метода SetData :
procedure <отображаемый объект>.SetData (var Rec); virtual;
где Rec - передаваемая запись с данными.
Работа с модальными объектами
Для работы с модальными отображаемыми объектами используются ме-
тоды, выполняющие комплексные действия.
Универсальным является метод ExecView объекта tGroup :
function tGroup&ExecView(P: pView): Word;
где P - объект, с которым происходит работа; результат - код команды,
вызвавшей прекращение работы с объектом P.
Этот метод помещает воображаемый объект в группу, делает его мо-
дальным, обеспечивает обработку поступающих событий, и, если очередное
событие является командой или сообщением, означающими конец работы с
отображаемым модальным объектом, удаляет отображаемый объект из груп-
пы.Предварительно перед удалением объекта следует снять с него модаль-
ность, что осуществляется с помощью процедуры EndModal объекта tView :
procedure tGruop.EndModal(Command: Word); virtual;
где Command - код команды, при которой снимается модальность.
В качестве результата функция ExecView возвращает код команды,
вызвавшей прекращение работы с модальным отображаемым объектом.После
удаления из группы сам отображаемый объект из динамической памяти не
удаляется.
Если модальный отображаемый объект является диалоговым окном и
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13