Смекни!
smekni.com

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

мышью.

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

constructor tButton.Init(var Bounds: tRect;

ATitle: tTitleStr; ACommand:Word;AFlags:Byte);

где Bounds - поле, выделяемое под кнопку;

ATitle - текст, размещаемый на кнопке;

ACommand - код команды, связанной с кнопкой;

AFlags - задаваемые флаги кнопки.

Выделяемое под кнопку поле должно быть достаточных размеров,

чтобы в нем отобразилась вся кнопка с текстом и ее тень.Поэтому высоту

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

текста.

Выбрать кнопку можно с помощью мыши, подведя курсор и нажимая на

клавишу, либо с помощью клавиши Tab, а затем клавиши Enter.При выборе

кнопки она формирует событие-команду с кодом команды, который был за-

дан кнопке.В качестве параметра кнопка передает указатель на себя.

Статический (tStaticText) и параметрический (tParamText) тексты

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

различной поясняющей информации.

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

constructor tStaticText.Init(var Bounds: tRect;

const AText: String);

где Bounds - поле, выделяемое под статический текст;

AText - размещаемый текст.

Поле, выделяемое под статический текст, должно быть достаточных

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

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

внутри слов.

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

текст, позволяющий модифицировать выводимый текст в зависимости от за-

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

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

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

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

constructor tParamText.Init(var Bounds: tRect;

const AText: string; AParamCount: Integer);

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

AText - исходный текст со спецификациями параметров;

AParamCount - число параметров текста.

Списки строк

Списки строк в диалоговом окне напоминают поле скроллинга и его

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

списков.

Список строк (тип tListViewer) является абстрактным объектом, из

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

ретным списком информации (вертикальный и горизонтальный скроллинг).

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

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

коллекции строк (только вертикальный скроллинг).

Инициализируется список коллекции строк с помощью конструктора

Init :

constructor tListBox.Init(var Bounds: tRect;

ANumCols: Word; AScrollBar: pScrollBar);

где Bounds - поле, выделенное под список;

ANumCols - число колонок, в которые выводятся строки;

AScrollBar - указатель на линейку вертикального скроллинга.

Стандартные окна

В Turbo Vision имеется большое количество стандартных окон, имею-

щих специальное назначение.Рассмотрим стандартные информационные ок-

на.Заголовок функции MessageBox имеет вид :

function MessageBox(const Msg: string; Params:

Pointer; AOptions: Word): Word;

где Msg - размещаемое в окне сообщение;

Params - указатель на параметры сообщения;

AOptions - флаги;

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

окна.

Функция формирует окно размером 40*60, в котором помещается сооб-

щение Msg, скорректированное параметрами, находящимися по адресу, оп-

ределяемому значением Params и набор кнопок, определяемый параметром

AOptions, который определяет также тип окна (его название).

СОЗДАНИЕ СТРОК СОСТОЯНИЯ

Строка состояния не является необходимым атрибутом.Однако ее ис-

пользование помогает пользователю проще работать с программой, так как

он может получить информацию о текущем состоянии программы и клавишах

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

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

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

мые меню и строкой состояния.

Строка состояния, отображающая клавиши быстрого управления

Каждый элемент строки состояния , содержащий информацию о конк-

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

ный тип-запись tStatusItem :

tStatusItem = record

Next: pStatusItem;

Text: pString;

KeyCode: Word;

Command: Word

end;

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

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

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

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

выбрать данный элемент строки состояния;

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

го элемента строки состояния.

Создать элемент строки состояния можно с помощью стандартной

функции NewStatusKey :

function NewStatusKey(const AText: string;

AKeyCode: Word; ACommand: Word; ANext:

pStatusItem); pStatusItem;

где AText - выводимый на экран текст;

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

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

ного элемента;

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

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

Сама строка состояния имеет стандартный тип-запись tStatusDef :

tStatusDef = recerd

Next: pStatusDef;

Min, Max: Word;

Items: pStatusItem;

end;

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

Min, Max - миним. и максим. границы диапазона параметра контекс-

тной помощи, для которого отображается именно эта строка состояния;

Items - указатель на первый элемент списка элементов.

Элементы строки состояния также как и строки состояния представ-

ляют собой линейный список.

Для создания строки состояния можно воспользоваться стандартной

функцией NewStatusDef :

function NewStatusDef(AMin, AMax: Word;

AItems: pStatusItem; ANext: pStatusDef): pStatusDef;

где ANext - указатель на следующую строку состояния;

AMin, AMax - миним. и максим. границы диапазона параметра контекс-

тной помощи, для которого отображается именно эта строка состояния;

AItems - указатель на первый элемент списка элементов.

В строке состояния также можно отразить информацию о состоянии

программы в конкретный момент времени (процесс, протекающий в програм-

ме и т.д.)Информация такого вида зависит от значения параметра кон-

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

мы.Вывести такую информацию можно с помощью метода Hint объекта

tStatusLine :

function tStatusLine(AHelpCtx : Word): string; virtual;

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

результат - строка символов, выводимая на экран.

ЦВЕТОВАЯ ПАЛИТРА TURBO VISION

Turbo Vision позволяет манипулировать цветом изображения объектов

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

ный в пакете, который охватывает расцвечивание всех стандартных объек-

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

мы, или создавать свою палитру.

Стандартная палитра

Все стандартные отображаемые объекты имеют свою цветовую палитру

- набор цветов для отдельных элементов этого объекта, а окна и диало-

говые окна - по три палитры.Учитывая структуру отображаемых объектов

программы и то, что все отображаемые объекты программы за исключением

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

группы, для каждого такого объекта палитра представляется строкой,

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

палитры данной группы.

Если в программе достаточно использовать цвета основной палитры

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

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

соответствующего объекта с помощью метода Draw :

procedure <отображаемый объект>.Draw; virtual;

который, в свою очередь, использует методы GetPallete :

function <отображаемый объект>.GetPallete:

pPallete; virtual;

определяющий указатель на конкретную палитру объекта, и GetColor :

function tView.GetColor(Color: Word): Word;

где Color - номер входа в палитру;

результат - атрибуты соответствующего цвета.

Изменение стандартной палитры

Если требуется изменить уже существующий цвет у всех использующих

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

ру.Для этого нужно либо внести изменения в исходный текст модуля App

(константа CAppColor) и перекомпилировать его, либо внести изменения

в метод GetPallete объекта tProgram.

Второй вариант - когда нужно изменить цвета у какого-нибудь объ-

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

мыми цветами.В этом случае можно изменить соответствующим образом

константу, определяющую палитру у метода GetPallete.

Если необходимо изменить цвета конкретного объекта, а требуемого

сочетания цветов у его владельца нет, то следует дополнить основную

палитру программы новыми элементами, соответствующими требуемым цве-

там.Так как основная палитра исходно имеет 127 элементов, то примерно

столько же можно к ней добавить в случае необходимости.После этого

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

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

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

зоваться средствами модуля ColorSel.

НЕОТОБРАЖАЕМЫЕ ОБЪЕКТЫ TURBO VISION

Помимо отображаемых, в Turbo Vision имеется ряд неотображаемых

объектов, предназначенных для выполнения действий, не связанных непос-

редственно с представлением информации на экране, в частности проверки

вводимой информации или размещения в них той или иной информации.

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

информации, коллекции, потоки и ресурсы.Все эти объекты - потомки объ-