ГЛАВА 14. ГЛОБАЛЬНЫЕ ССЫЛКИ.
Эта глава описывает все элементы Turbo Vision, которые не
являются частью иерархии стандартных объектов Turbo Vision. Все
стандартные объекты описаны в главе 13.
Элементы этой главы включают типы, константы, переменные,
процедуры и функции, определенные в модулях Turbo Vision. Типичный
элемент главы выглядит так:
Процедура Sample Модуль
=================================================================
Объявление procedure Sample(AParameter);
Функция Sample выполняет ряд полезных функций
с параметром, AParameter.
См. также Функция Example
Процедура Abstract Objects
=================================================================
Объявление procedure Abstract;
Функция Вызов этой процедуры завершает программу с ошибкой
времени выполнения 211. При реализации абстрактных
типов объекта, используйте вызовы Abstract в тех
виртуальных методах, которые должны быть перекрыты в
порожденных типах. Это предотвратит любые попытки
использования экземпляров абстрактного типа.
См. также "Абстрактные методы" в главе 3.
Переменная Application App
=================================================================
Объявление Application: PApplicaton = nil;
Функция Переменная Application устанавливается в @Self в
начале TProgram.Init (вызывается в TApplication.Init)
и очищается в nil в конце TProgram.Done (вызывается в
TApplication.Done). Поэтому, во время выполнения
программы на Turbo Vision, Application указывает на
объект-программу.
См. также TProgram.Init
Переменная AppPalette App
=================================================================
Объявление AppPalette: Integer = apColor;
Функция Выбирает одну из 3 доступных в программе палитр
(apColor, apBlackWhite, apMonochrome). AppPalette
инициализируется TProgram.InitScreen в зависимости от
текущего режима экрана и используется
TProgram.GetPalette для возврата палитры. Вы можете
перекрыть TProgram.InitScreen, чтобы изменить выбор
палитры по умолчанию.
См. также TProgram.InitScreen, константы apXXXX
Константы apXXXX App
=================================================================
Значения Определены следующие константы палитры:
Таблица 14.1. Константы палитры.
------------------------------------------------------------
Константа Значение Назначение
------------------------------------------------------------
apColor 0 Палитра для цветного монитора
apBlackWhite 1 Палитра для LCD монитора
apMonochrome 2 Палитра для монохромного монитора
------------------------------------------------------------
Функция Константы, начинающиеся с ap, используются для
указания, с какой из 3 стандартных палитр будет
работать программа на Turbo Vision. Три палитры
используются для цветного, черно-белого и
монохромного дисплеев.
Процедура AssignDevice TextView
=================================================================
Объявление procedure AssignDevice(var T: Text;
Screen: PTextDevice);
Функция Связывает текстовый файл с TTextDevice. AssignDevice
работает аналогично стандартной процедуре Assign за
исключением того, что указывается не имя файла.
Вместо этого, текстовый файл связывается с
TTextDevice данным в Screen (запоминая Screen в
первых 4 байтах поля UserData в TextRec(T).
Последовательность операций В/В для текстового файла
будет читать и писать из TTextDevice, используя
виртуальные методы StrRead и StrWrite. Поскольку
TTextDevice это абстрактный тип, параметр Screen
обычно указывает на образец TTerminal, который
реализует полную функциональность видимого элемента
TTY подобного скроллинга.
См. также TTextDevice; TextRec
Константы bfXXXX Dialogs
=================================================================
Значения Определены слудующие флаги кнопки:
Таблица 14.2.
------------------------------------------------------------
Константа Значение Назначение
------------------------------------------------------------
bfNormal $00 Нормальная кнопка
bfDefault $01 Кнопка по умолчанию
bfLeftJust @02 Метка кнопки выровнена влево
------------------------------------------------------------
Функция Комбинация этих значений передается в TButton.Init
для определения вновь созданного стиля кнопки.
bfNormal указывает на нормальную не умалчиваемую
кнопку. bfDefault указывает что кнопка будет кнопкой
по умолчанию. Обязанность программиста, обеспечить
чтобы кнопка была единственной умалчиваемой кнопкой в
TGroup. Значение bfLeftJust может быть добавлено к
bfDefault или bfNormal и воздействует на позицию
отображаемого текста внутри кнопки: если очищено, то
метка центрируется; если установлено, то метка
выравнивается влево.
См. также TButton.Flags, TButton.MakeDefault, TButton.Draw
Переменная ButtonCount Drivers
=================================================================
Объявление ButtonCount: Byte = 0;
Функция ButtonCount хранит число кнопок мышки или 0, если
мышка не инсталлирована. Вы можете использовать эту
переменную для определения доступна ли поддержка
мышки. Значение устанавливается в иницилизационном
коде Drivers и не может быть изменено.
Переменная CheckSnow Drivers
=================================================================
Объявление CheckSnow: Boolean;
Функция CheckSnow выполняет функцию одноименного флага
стандартного модуля Turbo Pascal - Crt. Проверка
снега, замедляющая вывод на экран, требуется только
для некоторых старых адаптеров CGA.
См. также InitVideo
Процедура ClearHistory HistList
=================================================================
Объявление procedure ClearHistory;
Функция Удаляет все строки из всех списков истории.
Процедура ClearScreen Drivers
=================================================================
Объявление procedure ClearScreen;
Функция Очищает экран. ClearScreen предполагает, что вначале
был вызван InitVideo. Вам редко потребуется
использовать эту процедуру, как это объяснено в
описанни InitVideo.
См. также InitVideo
Константы cmXXXX Views
=================================================================
Функция Эти константы представляют предопределенные
команды Turbo Vision. Они передаются в поле
TEvent.Command событий evMessage(evCommand и
evBroadcast) и заставляют методы HandleEvent
стандартных объектов Turbo Vision выполнять различные
задачи.
Turbo Vision резервирует значения констант от 0 до 99
и от 256 до 999 для своих целей. Обработчики событий
стандартных объектов Turbo Vision реагируют на эти
предопределенные константы. Прграммисты могут
определить свои собственные константы в диапазонах от
100 до 255 и от 1,000 до 65,535 без конфликтов с
предопределенными командами.
Значения Следующие стандартные команды определены в Turbo
Vision и используются стандартными объектами Turbo
Vision:
Таблица 14.3. Коды стандартных команд.
------------------------------------------------------------------
Команда Значение Назначение
------------------------------------------------------------------
cmValid 0 Передается в TView.Valid для проверки вновь
созданных образцов видимых элементов
cmQuit 1 Заставляет TProgram.HandleEvent вызывать EndModal
(cmQuit), завершая программу. Строка статуса или
одно из меню обычно содержат элемент, который
переводит kbAltX и cmQuit.
cmError 2 Не обрабатывается никаким объектом. Может быть
использована для представления нереализованных или
неподдерживаемых команд.
cmMenu 3 Заставляет TMenuView.HandleEvent вызывать ExecView
для процесса выбора меню, в результате чего может
быть сгенерирована новая команда с помощью
PutEvent.
cmClose 4 Обрабатывается TWindow.HandleEvent, если поле
InfoPtr записи события установлено в nil или
указывает на окно. Если окно модальное, то
посредством PutEvent генерируется evCommand со
значением из cmCancel. Если окно немодальное, то
то вызывается метод Close при условии что окно
поддерживает закрытие (смотри флаг wfClose).
Отметка на закрывающей кнопке окна генерирует
событие evCommand с Command из cmClose и InfoPtr,
который указывает на окно. Строка статуса или одно
из меню обычно содержит элемент, который переводит
kbAltF3 в cmClose.
cmZoom 5 Заставляет TWindow.HandleEvent вызывать
TWindow.Zoom, если окно поддерживает
масштабирование (смотри флаг wfZoom) и если поле
InfoPtr записи события установлено в nil или
указывает на окно. Отметка на кнопке
масштабирования окна или двойная отметка на полосе
заголовка окна генерирует событие evCommand с
Command из cmZoom и InfoPtr, который указывает на
окно. Строка статуса или одно из меню обычно
содержит элемент, который переводит kbF5 в cmZoom.
cmResize 6 Заставляет TWindow.HandleEvent вызывать
TView.DragView, если окно поддерживает изменение
размеров (смотри флаги wfMove и wfGrow). Строка
статуса или одно из меню обычно содержит элемент,
который переводит kbCtrlF5 в cmResize.
cmNext 7 Заставляет TDeskTop.HandleEvent сдвигать последнее
окно на панели экрана на передний план. Строка
статуса или одно из меню обычно содержит элемент,
который переводит kbF6 в cmNext.
cmPrev 8 Заставляет TDeskTop.HandleEvent сдвигать первое
окно на панели экрана на самый задний план. Строка
статуса или одно из меню обычно содержит элемент,
который переводит kbShiftF6 в cmPrev.
------------------------------------------------------------------
Следующие стандартные команды используются для
определения поведения по умолчанию объектов
диалогового окна:
Таблица 14.4. Стандартные команды диалогового окна.
------------------------------------------------------------------
Команда Значение Назначение
------------------------------------------------------------------
cmOK 10 Была нажата кнопка OK
cmCancel 11 Диалоговое окно было отменено кнопкой Cancel,
закрывающей кнопкой или клавишей Enter
cmYes 12 Была нажата кнопка Yes
cmNo 13 Была нажата кнопка No
cmDefault 14 Была нажата кнопка по умолчанию
------------------------------------------------------------------
События с командами cmOK, cmCancel, cmYes или cmNo
завершают модальный диалог TDialog.HandleEvent и
возвращают значение команды (вызывая EndModal).
Модальный диалог обычно содержит по крайней мере один
TButton с одним из этих значений команд.
TDialog.HandleEvent будет генерировать
команду-событие cmCancel в ответ на событие от
клавиатуры kbEsc.
Команда cmDefault заставляет TButton.HandleEvent для
умалчиваемой кнопки (см. флаг bfDefault) симулировать
нажатие кнопки. TDialog.HandleEvent будет
генерировать событие команды cmDefault в ответ на
событие клавиатуры kbEnter.
Определены следующие стандартные команды для
использования стандартными видимыми элементами:
Таблица 14.5. Стандартные команды видимых элементов.
------------------------------------------------------------------
Команда Значение Назначение
------------------------------------------------------------------
cmReceivedFocus 50 TView.SetState использует функцию Message
cmReleasedFocus 51 для передачи события evBroadcast с одним из
этих значений в свой TView.Owner, как
только sfFocused изменяется. InfoPtr
события указывает на сам видимый элемент.
Это информирует любой равный видимый
элемент, что видимый элемент получил или
освободил активность и что они должны
корректировать себя соответственно. Объект
Tlabel, например, реагирует на эти команды,
включая или выключая свою подсветку.
cmCommandSetChanged 52 Метод TProgram.Idle генерирует событие
evBroadcast как только он обнаружит
изменение в текущем наборе команд (вызывая
методы EnableCommands, DesableCommands или
SetCommands для TView). Общее сообщение
cmCommandSetChanged посылается в
HandleEvent каждого видимого элемента
иерархии (если только их TView.EventMask
специфически не маскируют события
evBroadcast). Если изменения в наборе
команд затрагивают появление видимого
элемента, он должен реагировать на
cmCommandSetChanged своей перерисовкой.
Объекты TBut ton, TMenuView и TStatusLine,
например, реагируют на эту команду,
перерисовывая себя.
cmScrollBarChanged 53 TScrollBar использует функцию Message для
cmScrollBarClicked 54 передачи события evBroadcast с одним из
этих значений в свой TView.Owner, как
только мышка отмечает на полосе скроллинга.
InfoPtr события указывает на полосу
скроллинга. Общие сообщения создаются
любыми равными видимыми элементами,
управляемыми полосой скроллинга, такими как
объекты TScroller и TListViewer.
cmSelectWindowNum 55 Заставляет TWiondow.HandleEvent вызывать
TView.Select, если InfoInt записи события
соответствует TWindow.Number.
TProgram.HandleEvent реагирует на события
от клавиатуры от Alt-1 до Alt-9 общим
сообщением cmSelectWindowNum с InfoInt от 1
до 9.
cmRecordHistory 60 Заставляет объект THistory "записывать"
текущее содержимое объекта TInputLine.
TButton посылает общее сообщение
cmRecordHistory своему владельцу, когда он
выбран, в результате, заставляя
"записывать" все объекты THistory в
диалоговом окне.
------------------------------------------------------------------
См. также TView.HandleEvent, TCommandSet
Константы coXXXX Objects
=================================================================
Функция Константы coXXXX передаются как параметр Code в
метод TColection.Error, когда TCollection
обнаруживает ошибку во время операции.
Значения Следующие стандартные коды ошибок определены для всех
коллекций Turbo Vision:
Таблица 14.6. Коды ошибок коллекции.
------------------------------------------------------------------
Код ошибки Значение Назначение
------------------------------------------------------------------
coIndexError -1 Индекс вышел за диапазон. Параметр Info
передает в метод Error содержимое неверного
индекса.
coOverflow -2 Переполнение коллекции. TCollection.SetLimit
недостаточно для расширения коллекции.
Параметр Info передает в метод Error
запрашиваемый размер коллекции.
------------------------------------------------------------------
См. также TCollection
Функция CStrLen Drivers
=================================================================
Объявление function CStrLen(S: String): Integer;
Функция Возвращает длину строки S, где S это управляющая
строка, использующая символы "~" для указания
символов короткого набора. "~" исключаются из длины
строки, поскольку они будут появляться на экране.
Например, для строки '~B~roccoly', CStrLen возвращает
8.
См. также MoveCStr
Переменная CtrlBreakHit Drivers
=================================================================
Объявление CtrlBreakHit: Boolean = False;
Функция Драйвер обработки прерываний от клавиатуры Turbo
Vision всегда устанавливает ее в True, когда нажата
Ctrl-Break. Это позволяет программам на Turbo Vision
перехватывать и реагировать на Ctrl-Break. Флаг может
быть очищен в любое время установкой его в False.
См. также SaveCtrlBreak
Функция CtrlToArrow Drivers
=================================================================
Объявление function CtrlToArrow(KeyCode: Word): Word;
Функция Преобразует управляющие WordStar-совместимые коды
клавиатуры в соответствующие коды клавиш курсора.
Если младший байт KeyCode соответствует одному из
значений управляющих клавиш в таблице 14.7,
результатом будет соответствующая константа kbXXXX.
В противном случае KeyCode возвращается неизмененным.
Таблица 14.7. Преобразование управляющих клавиш.
------------------------------------------------------------
Клавиша Lo(KeyCode) Результат
------------------------------------------------------------
Ctrl-A $01 kbHome
Ctrl-D $04 kbRight
Ctrl-E $05 kbUp
Ctrl-F $06 kbEnd
Ctrl-G $07 kbDel
Ctrl-S $13 kbLeft
Ctrl-V $16 kbIns
Ctrl-X $18 kbDown
------------------------------------------------------------
Переменная CursorLines Drivers
=================================================================
Объявление CursorLines: Word;
Функция Уставливает начальную и конечную строки курсора
с помощью InitVideo. Формат предполагает функцию 1
прерывания BIOS $10 для установки типа курсора.
См. также InitVideo, TView.ShowCursor, TView.HideCursor,
TView.BlockCursor, Tview.NormalCursor
Переменная DeskTop App
=================================================================
Объявление DeskTop: PDeskTop = nil;
Функция Сохраняет указатель на TDeskTop программы. Переменная
DeskTop инициализируется TProgram.InitDeskTop,
которая вызывается TProgram.Init. Окна и диалоговые
окна обычно вставляются (TGroup.Insert) или
выполняются (TGroup.ExecView) на DeskTop.
Процедура DisposeMenu Menus
=================================================================
Объявление procedure DisposeMenu(Menu: PMenu);
Функция Освобождает все элементы указанных меню (и все их
подменю).
См. также Тип TMenu
Процедура DisposeStr Objects
=================================================================
Объявление procedure DisposeStr(P:String);
Функция Освобождает строки, распределенные в куче с помощью
функции NewStr.
См. также NewStr
Константы dmXXXX Views
=================================================================
Значения Биты DragMode определены так:
Рис. 14.1. Флаги режима Drag.
+--- DragMode --+
msb lsb
+-+-+-+----------- dmLimitAll = $F0
+++++++++=+=+=+=+
+++++++++=+=+++++
| | | | | +--- dmDragMove = $01
| | | | +----- dmDragGrow = $02
| | | +----------- dmLimitLoX = $10
| | +------------- dmLimitLoY = $20
| +--------------- dmLimitHiX = $40
+----------------- dmLimitHiY = $80
Функция Эти константы используются для компоновки параметра
Mode метода TView.DragView. Они указывают разрешены
ли движение и/или изменение размера и как
интерпретировать параметр Limits.
Константы определены так:
Таблица 14.8. Константы режима Drag.
------------------------------------------------------------
Константа Назначение
------------------------------------------------------------
dmDragMove Позволяет видимому элементу перемещаться.
dmDragGrow Позволяет видимому элементу изменять размер.
dmLimitLoX Левая сторона видимого элемента не может
выходить за Limits.
dmLimitLoY Верхняя сторона видимого элемента не может
выходить за Limits.
dmLimitHiX Правая сторона видимого элемента не может
выходить за Limits.
dmLimitHiY Нижняя сторона видимого элемента не может
выходить за Limits.
dmLimitAll Никакая часть видимого элемента не может
выходить за Limits.
------------------------------------------------------------
Процедура DoneEvents Drivers
=================================================================
Объявление procedure DoneEvents;
Функция Завершает монитор событий Turbo Vision, отключая
обработчик прерываний мышки. Вызывается автоматически
при вызове TApplication.Done.
См. также TApplication.Done, InitEvents
Процедура DoneHistory Drivers
=================================================================
Объявление procedure DoneHistory;
Функция Освобождает блок истории, распределенный InitHistory.
Вызывается автоматически при вызове
TApplication.Done.
См. также Процедура InitHistory, TApplication.Done
Процедура DoneMemory Memory
=================================================================
Объявление procedure DoneMemory;
Функция Завершает монитор памяти Turbo Vision, освобождая все
буфера, распределенные через GetBufMem. Вызывается
автоматически при вызове TApplication.Done.
См. также TApplication.Done, InitMemory
Процедура DoneSysError Drivers
=================================================================
Объявление procedure DoneSysError;
Функция Завершает обработчик системных ошибок Turbo Vision,
восстанавливая вектора прерываний 09H, 1BH, 21H, 23H,
24H и восстанавливая состояние Ctrl-Break в DOS.
Вызывается автоматически при вызове
TApplication.Done.
См. также TApplication.Done, InitSysError
Процедура DoneVideo Drivers
=================================================================
Объявление procedure DoneVideo;
Функция Завершает монитор экрана Turbo Vision, восстанавливая
начальный режим экрана (StartupMode), очищая экран и
восстанавливая курсор Вызывается автоматически при
вызове TApplication.Done.
См. также TApplication.Done, InitVideo,
переменная StartupMode
Переменная DoubleDelay Drivers
=================================================================
Объявление DoubleDelay: Word = 8;
Функция Определяет временной интевал (в 1/18.2 секундах)
между нажатиями кнопки мышки для порядка различия
двойного нажатия и двух отдельных нажатий.
Используется GetMouseEvent для генерации события
Double, если нажатия произошли в этом временном
интервале.
См. также TEvent.Double, GetMouseEvent
Переменная EmsCurHandle Objects
=================================================================
Объявление EmsCurhandle: Word = $FFFF;
Функция Содержит текущий обработчик EMS, отображенный
TEmsStream в нулевую физическую страницу EMS.
TEmsStream избегает дорогих вызовов переотображения
EMS подкачкой состояния EMS. Если Ваша программа
использует EMS для других целей, установите
EmsCurHandle и EmsCurPage в $FFFF перед
использованием TEmsStream - это будет вынуждать
TEmsStream восстанавливать свое отображение.
См. также TEmsStream.Handle
Переменная EmsCurPage Objects
=================================================================
Объявление EmsCurpage: Word = $FFFF;
Функция Содержит текущий номер логической страницы EMS,
отображенной TEmsStream в нулевую физическую страницу
EMS. TEmsStream избегает дорогих вызовов
переотображения EMS подкачкой состояния EMS. Если
Ваша программа использует EMS для других целей,
установите EmsCurHandle и EmsCurPage в $FFFF перед
использованием TEmsStream - это будет вынуждать
TEmsStream восстанавливать свое отображение.
См. также TEmsStream.Page
Константы evXXXX Drivers
=================================================================
Функция Эти мнемоники обозначают типы событий для
обработчиков событий Turbo Vision. Константы evXXXX
используются в нескольких местах: в поле What записи
события, в поле EventMask видимого элемента и в
переменных PositionalEvents и FocusedEvents.
Значения
Следующие значения флагов событий обозначают
стандартные типы событий:
Таблица 14.9. Флаги стандартных событий.
------------------------------------------------------------
Константа Значение Назначение
------------------------------------------------------------
evMouseDown $0001 Кнопка мышки нажата
evMouseUp $0002 Кнопка мышки отпущена
evMouseMove $0004 Мышка изменила положение
evMouseAuto $0008 Периодическое событие до тех пор, пока
нажата кнопка мышки
evKeyDown $0010 Клавиша нажата
evCommand $0100 Событие-команда
evBroadcast $0200 Событие-общее сообщение
------------------------------------------------------------
Следующие константы могут использоваться для
маскирования типов событий:
Таблица 14.10. Маски стандартных событий.
------------------------------------------------------------
Константа Значение Назначение
------------------------------------------------------------
evNothing $0000 Событие уже обработано
evMouse $000F Событие от мышки
evKeyboard $0010 Событие от клавиатуры
evMessage $FF00 Событие-сообщение (команда, общее
сообщение или определено пользователем).
------------------------------------------------------------
Биты маски события определены так:
Рис. 14.2. Отображение битов маски события.
+------ Флаги события ---------+
msb lsb
+-+-+-+-+-+-+-+------------------- evMessage = $FF00
| | | | | | | | +----------- evKeyboard = $0010
| | | | | | | | | +-+-+-+--- evMouse = $000F
+++++++++++++++++=+=+=+++++++++++
+=+=+=+=+=+=+++++=+=+=+++++++++++
| | | | | | +--- evMouseDown = $0001
| | | | | +----- evMouseUp = $0002
| | | | +------- evMouseMove = $0004
| | | +--------- evMouseAuto = $0008
| | +----------- evKeyDown = $0010
| +------------------- evCommand = $0100
+--------------------- evBroadcast = $0200
Маски стандартных событий могут быть использованы для
быстрого определения, принадлежит ли событие
конкретному семейству событий. Например,
if Event.What and evMouse <> 0 then DoMouseEvent;
См. также TEvent, TView.EventMask, GetKeyEvent, GetMouseEvent,
методы HandleEvent, PositionalEvents, FocusedEvents.
Тип FNameStr Objects
=================================================================
Объявление FNameStr = String[79];
Функция Строка, содержащая имя файла DOS.
Переменная FocusedEvents Views
=================================================================
Оъявление FocusedEvents: Word = evKeyboard + evCommand;
Функция Определяет классы событий как сфокусированные
события. Переменные FocusedEvents и PositionalEvents
используются TGroup.HandleEvent для определения, как
соотносятся события к подэлементам группы. Если класс
события не содержится в FocusedEvents или
PositionalEvents, то оно интерпретируется как общее
событие.
См. также Переменные PositionalEvents, TGroup.HandleEvent,
TEvent, константы evXXXX.
Процедура FormatStr Drivers
=================================================================
Объявление procedure FormatStr(var Result: String;
Format: String; var Params);
Функция Процедура форматирования строки, которая работает
подобно функции языка Си vsprintf. Format включает
спецификаторы формата, а Params содержит список
параметров. FormatStr выполняет форматированный вывод
строки в Result.
Параметр Format может содержать любое число
спецификаторов формата, для отображения параметров в
Params. Формат спецификаторов - %[-][nnn]X, где
- % указывает начало спецификатора формата;
- [-] необязательный знак минуса, указывающий, что
параметр будет выровнен влево (по умолчанию параметры
при отображении выравниваются вправо);
- [nnn] - необязательный десятичный спецификатор
длины в диапазоне 0-255 (0 указывает на отсутствие
длины, а не нуль означает, что выводится поле в nnn
символов);
- Х - символ формата:
- 's' означает, что параметр указывает на строку;
- 'd' означает десятичное представление LongInt
параметра;
- 'c' означает, что младший байт параметра -
символ;
- 'x' означает шестнадцатиричное представление
параметра LongInt.
- '#'устанавливает индекс параметра в nnn.
Например, если параметр указывает на строку,
содержащую 'spiny', следующая таблица показывает
спецификаторы и их результаты при печати:
Таблица 14.11. Спецификаторы формата и их результаты.
-----------------------------------------
Спецификатор Результат
-----------------------------------------
%6s ' spiny'
%-6s 'spiny'
%3s 'iny'
%-3s 'spi'
%06s '0spiny'
%-06s 'spiny0'
----------------------------------------
Params - это нетипированный var параметр, содержащий
параметры с соответствующимим спецификаторами формата
в Format. Params должен быть массивом из LongInt или
указателей или записью, содержащей LongInt или
указатели.
Например, для вывода строки сообщения об ошибке
Error in file [file name] at line [line number]
Вы должны послать следующую строку в Format:
'Error in file %s at line %d'.
Params должен содержать указатель на строку имени
файла и Longint, представляющая число строк в файле.
Это может быть сделано двумя способами: в массиве или
в записи.
Следующий пример показывает два типа объявлений и
присвоений переменных, оба создают допустимые
значения, передаваемые как Params в FormatStr.
type
ErrMsgRec = record
FileName: PString;
LineNo: Longint;
end;
ErrMsgArray = array[01] of Longint;
const
TemplateMsg = 'Error in file %s at line %d';
var
MyFileName: FNameStr;
OopsRec: ErrMsgRec;
DarnArray: ErrMsgArray;
TestStr: String;
begin
MyFileName := 'WARTHOG.ASM';
with OopsRec do
begin
FileName := @MyFileName;
LineTo := 42;
end;
FormatStr(TestStr, TemplateMsg, OopsRec);
Writeln(TestStr);
DarnArray[0] := Longint(@MyFileName);
DarnArray[1] := 24;
FormatStr(TestStr, TemplateMsg, DarnArray);
Writeln(TestStr);
end;
См. также Функцию SystemError, объект TParamText.
Процедура FreeBufMem Memory
=================================================================
Объявление procedure FreeBufMem(P: Pointer);
Функция Освобождает кэш-буфер, ссылаемый указателем Р.
См. также GetBufMem, DoneMemory.
Функция GetAltChar Drivers
=================================================================
Объявление function GetAltChar(KeyCode: Word): Char;
Функция Возвращает символ Ch, для которого Alt-Ch
вырабатывает двухбайтовый скан-код, данный в
аргументе KeyCode. Эта функция дает обратное
к GetAltCode отображение.
См. также GetAltCode.
Функция GetAltCode Drivers
=================================================================
Объявление function GetAltCode(Ch: Char): Word;
Функция Возвращает двухбайтовый скан-код, соответствующий
Alt-Ch. Эта функция делает обратное к GetAltChar
отображение.
См. также GetAltChar.
Процедура GetBufMem Memory
=================================================================
Объявление procedure GetBufMem(var P: Pointer; Size: Word);
Функция Распределяет кэш-буфер для Size байт и запоминает
указатель на него в Р. Если нет памяти для кэш-буфера
запрашиваемого размера, Р устанавливается в nil. Кэш-
буфер отличается от обычных блоков кучи
(распределяемых с помощью New, GetMem или MemAlloc),
в которых они могут размещаться или освобождаться
монитором памяти в любое время. Указатель,
передаваемый в GetBufMem, становится указателем на
кэш-буфер и он (и только он) корректируется, когда
буфер перемещается монитором памяти. Если монитор
памяти решает освободить буфер, он устанавливает этот
указатель в nil. Кэш-буфер может быть освобожден
через вызов FreeBufMem. Кэш-буфера будут занимать
любое нераспределенное пространство кучи между
HeapPtr и HeapEnd, включая область, установленную для
пула надежности программы.
Turbo Vision использует кэш-буфера для подкачки
содержимого объектов TGroup (таких, как окна,
диалоговые окна и панель экрана), как только эти
объекты устанавливают флаг ofBuffered - это
значительно повышает производительность операций
перерисовки.
См. также FreeBuffMem, InitMemory, TGroup.Draw.
Процедура GetKeyEvent Drivers
=================================================================
Объявление procedure GetKeyEvent(var Event: TEvent);
Функция Проверяет, доступно ли событие от клавиатуры вызовом
прерывания BIOS INT 16H. Если клавиша была нажата,
Event.What устанавливается в evKeyDown и
Event.KeyCode устанавливается в cкан-код клавиши. В
противном случае, Event.What устанавливается в
evNothing. GetKeyEvent вызывается из
TProgram.GetEvent.
См. также TProgramm.GetEvent, константы evXXXX, TView.HandleEvent.
Процедура GetMouseEvent Drivers
=================================================================
Объявление procedure GetMouseEvent(var Event: TEvent);
Функция Проверяет, доступно ли событие от мышки из очереди
событий от мышки, поддерживаемой обработчиком событий
Turbo Vision. Если происходит событие от мышки,
Event.What устанавливается в evMouseDown, evMouseUp,
evMouseMove или evMouseAuto; Event.Buttons
устанавливается в mbLeftButton или mbRightButton;
Event.Double устанавливается в True или False; Event.
Where устанавливается в позицию мышки в глобальных
координатах (соответствующих координатной системе
TApplication). Если события от мышки недоступны,
Event.What устанавливается в evNothing. GetMouseEvent
вызывается из TProgram.GetEvent.
См. также TProgram.GetEvent, события evXXXX, методы HandleEvent.
Константы gfXXXX Views
=================================================================
Функция Эти мнемоники используются для установки полей
GrowMode во всех объектах TView и порожденных. Биты,
установленные в GrowMode, определяют, как видимый
элемент будет изменяться в зависимости от изменений
размера его владельца.
Значения Биты GrowMode определены как:
Рис. 14.3. Биты режима Grow.
+--- GrowMode --+
msb lsb
+-+-+-+--- gfGrowAll = $0F
+=+=+=+=+++++++++
+++=+++++++++++++
+-+-+ | | | | +--- gfGrowLoX = $01
| | | | +----- gfGrowLoY = $02
Неопределены | | +------- gfGrowHiX = $04
| +--------- gfGrowHiY = $08
+----------- gfGrowRel = $10
Таблица 14.12. Определения флага режима Grow.
------------------------------------------------------------------
Константа Назначение
------------------------------------------------------------------
gfGrowLoX Если установлен, то левая сторона видимого элемента
будет находиться на одном расстоянии от правой
стороны владельца.
gfGrowLoY Если установлен, то верхняя сторона видимого элемента
будет находиться на одном расстоянии от нижней
стороны владельца.
gfGrowHiX Если установлен, то правая сторона видимого элемента
будет находиться на одном расстоянии от правой
стороны владельца.
gfGrowHiY Если установлен, то нижняя сторона видимого элемента
будет находиться на одном расстоянии от нижней
стороны владельца.
gfGrowAll Если установлен, то видимый элемент будет сдвигаться
вместе с правым нижним углом его владельца.
gfGrowRel Для использования с объектами TWindow, которые
находятся в панели экрана: видимый элемент будет
изменять размер относительно размера владельца. Окно
будет обрабатываться соответственно размеру
владельца, даже когда происходит переключение между
режимами 25 и 43/50 строк.
------------------------------------------------------------------
Заметим, что LowX= левая сторона; LowY = верхняя
сторона; HiX = правая сторона; HiY = нижняя сторона.
См. также TView.GrowMode
Константы hcXXXX Views
=================================================================
Значения Определены следующие константы контекста подсказки:
Таблица 14.13. Константы контекста подсказки.
-----------------------------------------
Константа Значение Назначение
-----------------------------------------
hcNoContext 0 Контекст не задан
hcDragging 1 Объект - перемещаем
-----------------------------------------
Функция Значение TView.HelpCtx по умолчанию - hcNoContext,
которое указывает, что для видимого элемента нет
контекста подсказки. TView.GetHelpCtx возвращает
hcDragging, как только видимый элемент становится
перемещаемым (это указывается состоянием флага
sfDragging).
Turbo Vision резервирует для контекста подсказки
значения от 0 до 999. Программисты могут определять
свои константы в диапазоне от 1,000 до 65,535.
См. также TView.HelpCtx, TStatusLine.Update.
Процедура HideMouse Drivers
=================================================================
Объявление procedure HideMouse;
Функция Курсор мышки изначально видим после вызова
InitEvents. HideMouse прячет мышку и увеличивает
внутренний "счетчик мышки" в драйвере мышки.
ShowMouse будет уменьшать этот счетчик и показывать
курсор мышки, когда счетчик становится равен 0. Таким
образом, вызовы HideMouse и ShowMouse могут быть
вложенными, но всегда должны быть сбалансированы.
См. также InitEvents, DoneEvents, ShowMouse
Переменная HiResScreen Drivers
=================================================================
Объявление HiResScreen: Boolean;
Функция Устанавливается в True с помощью InitVideo, если
экран поддерживает режим 43/50 строк (EGA/VGA); в
противном случае устанавливается в False.
См. также InitVideo
Процедура HistoryAdd HistList
=================================================================
Объявление procedure HistoryAdd(Id: Byte; var Str: String);
Функция Добавляет строку Str в список истории, указываемый с
помощью Id.
Переменная HistoryBlock HistList
=================================================================
Объявление HistoryBlock: Pointer = nil;
Функция Указывает на буфер, вызывающий блок истории и
используемый для хранения строк истории. Размер блока
определяется посредством HistorySize. Указатель
устанавливается в nil до тех пор пока не будет
установлен с помощью InitHistory. Его значение нельзя
изменить.
См. также процедуру InitHistory, переменную HistorySize.
Функция HistoryCount HistList
=================================================================
Объявление function HistoryCount(Id: Byte): Word;
Функция Возвращает количество строк в списке истории,
соответствующее номеру ID.
Переменная HistorySize HistList
=================================================================
Объявление HistorySize: Word = 1024;
Функция Задает размер блока истории, используемый
администратором списка истории для хранения значений,
введенных в строках ввода. Размер фиксируется
посредством InitHistory при запуске программы. По
умолчанию размер блока равен 1К, но может быть
изменен перед вызовом InitHistory. Значение нельзя
изменять после вызова InitHistory.
См. также процедуру InitHistory, переменную HistoryBlock.
Функция HistoryStr HistList
=================================================================
Объявление function HistoryStr(Id: Byte; Index: Integer): String;
Функция Возвращает Index строку в списке истории,
соответствующую номеру ID.
Переменная HistoryUsed HistList
=================================================================
Объявление HistoryUsed: Word = 0;
Функция Используется внутри администратором списка истории
для указания на смещение внутри блока истории. Это
значение нельзя изменить.
Процедура InitEvents Drivers
=================================================================
Объявление procedure InitEvents;
Функция Инициализирует монитор событий Turbo Vision,
подключая обработчик прерываний мышки и показывая
мышку. Вызывается автоматически TApplication.Init.
См. также DoneEvents.
Процедура InitHistory HistList
=================================================================
Объявление InitHistory;
Функция Вызывается с помощью TApplication.Init для
распределения блока памяти в куче, используемом
монитором списка истории. Размер блока определяется
переменной HistorySize. После вызова InitHistory
переменная HistoryBlock указывает на начало блока.
См. также TProgram.Init, процедуру DoneHistory.
Процедура InitMemory Memory
=================================================================
Объявление procedure InitMemory;
Функция Инициализирует монитор памяти Turbo Vision,
инсталлируя функцию объявления кучи в HeapError.
Вызывается автоматически посредством TApplication.Init.
См. также DoneMemory.
Процедура InitSysError Drivers
=================================================================
Объявление procedure InitSysError;
Функция Инициализирует обработчик системных ошибок Turbo
Vision, переопределяя вектора прерываний 09H,
1BH,21H, 23H, 24H и очищая состояние Ctrl-Break в
DOS. Вызывается автоматически посредством
TApplication.Init.
См. также DoneSysError.
Процедура InitVideo Drivers
=================================================================
Объявление procedure InitVideo;
Функция Инициализирует монитор экрана Turbo Vision. Сохраняет
текущий режим экрана в StartupMode и переключает
экран в режим, указанный в ScreenMode. Переменные
ScreenWidth, ScreenHeight, HiResScreen, CheckSnow,
ScreenBuffer и CursorLines корректируются
соответственно. Режим экрана позднее может быть
изменен использованием SetVideoMode. InitVideo
вызывается автоматически посредством
TApplication.Init.
См. также DoneVideo, SetVideoMode, smXXXX.
Константы kbXXXX Drivers
=================================================================
Функция Два множества констант, начинающихся с "kb" связаны с
клавиатурой.
Значения Следующие значения определяют состояние клавиатуры и
могут быть использованы при проверке регистров Shift
клавиатуры, которое запоминается в байте с абсолютным
адресом $40:$17. Например,
var
ShiftState: Byte absolute $40:$17;
.
if ShiftState and kbAltShift <> 0 then AltKeyDown;
Таблица 14.14. Состояние клавиатуры и маски Shift.
------------------------------------------------------------------
Константа Значение Назначение
------------------------------------------------------------------
kbRightShift $0001 Установлено, если правый Shift нажат
kbLeftShift $0002 Установлено, если левый Shift нажат
kbCtrlShift $0004 Установлено, если Ctrl нажат
kbAltShift $0008 Установлено, если Alt нажат
kbScrollState $0010 Установлено, если клавиатура в состоянии
ScrollLock
kbNumState $0020 Установлено, если клавиатура в состоянии
NumLock
kbCapsState $0040 Установлено, если клавиатура в состоянии
CapsLock
kbInsState $0080 Установлено, если клавиатура в состоянии
InsLock
------------------------------------------------------------------
Таблица 14.15. Коды Alt-буква.
-----------------------------------------------------------
Константа Значение Константа Значение
-----------------------------------------------------------
kbAltA $1E00 kbAltN $3100
kbAltB $3000 kbAltO $1800
kbAltC $2E00 kbAltP $1900
kbAltD $2000 kbAltQ $1000
kbAltE $1200 kbAltR $1300
kbAltF $2100 kbAltS $1F00
kbAltG $2200 kbAltT $1400
kbAltH $2300 kbAltU $1600
kbAltI $1700 kbAltV $2F00
kbAltJ $2400 kbAltW $1100
kbAltK $2500 kbAltX $2D00
kbAltL $2600 kbAltY $1500
kbAltM $3200 kbAltZ $2C00
-----------------------------------------------------------
Таблица 14.16. Коды специальных клавиш.
-----------------------------------------------------------
Константа Значение Константа Значение
-----------------------------------------------------------
kbAltEqual $8300 kbEnd $4F00
kbAltMinus $8200 kbEnter $1C0D
kbAltSpace $0200 kbEsc $011B
kbBack $0E08 kbGrayMinus $4A2D
kbCtrlBack $0E7F kbHome $4700
kbCtrlDel $0600 kbIns $5200
kbCtrlEnd $7500 kbLeft $4B00
kbCtrlEnter $1C0A kbNoKey $0000
kbCtrlHome $7700 kbPgDn $5100
kbCtrlIns $0400 kbPgUp $4900
kbCtrlLeft $7300 kbrayPlus $4E2B
kbCtrlPgDn $7600 kbRight $4D00
kbCtrlPgUp $8400 kbShiftDel $0700
kbCtrlPrtSc $7200 kbShiftIns $0500
kbCtrlRight $7400 kbShiftTab $0F00
kbDel $5300 kbTab $0F09
kbDown $5000 kbUp $4800
-----------------------------------------------------------
Таблица 14.17. Коды Alt-число.
-----------------------------------------------------------
Константа Значение Константа Значение
-----------------------------------------------------------
kbAlt1 $7800 kbAlt6 $7D00
kbAlt2 $7900 kbAlt7 $7E00
kbAlt3 $7A00 kbAlt8 $7F00
kbAlt4 $7B00 kbAlt9 $8000
kbAlt5 $7C00 kbAlt0 $8100
-----------------------------------------------------------
Таблица 14.18. Коды функциональных клавиш.
-----------------------------------------------------------
Константа Значение Константа Значение
-----------------------------------------------------------
kbF1 $3B00 kbF6 $4000
kbF2 $3C00 kbF7 $4100
kbF3 $3D00 kbF8 $4200
kbF4 $3E00 kbF9 $4300
kbF5 $3F00 kbF0 $4400
----------------------------------------------------------
Таблица 14.19. Коды Shift-функциональная клавиша.
-----------------------------------------------------------
Константа Значение Константа Значение
-----------------------------------------------------------
kbShiftF1 $5400 kbShiftF6 $5900
kbShiftF2 $5500 kbShiftF7 $5A00
kbShiftF3 $5600 kbShiftF8 $5B00
kbShiftF4 $5700 kbShiftF9 $5C00
kbShiftF5 $5800 kbShiftF0 $5D00
-----------------------------------------------------------
Таблица 14.20. Коды Ctrl-функциональная клавиша.
-----------------------------------------------------------
Константа Значение Константа Значение
-----------------------------------------------------------
kbCtrlF1 $5E00 kbCtrlF6 $6300
kbCtrlF2 $5F00 kbCtrlF7 $6400
kbCtrlF3 $6000 kbCtrlF8 $6500
kbCtrlF4 $6100 kbCtrlF9 $6600
kbCtrlF5 $6200 kbCtrlF0 $6700
-----------------------------------------------------------
Таблица 14.21. Коды Alt-функциональная клавиша.
-----------------------------------------------------------
Константа Значение Константа Значение
-----------------------------------------------------------
kbAltF1 $6800 kbAltF6 $6D00
kbAltF2 $6900 kbAltF7 $6E00
kbAltF3 $6A00 kbAltF8 $6F00
kbAltF4 $6B00 kbAltF9 $7000
kbAltF5 $6C00 kbAltF0 $7100
-----------------------------------------------------------
См. также evKeyDown, GetKeyEvent.
Функция LongDiv Objects
=================================================================
Объявление function LongDiv(X: Longint; Y: Integer): Integer;
inline($59/$58/$5A/$F7/$F9);
Функция Функция со встроенным ассемблерным кодом для быстрого
деления, возвращающая целое значение X/Y.
Функция LongMul Objects
=================================================================
Объявление function LongMul(X, Y: Integer): Longint;
inline($5A/$58/$F7/$EA);
Функция Функция со встроенным ассемблерным кодом для быстрого
умножениия, возвращающая длинное целое значение X*Y.
Тип LongRec Objects
=================================================================
Объявление LongRec = record
Lo, Hi: Word;
end;
Функция Полезный тип записи для обработки переменных двойного
слова.
Функция LowMemory Memory
=================================================================
Объявление function LowMemory: Boolean;
Функция Возвращает True, если памяти мало, в противном случае
False. True означает, что вызов распределения памяти
достиг пула надежности. Размер пула надежности
определяется переменной LowMemSize.
См. также Главу 6, InitMemory, TView.Valid, LowMemSize.
Переменная MaxBufMem Memory
=================================================================
Объявление MaxBufMem: Word = 65536 div 16;
Функция Указывает максимальный объем памяти в 16-байтовых
параграфах, которая может быть распределена для
кэш-буферов.
См. также GetBufMem, FreeBufMem.
Переменная MaxCollectionSize Objects
=================================================================
Объявление MaxCollectionSize = 65520 div SizeOf(Pointer);
Функция Определяет максимальное число элементов, которые
может содержать коллекция, по существу это число
указателей, которое помещается в сегмент памяти в
64К.
Константа MaxViewWidth Views
=================================================================
Объявление MaxViewWidth = 132;
Функция Устанавливает максимальную длину видимого элемента.
См. также поле TView.Size.
Константа mbXXXX Drivers
=================================================================
Функция Эти константы могут быть использованы при проверке
поля TEvent.Buttons записи события evMouse.
if (Event.What = evMouseDown) and
(Event.Button = mbLeftButton) then LeftButtonDown;
Значения Определены следующие константы:
Таблица 14.22. Константы кнопки мышки.
---------------------------------------------------------------
Костанта Значение Назначение
---------------------------------------------------------------
mbLeftButton $01 Установлено, если была нажата левая кнопка
mbRightButton $02 Установлено, если была нажата правая кнопка
---------------------------------------------------------------
См. также GetMouseEvent.
Функция MemAlloc Memory
=================================================================
Объявление function MemAlloc(Size: Word): Pointer;
Функция Распределяет Size байт памяти в куче и возвращает
указатель на блок. Если блок требуемого размера не
может быть распределен, возвращается значение nil. В
отличие от стандартных процедур New и GetMem,
MemAlloc не позволяет распределять пул надежности.
Блок распределенный с помощью MemAlloc может быть
освобожден стандартной процедурой FreeMem.
См. также New, GetMem, Dispose, FreeMem, MemAllocSeg.
Функция MemAllocSeg Memory
=================================================================
Объявление function MemAllocSeg(Size: Word): Pointer;
Функция Распределяет блок памяти выровненный на границу
сегмента. Соответствует MemAlloc, за исключением
того, что часть смещения результирующего значения
указателя - 0.
См. также MemAlloc
Переменная MenuBar App
=================================================================
Объявление MenuBar: PMenuView = nil;
Функция Сохраняет указатель на полосу меню программы
(наследник TMenuView). Переменная MenuBar
инициализируется с помощью TProgram.InitMenuBar,
которая вызывается через TProgram.Init. Значение nil
указывает, что программа не имеет полосы меню.
Функция Message Views
=================================================================
Объявление function Message(Receiver: PView; What, Command: Word;
InfoPtr: Pointer): Pointer;
Функция Устанавливает событие-команду с аргументами What,
Command или InfoPtr, затем, если возможно, вызывает
Receiver^.HandleEvent для обработки этого события.
Message возвращает nil, если Receiver - nil или, если
событие не обработано успешно. Если событие успешно
обработано (HandleEvent возвращает Event.What как
evNothing), функция возвращает Event.InfoPtr.
Последний может быть использован для определения,
каким видимым элементом обработано событие. Аргумет
What обычно устанавливается в evBroadcast. Например,
по умолчанию TscrollBar.ScrollDraw посылает следующее
сообщение в полосу скроллинга владельца:
Message(Owner, evBroadcast, cmScrollBarChanged, @Self);
Это сообщение гарантирует, что соответствующие
видимые элементы перерисуются как только значение
полосы скроллинга изменится.
См. также TView.HandleEvent, тип TEvent, константы cmXXXX,
константы evXXXX.
Переменная MinWinSize Views
=================================================================
Объявление MInWinSize: TPoint = (X: 16; Y: 6);
Функция Определяет минимальный размер TWindow или его
потомков. Значение возвращается в параметре Min при
вызове TWindow.SizeLimits. Любые изменения в
MinWinSize будут воздействовать на все окна, если
только метод SizeLimits окна не перекрыт.
См. также TWindow.SizeLimits
Переменная MouseButtons Drivers
=================================================================
Объявление MouseButtons: Byte;
Функция Содержит текущее состояние кнопок мышки. MouseButtons
корректируется обработчиком прерываний мышки как
только кнопка нажата или отпущена. Константы mbXXXX
могут быть использованы для проверки MouseButtons.
См. также константы mbXXX.
Переменная MouseEvents Drivers
=================================================================
Объявление MouseEvents: Boolean = False;
Функция Устанавливается в True, если мышка инсталлирована и
обнаружена InitEvents; в противном случае,
устанавливается в False. Если False, то все процедуры
событий от мышки обходятся.
См. также GetMouseEvent.
Назад | Содержание | Вперед