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