RSS    

   Реферат: Turbo Vision

его следует поместить в рабочую область,  вместо метода ExecView целе-

сообразно использовать метод ExecuteDialog :

     function tProgram.ExecuteDialog(P: pDialog;Data: Pointer): Word;

где P - диалоговое окно, с которым происходит работа;

    Data - указатель на запись с передаваемыми данными;

результат - код команды, вызвавшей прекращение работы и диалоговым ок-

ном P.

                            СОЗДАНИЕ МЕНЮ

     Turbo Vision позволяет создать меню программы,предназначенное для

выбора дальнейшего пути решения задачи.

     После написания объекта-приложения - основного объекта программы,

целесообразно продолжить  создание  программы  именно с описания меню,

так как выбор той или иной структуры меню во многом будет определять и

структуру программы.В  Turbo  Vision  можно  использовать либо обычное

разворачивающееся меню, либо так называемое локальное меню.

                   Создание разворачивающегося меню

     Разворачивающееся меню  (в  дальнейшем - просто меню) может иметь

довольно сложную структуру и любое число уровней вложенности,  но сос-

тавляется из однотипных элементов, правда имеющих три варианта : собс-

твенно элемент меню (фактически определяет  команду,  которую  следует

выполнить при выборе этого элемента),  подменю, при выборе которого на

экране раскрывается соответствующий пункт исходного меню,  и  раздели-

тельная линия, которая имеет чисто декоративное назначение и позволяет

отделять в подменю те или иные группы элементов друг от друга.

     Элемент меню   имеет   структуру   типа-запись  (стандартный  тип

tMenuItem) :

     tMenuItem = record

        Next: pMenuItem;

        Name: pString;

        Command: Word;

        Disabled: Boolean;

        KeyCode: Word;

        HelpCtx: Word;

     case Integer of

        0: (Param: pString);

        1: (SubMemu: pMenu);

     end;

   end;

где Next - указатель на следующий элемент этого же уровня вложенности,

если следующего элемента нет, указатель равен nil;

    Name -  указатель на строку,  содержащую выводимый на экран текст;

этот параметр равен nil,  если элемент представляет собой разделитель-

ную линию;

    Commаnd - код команды, которую следует выполнить при выборе данно-

го элемента меню;  эта величина равна нулю, если данный элемент - под-

меню;

    Disabled -  признак разрешения или запрета выбора данного элемента

меню;

    KeyCode -  код клавиши или их совокупности быстрого управления,  с

помощью которых можно выполнить команду данного элемента меню,  не вы-

зывая это элемент,  или 0,  если для данного элемента такой клавиши не

предусмотрено;

    HelpCtx - параметр контекстной помощи,  аналогичный параметру объ-

екта tView, но справочная система выдает информацию об элементе меню;

    Param - указатель на строку с дополнительной информацией,  которая

выводится в правой части строки подменю,  соответствующей данному эле-

менту (обычно это название клавиши быстрого управления);

    SubMemu - указатель на структуру меню следующего уровня, если дан-

ный элемент представляет собой подменю.

ню.

     Горизонтальные размеры  выводимой на экран строки для любого эле-

мента меню ограничены 31 символом.В связи с этим в Turbo Vision имеет-

ся стандартный тип строк tMenuStr :

     tMenuStr = string[31];

который и используется для задания символьной информации элементам ме-

ню.

     Для каждого  элемента меню можно в его названии выделить одну ла-

тинскую букву или цифру для быстрого  выбора  элемента  путем  нажатия

этой клавиши  на клавиатуре (для основного меню - в сочетании с клави-

шей Alt).Такая буква выделяется в тексте символами ~~,например, ~N~ew.

     В данном примере соответствующий элемент можно активизировать на-

жатием клавиши N (или Alt+N, если это элемент основного меню).На экра-

не такая буква выделяется особым цветом.

     Для создания  элемента  меню,  определяющего выполняемую команду,

используется подпрограмма NewItem :

     function NewItem(Name,  Param:  tMenuStr; KeyCode: Word; Command:

Word; AHelpCtx: Word; Next: pMenuItem): pMenuItem;

где Name  -  текстовая информация для данного элемента,  она не должна

быть пустой строкой;

    Param - дополнительная текстовая информация для элемента;

    KeyCode - код клавиши быстрого управления;

    Command - код выполняемой команды, не должен равняться 0;

    AHelpCtx - параметр контекстной помощи;

    Next - указатель на следующий элемент меню данного уровня;

    результат - указатель на созданный элемент меню.

     Для создания элемента меню,  представляющего собой  подменю,  ис-

пользуется подпрограмма NewSubMenu :

     function NewSubMenu(Name:  tMenuStr;  AHelpCtx:  Word;   SubMenu:

pMenu; Next: pMenuItem;

где Name - текстовая информация для данного элемента,  не должна  быть

пустой строкой;

    AHelpCtx - параметр контекстной помощи;

    SubMenu - указатель на структуру подменю;

    Next - указатель на следующий элемент подменю данного уровня;

    результат - указатель на созданный элемент меню.

     Если элемент меню является разделительной строкой, то использует-

ся подпрограмма NewLine :

     function NewLine(Next: pMenuItem): pMenuItem;

где Next - указатель на следующий элемент меню данного уровня;

    результат - указатель на созданный элемент меню.

     Функционально разворачивающееся меню состоит из нескольких частей

- главного меню,  постоянно отображаемого на экране,  и ряда  подменю,

появляющихся на экране по мере необходимости.Главное меню представляет

собой объект типа tMenuBar.Создается оно обычно с помощью  стандартной

подпрограммы New, а инициализируется конструктором  Init :

     сonstructor tMenuBar.Init(var Bounds: tRect; AMenu: pMenu);

где Bounds - область на экране для главного меню;

    AMenu - указатель на главное меню.

     Создавая меню программы, следует позаботиться лишь о размерах ос-

новного меню, размеры же выпадающих подменю определяются автоматически

при их отображении на экране.Стандартный объект tProgram ( а, следова-

тельно, и объект tApplication) имеет метод InitMenuBar :

     procedure tProgram.InitMenuBar; virtual;

с помощью которого можно создать меню и который следует переопределить

для конкретной программы.Этот метод помещает указатель на созданное ме-

ню в стандартную типизированную константу MenuBar пакета Turbo Vision.

                       Создание локального меню

     При работе  с  программой  часто приходится многократно повторять

одни и те же действия,  которые разнесены по различным частям меню  (а

некоторых в меню вообще не может быть).Количество их обычно небольшое,

а поиск по всему меню неудобен.Целесообразно такие действия собрать  в

одно дополнительное меню, доступ к которому осуществляется по тому или

иному событию, например, команде, нажатию клавиши клавиатуры или мыши.

     Для создания  такого  меню можно использовать стандартный  объект

пакета Turbo Vision - tMenuPopup.Для этого в метод HandleEvent  основ-

ного объекта  программы  следует включить обработку выбранного для ло-

кального меню события и написать подпрограмму  вызова  локального  ме-

ню.Так как  локальное меню должно быть довольно простым,  оператор его

конструирования будет также проще,  чем у разворачивающегося меню,  но

тем не менее состоять из обращений к тем же методам.

     Создавать локальное меню целесообразно на завершающих этапах соз-

дания программы,  когда становится ясно, какие действия наиболее часто

придется выполнять пользователю программы.

     Несмотря на  свою сложность,  меню в силу своей специфики группой

не является, и у него имеется свой своеобразный механизм обработки со-

бытий.Так, например,  если меню получит событие от мыши,  когда курсор

не находится в поле отображения меню,  оно закрывается, как будто пос-

тупила команда  завершения работы с объектом без фиксации результата.В

случае же модального объекта группы (например, диалогового окна) такое

событие игнорируется.

                   СОЗДАНИЕ ОКОН И ДИАЛОГОВЫХ ОКОН

     После того, как будет выбрано меню программы, целесообразно прис-

тупить к формированию отдельных частей программы, обрабатывающих соот-

ветствующие команды  меню и строки состояния.Часто эти команды требуют

использования различных окон для передачи информации.Окна могут потре-

боваться и при создании подпрограмм, обрабатывающих те или иные коман-

ды.

     Основным средством  взаимодействия  пользователя  с  программой в

Turbo Vision являются  окна  (тип  tWindow)  и  диалоговые  окна  (тип

tDialog).У окон и диалоговых окон много общего,  т.к.  диалоговое окно

является непосредственным потомком окна,  однако есть и принципиальные

различия, главным  образом,  в  их предназначении,  наборе стандартных

элементов, цветовой палитре.Можно  сказать,  что  основное  назначение

окон -  просмотр  той или иной информации,  а диалоговых окон - ввод в

программу данных.Диалоговые окна обладают рядом дополнительных возмож-

ностей и  более  логически завершены,  поэтому они чаще используются в

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13


Новости


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

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

Пока нет

Новости в Twitter и Facebook

                   

Новости

© 2010.