на тему рефераты
 
Главная | Карта сайта
на тему рефераты
РАЗДЕЛЫ

на тему рефераты
ПАРТНЕРЫ

на тему рефераты
АЛФАВИТ
... А Б В Г Д Е Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Э Ю Я

на тему рефераты
ПОИСК
Введите фамилию автора:


Реферат: Turbo Vision


    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).У окон и диалоговых окон много общего,  т.к.  диалоговое окно

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

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

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

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

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

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

программах.

                    Окна (tWindow) в Turbo Vision

     Окном в TurboVision называется отображаемый объект-группа,  имею-

щий специальную  рамку и который может иметь средства прокрутки (скро-

ллинга) не умещающейся в окне информации.В него можно поместить инфор-

мацию.Как правило,  в  программе используется не окно типа tWindow,  а

его потомок с переопределенными методами.

     В дополнение  к параметрам объекта tGroup окно обладает рядом до-

полнительных параметров, отметим два : флаги окна Flags и используемая

палитра Pallete.Назначение флагов параметра Flags,  и константы, соот-

ветствующие единице в соответствующем разряде параметра Flags  следую-

щие :

     0-й бит (wfMove) - возможность перемещения окна по полю его  вла-

                        дельца

     1-й бит (wfGrow) - возможность изменения размеров окна.

     2-й бит (wfClose) - наличие пиктограммы закрытия окна.

     3-й бит (wfZoom) - наличие пиктограммы распахивания окна.

     Параметр Pallete определяет тип используемой палитры окна и может

принимать одно из трех следующих значений :

     wpBlueWindow = 0 - синяя палитра окна;

     wpCyanWindow = 1 - голубая палитра окна;

     wpGrayWindow = 2 - серая палитра окна.

     Как правило,  синяя  палитра  - для окон,  серая - для диалоговых

окон, а голубая - для вспомогательных окон.

     Инициализируется окно параметром Init :

     constructor tWindow.Init(var Bounds: tRect;

                             ATitle: tTitleStr; ANumber: Integer);

где  Bounds - размеры окна;

     ATitle - имя окна размером до 80 символов;

     ANumber - номер окна.

     После инициализации устанавливаются значения параметров.

     Характерной особенностью окна и  его  потомков  является  наличие

рамки -  специального отображаемого объекта,  помещаемого в окно.Таким

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

декоративного значения  несет  на себе еще дополнительную информацию о

окне.

     Вид рамки  окна  меняется в зависимости от его состояния.Активное

окно обрамлено двойной рамкой.

     В левой  части верхней линии рамки располагается пиктограмма зак-

рытия окна.При подведении курсора мыши к этой  пиктограмме  и  нажатии

левой клавиши окно закрывается.

     В средней части верхней линии рамки располагается имя окна, зада-

ваемое при его инициализации.

     В правой части верхней линии рамки находится пиктограмма распахи-

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

чено окно,Распахивание также осуществляется с помощью мыши.После  рас-

пахивания окна  пиктограмма  изменит  свой  вид  - "двустороняя стрел-

ка".Чтобы восстановить исходные размеры окна, следует повторно подвес-

ти окно,  а  затем  снова  его сжать можно и другим способом.Для этого

следует поместить курсор мыши на верхнюю линию рамки окна и дважды на-

жать клавишу.

     Правый нижний угол рамки может быть таким же, как и все другие, а

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

этом случае с помощью мыши можно изменять размеры окна.Для этого  кур-

сор мыши поместить на этот угол,  нажать на клавишу и, не отпуская ее,

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

мых размеров, отпустить.Минимальные размеры окна - 16 позиций по гори-

зонтали и 6 строк по вертикали.Эти ограничения можно  изменить  с  по-

мощью метода SizeLimits :

     procedure'tView.SizeLimits(var Min, Max: tPoint); virtual;

     Верхняя линия  позволяет в ряде случаев с помощью мыши перемещать

окно по полю его владельца.

     Наличие или отсутствие у окна этих возможностей зависит от  уста-

новленных флагов параметра Flags.

     При работе с окном его следует сначала  создать  и  инициализиро-

вать.При этом  создать  необходимые  компоненты (кроме рамки,  которая

создается автоматически) и поместить их в окно.

     Далее окно следует поместить в рабочую область.Как правило,  окно

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

да InsertWindow, а если окно модальное - при помощи метода ExecView.

     Как правило,  для окна следует переопределить метод обработки со-

бытий HandlEvent, где необходимо предусмотреть обработку предназначен-

ных для окна событий.

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

мощью метода EndModal.

     Если окно содержит выделенный элемент, а нужно сделать выделенным

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

элементу и  нажав  клавишу,  либо  с  помощью  клавиши  клавиатуры Tab

(или Shift+Tab),  при этом нажатие  Tab выделит  следующий в Z-порядке

элемент, а Shift+Tab - предыдущий.

                     Элементы окон в Turbo Vision

     В качестве стандартных элементов окон Turbo Vision можно  исполь-

зовать поля скроллинга (тип Scroller), предназначенные для отображения

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

буферированной информации  (тип  tTewtDevice),  текстовые элементы для

пассивных терминалов (тип tTerminal) наподобие текстовых файлов и  ли-

нейки скроллинга.В окне можно помещать также потомки перечисленных вы-

ше стандартных элементов.

                     Поле скроллинга  (tScroller)

     Поле скроллинга  предназначено для размещения в нем текстовой ин-

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

уменьшается целиком в поле окна.

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

нейки горизонтального и вертикального скроллинга :

     constructor tScroller.Init(var Bounds: tRect;

                            AHScrollBar, AVScrollBar: pScrollBar);

где Bounds - размеры поля;

    AHScrollBar, AVScrollBar  -  указатели  на вертикальную и горизон-

тальную линейку скроллинга.

     После инициализации   устанавливаются  значения  параметров.Кроме

этого, при инициализации потомка tScroller могут быть заданы параметры

поля скроллинга,  в частности максимальный горизонтальный и вертикаль-

ный размер текстовой информации (размер строк и число строк), размеща-

емой в поле скроллинга.

     Следует также переопределить метод Draw  объекта  tScroller   для

того, чтобы  наполнить поле скроллинга соответствующей информацией.Для

этого необходимо в начале определить,  какая часть  информации  должна

быть отображена (исходя из текущего состояния линеек), затем сформиро-

вать строки, которые необходимо вывести на экран и, наконец, поместить

сформированные строки в поле скроллинга, с атрибутами цвета.

             Текстовый элемент буферированной информации

     Текстовый элемент буферированной информации (тип tTextDevice) яв-

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

двух абстрактных методов,  которые читают из некоторого текстового бу-

фера и записывают в текстовый буфер отображаемую информацию.

              Текстовый элемент для пассивного терминала

     Текстовый элемент  для  пассивного  терминала   (тип   tTerminal)

является наследником  объекта tTextDevice и предназначен для отображе-

ния в поле скроллинга информации от пассивного терминала,  чаще  всего

из текстового файла этого терминала.Под пассивным терминалом здесь по-

нимается терминал,  хранящий информацию,  но  не  имеющий  собственных

средств редактирования информации и управления экраном.

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

труктором Init :

     constructor tTerminal.Init(var Bounds: tRect;

         AHScrollBar, AVScrollBar: pScrollBar; ABufSize: Word);

где Bounds - размеры поля;

    AHScrollBar, AVScrollBar  -  указатели  на вертикальную и горизон-

тальную линейку скроллинга;

    ABufSize - размер буфера терминала в байтах.

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

ми, а также буфер для передачи информации размером ABufSize.

                   Линейка скроллинга (tScrollBar)

     Линейка скроллинга  предназначена  для  фиксации места нахождения

отображаемой на экране в данный момент порции информации во всем  объ-

еме отображаемой  информации.Линейка  представляет собой либо горизон-

тальную полосу, либо вертикальную.Полоса оканчивается двумя стрелками,

а в средней части расположен ползунок,  указывающий относительное рас-

положение отображаемой порции информации.

     Используя этот ползунок, можно быстро переместиться в любое место

отображаемой информации.Для этого необходимо подвести  к  нему  курсор

мыши, нажать клавишу мыши и,  не отпуская ее, отбуксировать ползунок в

нужное место линейки скроллинга.Если курсор мыши поместить не на  пол-

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

на следующая страница информации,  находящаяся в соответствующем  нап-

равлении.Если курсор  мыши  поместить  на завершающую стрелку и нажать

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

твующую сторону.

     5 параметров объекта tScrollBar :

     Min, Max - определяют миним.  и максим.  значение номера текущего

элемента информации.

     ArStep - величина шага перемещения по информации в случае нажатия

клавиш Left,  Right,  Up,  Down или при нажатии клавиши мыши,  если ее

курсор находится на завершающей стрелке.

     PgStep - размер страницы, на которую происходит перемещение.

     Value -  текущий  элемент информации.Инициализация линейки скрол-

линга осуществляется конструктором Init :

     constructor tScrollBar.Init(var Bounds: tRect;

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

натах его владельца.

     Линейка скроллинга не может активизироваться,  так как у  нее  не

установлен флаг  ofSelectable  параметра  Options.Поэтому она не может

обычным образом реагировать на нажатие клавиш  клавиатуры.Чтобы  этого

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

тий, установив флаг ofPostProcess параметра Options.

                           Диалоговое окно

     Диалоговое окно (тип tDialog) представляет специальный  тип  окна

(является потомком tWindow) и предназначено в первую очередь для ввода

значений параметров в программу.

     Так же  как  и  обычное окно,  диалоговое окно может использовать

один из трех видов палитры :

     dpBlueDialog = 0 - синяя палитра диал. окна;

     dpCyanDialog = 1 - голубая палитра диал. окна;

     dpGrayDialog = 2 - серая палитра диал. окна.

     В отличие  от    обычного   окна       диалоговое    окно обычно

используется в модальном режиме.Инициализируется диалоговое окно конс-

труктором Init :

     constructor tDialog.Init(var Bounds: tRect;

                                               ATitle: tTitleStr);

где  Bounds - размеры диалогового окна;

     ATitle - имя диалогового окна размером до 80 символов.

     В отличие от обычного окна у диалогового окна стандартно нет воз-

можности изменять размеры, оно использует серую палитру и не имеет но-

мера.

     К другим особенностям диалогового окна можно отнести обработку им

клавиш Esc  и Enter.Если диалоговое окно находится в модальном режиме,

нажатие Esc закрывает окно без сохранения введенной информации.Нажатие

клавиши Enter  эквивалентно  нажатию  кнопки,  выбираемой по умолчанию

(закрывает окно с сохранением внесенных изменений).

     Для удобной  работы  с  диалоговым  окном  в Turbo Vision имеется

большое количество стандартных объектов,  которые можно использовать в

качестве элементов этого окна.

     Работу с  диалоговым  окном в модальном режиме можно организовать

следующим образом.Сначала создать и инициализировать диалоговое  окно,

при этом  поместив  в него все его элементы.Затем подготовить исходные

данные для передачи диалоговому окну.

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

тода ExecuteDialog и осуществляется работа с ним.При завершении работы

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

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

в том же параметре, в котором передавались исходные данные.

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

работы с ним аналогична последовательности работы с обычным окном.

                       Элементы диалоговых окон

     Возможно использование стандартных элементов или их потомков :

     - строки ввода;

     - метки;

     - протоколы;

     - селективные списки;

     - триггерные списки;

     - кнопки;

     - статические и параметрические тексты;

     - списки строк;

     - линейки скроллинга.

                             Строка ввода

     Строка ввода (тип tInputLine) предназначена для ввода в программу

символьной информации.Фактически строка ввода представляет собой прос-

тейший редактор  строки символов и обладает большим набором возможнос-

тей.Основным элементом строки является буфер (строка,  в которую поме-

щаются все  вводимые  символы).Инициализируется  строка  ввода методом

Init :

     constructor tInputLine.Init(var Bounds: tRect;

                                               AMaxLen: Integer);

где  Bounds - размер поля строки ввода;

     AMaxLen - размер буфера.

     Высота поля строки ввода должна равняться единице.Ширина поля мо-

жет быть любой, но не менее 3.Размер буфера может иметь любое значение

до 255.После создания строки ввода  непосредственно  изменять  размеры

буфера нельзя.

     Так как строка ввода работает только с символьной информацией, то

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

символьную форму, а при получении информации из строки ввода - обратно

преобразовано в двоичную.

                            Метка (tLabel)

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

тавляет собой текст,  поясняющий смысл объекта.Кроме этого,  с помощью

метки можно довольно просто активизировать связанный с ней элемент.При

нажатии курсором мыши на поле метки будет  активизирован  связанный  с

ней элемент.

     Конструктор метки имеет вид :

     constructor tLabel.Init(var Bounds: tRect;

                               const AText: string; ALink: pView);

где  Bounds - размер поля метки;

     AText - текст метки;

     ALink - указатель на объект, с которым связана метка.

     Метка располагается либо над объектом,  либо слева от него.Высота

поля метки равна единице.Если текст метки состоит из цифр и  латинских

букв, то  можно  выделить  одну  букву  и поместить ее между символами

~~.Такая буква на экране будет выделена особым цветом, а нажав клавишу

с этим символом, можно активизировать данный элемент.

                               Протокол

     Протокол (тип tHistory) всегда связан со строкой ввода и предназ-

начен для  сохранения  в своем буфере вводимой в строку ввода информа-

ции.Для вызова ранее набираемой информации следует,  находясь в строке

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

вишу мыши, либо нажать клавишу Down.В результате откроется окно прото-

кола, содержащее  вводимые  ранее строки в данную строку ввода.Следует

выбрать интересующую строку (клавиша мыши или клавиши Up и Down).Далее

дважды нажать клавишу мыши или нажать Enter.

     Протокол инициализируется при помощи метода Init :

     constructor tHistory.Init(var Bounds: tRect;

                             ALink: pInputLine; AHistoryID: Word);

где  Bounds - поле для размещения пиктограммы протокола;

     ALink - указатель на строку ввода, с которым связан протокол;

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

протокола.

     Обычно протокол размещается за строкой ввода,  к которой он отно-

сится.Ширина поля должна равняться двум, высота - единице.

  Селективный (тип  tRadioButtons)  и триггерный ( тип tCheckBoxes)

                                списки

     Селективный и триггерный списки очень похожи,  так как у них есть

общий предок (tCluster), заключающий в себе общие свойства.

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

списка.Количество элементов ограничено числом 65536.

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

тов (или ни одного),  однако при стандартном использовании число  эле-

ментов этого списка ограничено 16-ю.

     Оба списка инициализируются одним методом Init объекта tCluster :

     constructor tСluster.Init(var Bounds: tRect;

                                               AStrings: pSItem);

где  Bounds - поле, выделяемое под образ списка;

     AStrings - указатель на список информационных строк.

     Чтобы выбрать элемент списка, можно воспользоваться мышью, подве-

дя курсор к соответствующей строке и нажав клавишу,  либо клавиатурой,

используя клавиши направления.В триггерном  списке  при  использовании

клавиш направления  следует  завершить  выбор элемента списка нажатием

пробела.

     В строке  символов каждого элемента списка можно выделить латинс-

кую букву или цифру, поместив ее между ~~.Она будет выделена на экране

особым цветом, и можно выбрать соответствующий элемент списка нажатием

клавиши клавиатуры с этим символом.

                         Кнопка (тип tButton)

     Кнопка позволяет выбрать команду, которая с ней связана.При выбо-

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

     Кнопка может иметь флаги,  находящиеся в параметре Flags при ини-

циализации :

     0-й бит (bfDefault) - кнопка, выбираемая по умолчанию.

     1-й бит (bfLeftJust) - текст кнопки выравнивается  по  ее  левому

             краю ( при отсутствии флага текст центрируется).

     2-й бит (bfBroadcast) - кнопка формирует сообщение вместо команды.

     3-й бит (bfGrabFocus)  - фокусирование кнопки при ее активизации

Страницы: 1, 2, 3, 4, 5


на тему рефераты
НОВОСТИ на тему рефераты
на тему рефераты
ВХОД на тему рефераты
Логин:
Пароль:
регистрация
забыли пароль?

на тему рефераты    
на тему рефераты
ТЕГИ на тему рефераты

Рефераты бесплатно, реферат бесплатно, курсовые работы, реферат, доклады, рефераты, рефераты скачать, рефераты на тему, сочинения, курсовые, дипломы, научные работы и многое другое.


Copyright © 2012 г.
При использовании материалов - ссылка на сайт обязательна.