Смекни!
smekni.com

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

Текстовый элемент для пассивного терминала (тип 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) - кнопка формирует сообщение вместо команды.