RSS    

   Реферат: 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


Новости


Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

                   

Новости

© 2010.