ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП |
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы. |
Часть 1
CОДЕРЖАНИЕ ВВЕДЕНИЕ................................................................ 1 I. СПРАВОЧНОЕ РУКОВОДСТВО............................................... 2 1. Cостав пакета GraphVision....................................... 2 Модуль Xms.................................................... 3 Модуль ExtObj................................................. 3 Модуль LowGraph............................................... 4 Модуль GrDriver............................................... 5 Модуль GFonts................................................. 6 Модуль Images................................................. 7 Модуль EventMan............................................... 7 Модуль Grav................................................... 8 Модуль Controls.............................................. 10 Модуль GrApp................................................. 10 Модуль GraMenu............................................... 11 Модуль GStdDlg............................................... 11 Модуль Geditors.............................................. 11 Модуль MsgBox................................................ 12 2. Объекты........................................................ 13 GraphApplication............................................. 13 GraphBackground.............................................. 13 GraphBitmapButton............................................ 14 GraphButton.................................................. 16 GraphCheckBoxes.............................................. 16 GraphCluster................................................. 17 GraphDeskTop................................................. 20 GraphDialog.................................................. 20 GraphGrayGroup............................................... 21 GraphGroup................................................... 21 GraphHistoryViewer........................................... 22 GraphHistoryWindow........................................... 22 GraphHistory................................................. 23 GraphInputLine............................................... 23 GraphLabel................................................... 24 GraphListBox................................................. 24 GraphListViewer.............................................. 25 GraphParamText............................................... 26 GraphProgram................................................. 27 GraphRadioButtons............................................ 27 GraphStaticBitmap............................................ 28 GraphTextButton.............................................. 29 GraphTwoStateButton.......................................... 30 GraphScrollBar............................................... 32 GraphScroller................................................ 33 GraphStaticText.............................................. 34 GraphView.................................................... 35 GraphWindow.................................................. 39 T8x8BiosFont................................................. 41 TBGIFont..................................................... 42 TBiosFont.................................................... 43 TBmpFilter................................................... 44 TByteFlow.................................................... 46 TDefaultBGIFont.............................................. 47 TextListBox.................................................. 47 TFilter...................................................... 48 TFixedFont................................................... 49 TFont........................................................ 51 TImage....................................................... 52 TMouseCursor................................................. 53 TRasterFont.................................................. 54 TSharedResourceCollection.................................... 56 TSharedResource.............................................. 56 TXmsStream................................................... 57 3. Общий справочник............................................... 59 BiosFontParams............................................... 59 BitPerPlane.................................................. 59 bsXXXXXXX.................................................... 59 BytesPerLine................................................. 60 CanFillBackground............................................ 60 ConvertPixRow................................................ 60 CstrToStr.................................................... 60 CurrentFont.................................................. 60 CursorAreaSize............................................... 61 DoneFonts.................................................... 61 DoneVideo.................................................... 61 DrawChar..................................................... 61 DrawImage.................................................... 61 DrawMouseShape............................................... 62 DriverMode................................................... 62 DriverPaths.................................................. 62 DriverType................................................... 63 EmulateMouseCursor........................................... 63 ExtractImage................................................. 64 FillBackGround............................................... 64 Fonts........................................................ 64 GetNearestColor.............................................. 65 Hot.......................................................... 65 InitEvents................................................... 65 InitFonts.................................................... 65 InitVideo.................................................... 66 LockMouseCursor.............................................. 66 MinWinSize................................................... 66 MouseInRect.................................................. 67 MouseOwner................................................... 67 MouseShape................................................... 67 MoveBlock.................................................... 67 MovePixels................................................... 68 ofXXXXXX..................................................... 68 OutText...................................................... 68 OutTextXY.................................................... 68 Planes....................................................... 69 RegisterProc................................................. 69 ScreenHeight................................................. 69 ScreenWidth.................................................. 69 SelectFont................................................... 70 SetExclusiveArea............................................. 70 SetMouseCursor............................................... 70 SetTextStyle................................................. 70 SetupMethods16............................................... 71 SetupMethods256.............................................. 71 SetWriteMode................................................. 71 StdResource.................................................. 71 StdSharedResource............................................ 71 SwitchBank................................................... 71 SystemFont................................................... 72 TextHeight................................................... 72 TextWidth.................................................... 72 TPaletteType................................................. 72 Vesa16Modes.................................................. 73 Vesa256Modes................................................. 73 VesaDriverNames.............................................. 73 wfXXXXXX..................................................... 74 Xms_Addr..................................................... 74 Xms_FreeMem.................................................. 74 Xms_GetMem................................................... 74 Xms_Init..................................................... 75 Xms_Initialized.............................................. 75 Xms_MaxAvail................................................. 75 Xms_MemAvali................................................. 75 Xms_MoveMem.................................................. 76 Xms_ResizeMem................................................ 76 Xms_Status................................................... 76 II. РЕСУРСЫ............................................................ 77 1. Что находится в файле Standard.rsc............................. 77 2. Как загрузить ресурс........................................... 78 3. Как хранятся ресурсы........................................... 78 4. Как добавить ресурс............................................ 78 III. СОВЕТЫ............................................................ 80 1. Установка видеорежимов......................................... 80 2. Включение BGI драйверов в состав исполняемого модуля........... 82 3. Использование BGI драйверов в программах защищенного режима ... 82 4. Мышиный курсор в VESA режимах.................................. 83 1 В В Е Д Е Н И Е ----------------------------------------------------------------------------- GraphVision - это набор объектов, предназначенный для создания графического пользовательского интерфейса для языка программирования Turbo Pascal и разработанный с использованием стандартных средств графики языка. GraphVision - объектно-ориентированная библиотека, основанная на принципах, реализованных в пакете Turbo Vision. Для ее использования необходимо наличие oпыта программирования с использованием пакета Turbo Vision. В данном документе описываются только дополнения и изменения в реализации объектов по сравнению с Turbo Vision. Для детального ознакомления с принципами использования пакета GraphVision смотри документ "Turbo Vision Guide". 2 С П Р А В О Ч Н О Е Р У К О В О Д С Т В О I ----------------------------------------------------------------------------- Этот раздел состоит из трех частей: Часть 1, "Состав пакета GraphVision", содержит краткое описание модулей, входящих в состав пакета. Сюда входят списки типов, констант, переменных, процедур и функций, объявленных в каждом модуле. Часть 2, "Объекты", содержит описание стандартных объектов, входящих в состав пакета, в алфавитном порядке. Часть 3, "Общий справочник", содержит описание всех глобальных переменных, констант, процедур и функций в алфавитном порядке. Cостав пакета GraphVision 1 ---------------------------------------------------------------------------- В состав пакета входят следующие модули: --------------------------------------------------------- Модуль Назначение --------------------------------------------------------- Controls Различные объекты, используемые для построения диалогов. Аналог модуля Dialogs ExtObj Расширение объектов общего назначения EventMan Драйверы мыши, клавиатуры, менеджер событий. Аналог модуля Drivers GrDriver Дополнительные графические процедуры высокого уровня GFonts Поддержка различных видов фонтов Grav Базовые объекты, используемые для построения пользовательского интерфейса. Аналог модуля Views GraMenu Объекты, реализующие меню и строку состояния. Аналог модуля Menus GrApp Объекты для построения приложений. Аналог модуля App GEditors Редакторы текста. Аналог модуля Editors GStdDlg Объекты для работы с файлами и каталогами. Аналог модуля StdDlg Images Объекты и процедуры для работы с образами LowGraph Графические процедуры и функции низкого уровня MsgBox Диалоговое окно для различных сообщений Xms Процедуры и функции для работы с расширенной памятью. ---------------------------------------------------------- 3 Модуль Xms ============================================================================= Модуль Xms содержит процедуры и функции для работы с расширенной памятью. ------------------------------------------------------------- КОНСТАНТЫ Имя Значение Смысл ------------------------------------------------------------- Xms_BlockSize 1024 Размер минимального блока расширенной памяти ------------------------------------------------------------- ------------------------------------------------------------- ПЕРЕМЕННЫЕ Имя Тип Нач.зн. Смысл ------------------------------------------------------------- Xms_Initialized boolean false Флаг доступности XMS Xms_Addr pointer Адрес точки входа Xms_Status byte Статус завершения операции ------------------------------------------------------------- ПРОЦЕДУРЫ И ------------------------------------------------------------- ФУНКЦИИ Процедура Назначение ------------------------------------------------------------- Xms_FreeMem Освобождает расширенную память Xms_MoveMem Пересылка данных из/в расширенную память Xms_ResizeMem Изменяет размер выделенного блока расширенной памяти ============================================================= Функция Назначение ------------------------------------------------------------- Xms_Init Определяет наличие драйвера XMS Xms_MemAvali Размер свободной расширенной памяти Xms_MaxAvail Размер максимального свободного блока Xms_GetMem Выделяет блок расширенной памяти ------------------------------------------------------------- Модуль ExtObj. ============================================================================= Модуль ExtObj содержит определения объектов, являющихся расширением набора объектов общего назначения. ТИПЫ ------------------------------------------------------------- Тип Назначение ------------------------------------------------------------- TByteFlow Хранение произвольных данных в виде потока байтов TMouseCursor Работа с мышиными курсорами TSharedResourceCollection Используется в TSharedResource TSharedResource Разделяемые ресурсы TXmsStream Поток в расширенной памяти ------------------------------------------------------------- ------------------------------------------------------------- ПЕРЕМЕННЫЕ Имя Тип Нач.зн. Смысл ------------------------------------------------------------- StdResource PResourceFile nil Указатель на файл стандартных ресурсов StdSharedResource PSharedResource nil Указатель на коллекцию разделяемых ресурсов ------------------------------------------------------------- 4 Модуль LowGraph ============================================================================ Модуль LowGraph содержит графические подпрограммы низкого уровня, работающие с видеопамятью и регистрами видеокарты. ТИПЫ ------------------------------------------------------------- Тип Назначение ------------------------------------------------------------- TPaletteType Палитра ------------------------------------------------------------- ------------------------------------------------------------- ПЕРЕМЕННЫЕ Имя Тип Нач.зн. Смысл ------------------------------------------------------------- Mode byte 0 Режим записи в видеопамять SwitchBank boolean false Требуется переключение банков видеопамяти EmulateMouseCursor boolean false Эмуляция мышиного курсора ScreenWidth integer Ширина экрана в пикселях ScreenHeight integer Высота экрана в пикселях Planes integer Количество битовых карт BitPerPlane integer Бит/пиксел в одной карте BytesPerLine integer Длина скан-линии в одной битовой карте FalseMode Используетя для обмана драйвера мыши CursorAreaSize word Размер памяти для сохра- нения области экрана под мышиным курсором -------------------------------------------------------------- 5 ПРОЦЕДУРЫ И ------------------------------------------------------------- ФУНКЦИИ Процедура Назначение ------------------------------------------------------------- ConvertPixRow Преобразование строки пикселов из одной палитры в другую DrawChar Рисует символ ExtractImage Копирует часть образа,хранящегося в памяти, в другой буфер MovePixels Копирует блок пикселов DrawMouseShape Рисует мышиный курсор SetupMethods16 Установка 16-цветных режимов SetupMethods256 Установка 256-цветных режимов ============================================================= Функция Назначение ------------------------------------------------------------- GetNearestColor По заданныому rgb-значению цвета находит наиболее подходящий из стандартной палитры BIOS. Модуль GrDriver ============================================================================ Модуль GrDriver содержит константы, переменные, процедуры и функции, которые предоставляют дополнительные возможности при работе в графическом режиме. ------------------------------------------------------------- КОНСТАНТЫ Имя Значение Смысл ------------------------------------------------------------- StandardVGA 0 Драйвер стандартного VGA Vesa16 1 Драйвер VESA 16 цветов Vesa256 2 Драйвер VESA 256 цветов ------------------------------------------------------------- VGA640x480 VGAHI VESA16_800x600 0 Номера 16-цветных режимов VESA16_1024x768 1 VESA16_1240x1024 2 VESA256_640x400 0 VESA256_640x480 1 Номера 256-цветных режимов VESA256_800x600 2 VESA256_1024x768 3 VESA256_1280x1024 4 ------------------------------------------------------------- ------------------------------------------------------------- ПЕРЕМЕННЫЕ Имя Тип Нач.зн. Смысл ------------------------------------------------------------- Driver integer StandardVGA Используемый драйвер DriverMode integer VGA640x480 Текущий режим VesaDriverNames array Имена драйверов DriverPaths array Пути к драйверам VESA16Modes array Режимы Vesa16 VESA256Modes array Режимы Vesa256 RegisterProc procedure nil Указатель на процедуру регистрации драйверов ------------------------------------------------------------- 6 ------------------------------------------------------------- ПРОЦЕДУРЫ Процедура Назначение ------------------------------------------------------------- InitVideo Инициализирует графическую систему DoneVideo Завершает работу графической системы SetWriteMode Устанавливает режим записи в видеопамять DrawImage Выводит образ на экран MoveBlock Копирует блок пикселов ------------------------------------------------------------- Модуль GFonts ============================================================================ Модуль GFonts содержит определения типов, объектов, переменные и процедуры для работы с различными видами растровых и векторных фонтов. ТИПЫ ------------------------------------------------------------- Тип Назначение ------------------------------------------------------------- BiosFontParams Информация о внутренних фонтах BIOS TFont Базовый объект для работы с фонтами TBGIFont Базовый объект для работы с BGI фонтами TDefaultBgiFont BGI DefaultFont фонт TRasterFont Базовый объект для работы с растровыми фонтами TFixedFont Растровые фонты с фиксированным размером образов символов TBiosFont Внутренние фонты BIOS T8x8BiosFont Внутренний фонт BIOS 8x8 ------------------------------------------------------------- ------------------------------------------------------------- ПЕРЕМЕННЫЕ Имя Тип Нач.зн. Смысл ------------------------------------------------------------- Fonts PCollection nil Указатель на коллекцию фонтов SystemFont integer 0 Номер фонта,используемого как системный CurrentFont integer 0 Номер текущего фонта FillBackground boolean true Изменять цвет фона при выводе текста ------------------------------------------------------------- 7 ПРОЦЕДУРЫ И ------------------------------------------------------------- ФУНКЦИИ Процедура Назначение ------------------------------------------------------------- InitFonts Инициализирует коллекцию фонтов DoneFonts Уничтожает коллекцию фонтов SelectFont Устанавливает текущий фонт CanFillBackground Возвращает true, если текущий фонт умеет изменять цвет фона OutText Выводит строку текста, начиная с текущей позиции OutTextXY Выводит строку текста с заданной позиции SetTextStyle Устанавливает характеристики вывода текста ============================================================= Функция Назначение ------------------------------------------------------------- TextHeight Возвращает высоту строки символов TextWidth Возвращает ширину строки символов ------------------------------------------------------------- Модуль Images ============================================================================ Модуль Images содержит определения типов и объектов для работы с изображениями и файлами графических форматов. ТИПЫ ------------------------------------------------------------- Тип Назначение ------------------------------------------------------------- TImage Базовый объект для работы с образами TFilter Базовый объект для реализации графических фильтров TBmpFilter Фильтр для файлов формата Windows BMP TBGIFilter Фильтр для файлов формата PutImage ------------------------------------------------------------- ------------------------------------------------------------- КОНСТАНТЫ Имя Значение Смысл ------------------------------------------------------------- giError -1 ошибка при импорте графического файла giIOError -2 ошибка ввода/вывода giInvalidFormat -3 неизвестный формат файла ------------------------------------------------------------- Модуль EventMan ============================================================================ Модуль EventMan содержит драйверы мыши и клавиатуры, а также менеджер событий. Этот модуль является аналогом модуля Drivers из пакета TurboVision. Подробное описание типов, констант, переменных, процедур и функций дано в документе "Turbo Vision Guide". 8 По разным причинам исключены следующие переменные: StartupMode, ScreenMode, CheckSnow, HiResScreen, ScreenBuffer, CursorLines а также процедуры: SetVideoMode ClearScreen, MoveBuf, MoveChar, MoveCStr, MoveStr ------------------------------------------------------------- ПЕРЕМЕННЫЕ Имя Тип Нач.зн. Смысл ------------------------------------------------------------- Hot TPoint (0,0) Координаты горячего пятна мышиного курсора ShapeSize TPoint (16,16) Размеры образа мышиного курсора MouseShape pointer nil Указатель на образ курсора ------------------------------------------------------------- ПРОЦЕДУРЫ И ------------------------------------------------------------- ФУНКЦИИ Процедура Назначение ------------------------------------------------------------- SetExclusiveArea SetMouseCursor Задает новый образ мышиного курсора ============================================================= Функция Назначение ------------------------------------------------------------- MouseInRect Возвращает true, если мышиный курсор находится в заданном прямоугольнике ------------------------------------------------------------- Модуль Grav ============================================================================ Модуль Grav являетя аналогом модуля Views и содержит основные объекты для построения пользовательского графического интерфейса: видимые элементы, окна, полосы прокруктки, и т.д. Подробное описание типов, констант и переменных дано в соответствующем разделе документа "Turbo Vision Guide" ТИПЫ ------------------------------------------------------------- Тип Назначение ------------------------------------------------------------- GraphView Прародитель всех видимых элементов GraphGroup Базовый объект для построения сложных видимых элементов 9 GraphBackGround Объект, реализующий задний план (фон) GraphScrollBar Полоса прокрутки GraphListViewer Объект для просмотра списков GraphWindow Базовый объект для реализации окон GraphScroller Базовый объект для реализации прокрутки содержимого окон ------------------------------------------------------------- Исключены: TDrawBuffer TVideoBuf TFrame ------------------------------------------------------------- ------------------------------------------------------------- КОНСТАНТЫ Имя Значение Смысл ------------------------------------------------------------- ofNoDrawSelect $40 Видимый элемент не перерисо- вывается при выборе ofResizeable $400 Видимый элемент может изменять размер ofMoveable $800 Видимый элемент может быть перемещен ------------------------------------------------------------- wfThickFrame $10 Окно имеет широкую рамку wfThinFrame $20 Окно имеет тонкую рамку wfFramed $30 Окно имеет рамку wfTitle $40 Окно имеет заголовок ------------------------------------------------------------- bsNone 0 Фон рисуется без границы bsBump 1 Выпуклый фон bsDip 2 Вдавленный фон ------------------------------------------------------------- Исключены: MaxViewWidth wnNoNumber cmSelectWindowNum ofFramed ofBuffered sfShadow ------------------------------------------------------------- ------------------------------------------------------------- ПЕРЕМЕННЫЕ Имя Тип Нач.зн. Смысл ------------------------------------------------------------- MouseOwner PGraphView nil Видимый элемент, изменивший форму курсора мыши StdMouseCursor PMouseCursor nil Указатель на стандартный курсор мыши (стрелка) LockMouseCursor integer 0 Флаг возможности изменения состояния мышиного курсора MinWinSize TPoint (124,84) Минимальный размер окна CaptionHeight integer 14 Высота заголовка окна ------------------------------------------------------------- Исключены: SadowAttr ShadowSize ------------------------------------------------------------- 10 Модуль Controls ============================================================================ Модуль Controls является аналогом модуля Dialogs в пакете Turbo Vision. Он содержит реализации объектов для реализации диалоговых окон и различных управляющих элементов. Большинство объектов, входящих в состав этого модуля, являются аналогами соответствующих объектов Turbo Vision. Их подробное описание дано в соответствующем разделе документа "Turbo Vision Guide" ТИПЫ ------------------------------------------------------------- Тип Назначение ------------------------------------------------------------- GraphDialog Специализированное диалоговое окно GraphButton Абстрактный объект для реализации различных видов кнопок GraphTextButton Простая текстовая кнопка GraphBitmapButton Кнопка, изодражаемая с помощью набора образов GraphGrayGroup Визуально объединяет несколько видимых элементов в единую логическую группу GraphListBox Абстрактный объект для просмотра списков TextListBox Прокручиваемый текстовый список GraphStaticText Простейший видимый элемент, строка текста GraphParamText Форматированный неизменяемый текст GraphLabel Объект - метка GraphInputLine Строка ввода GraphTwoStateButton Kнопка с двумя фиксированными состояниями GraphCluster Абстрактный объект для реализации наборов кнопок с зависимой и независимой фиксацией GraphRadioButtons Набор кнопок с зависимой фиксацией GraphCheckBoxes Набор кнопок с независимой фиксацией GraphStaticBitmap Статическое изображение GraphHistoryViewer Просмотр списков истории GraphHistoryWindow Окно для просмотра списков истории GraphHistory Список истории для строки ввода ------------------------------------------------------------- Модуль GrApp ============================================================================ Модуль Grapp является аналогом модуля App из пакета Turbo Vision и содержит набор объектов для постоения приложений. Подробное описание типов, констант и переменных дано в соответствующем разделе документа "Turbo Vision Guide" 11 ТИПЫ ------------------------------------------------------------- Тип Назначение ------------------------------------------------------------- GraphApplication Объект-приложение GraphDesktop Объект - группа, в которую помещаются все окна и диалоговые окна GraphProgram Абстрактный объект-приложение ------------------------------------------------------------- ------------------------------------------------------------- ПЕРЕМЕННЫЕ Имя Тип Нач.зн. Смысл ------------------------------------------------------------- Application PGraphProgram nil Указатель на текущее приложение DeskTop PGraphDeskTop nil StatusLine PGraphStatusLine nil Указатель на строку состояния MenuBar PGraphMenuView nil Указатель на строку меню ------------------------------------------------------------- Модуль GraMenu ============================================================================ Модуль GraMenu является аналогом модуля Menus в Turbo Vision. Этот модуль обеспечивает использование выпадающих меню и строк состояния. ТИПЫ ------------------------------------------------------------- Тип Назначение ------------------------------------------------------------- GraphMenuView Абстрактный объект для реализации меню разных видов GraphMenuBar Горизонтальное меню GraphMenuBox Выпадающее меню. GraphStatusLine Строка состояния ------------------------------------------------------------- Модуль GStdDlg ============================================================================ Модуль GStdDlg является аналогом модуля StdDlg в TurboVision, но объект типа TChDirDialog не реализован. Модуль Geditors ============================================================================ Модуль GEditors по своим функциям аналогичен модулю Editors в Turbo Vision. В нем реализованы объекты, предназначенные для редактирования текстов. 12 Модуль MsgBox ============================================================================ В этом модуле реализована функция MessgeBox, по своим функциям полностью аналогичная соответствующей функции из модуля MsgBox пакета Turbo Vision. Она создает и изображает на экране диалоговое окно, по внешнему виду схожее с диалоговыми окнами, реализованными в продуктах фирмы Borland для Microsoft Windows. Имя модуля совпадает с названием аналогичного модуля Turbo Vision, что обеспечивает возможность совместного использования пакета GraphVision и модуля Validate из состава Turbo Vision. 13 Объекты 2 ---------------------------------------------------------------------------- Эта часть содержит список всех объектов пакета GraphVision в алфавитном порядке, их назначение, описание полей и методов. GraphApplication GrApp ============================================================================ ---------------- | GraphProgram | ---------------- | | -------------------- | GraphApplication | -------------------- Объект GraphApplication функционально аналогичен объекту TApplication в Turbo Vision. GraphApplication.Init инициализирует все подсистемы, используемые GraphVision (управление событиями, видео, памятью, фонтами, списками истории) и вызывает GraphProgram.Init. GraphApplication.Done сначала вызывает GraphProgram.Done, затем уничтожает все подсистемы GraphVision. GraphBackground Grav ============================================================================ ------------- | GraphView | ------------- | | ------------------- | GraphBackground | ------------------- Объект типа GraphBackground является аналогом объекта TBackground в Turbo Vision и представляет собой простейший видимый элемент в форме закрашенного прямоугольника. ПОЛЯ -------------------------------------------------------------- BorderStyle BorderStyle : integer; Определяет стиль прорисовки границ объекта GraphBackground. Значение этого поля устанавливается при инициализации объекта. 14 Спецально для этого в модуль Grav добавлены определения трех констант: bsNone = 0; - граница не прорисовывается bsBump = 1; - создается эффект возвышения bsDeep = 2; - создается эффект вдавленности. Pattern Pattern: word; Определяет шаблон закраски. Могут быть использованы только стандартные шаблоны закраски, определенные в модуле Graph. МЕТОДЫ ------------------------------------------------------------- Init constructor Init(var Bounds: TRect; APattern: word; ABorderStyle : integer); Вызывает GraphView.Init, затем присваивает полю Pattern значение параметра APattern, а полю BorderStyle - значение поля ABorderStyle. ПАЛИТРА ------------------------------------------------------------ CBackground = #01#02#03; | | | фон------------Щ | | светлый-----------Щ | темный---------------Щ GraphBitmapButton Controls =========================================================================== --------------- | GraphButton | --------------- | | --------------------- | GraphBitmapButton | --------------------- Это терминальный объект, реализующий кнопки, прорисовываемые с помощью битовых изображений и по внешнему виду аналогичные bitmap-кнопкам фирмы Borland в продуктах для Microsoft Windows. ПОЛЯ ------------------------------------------------------------ Images Images : PCollection; Хранит указатель на коллекцию образов (объектов типа TImage), которые используются при изображении различных состояний кнопки. 15 МЕТОДЫ ------------------------------------------------------------ Init constructor Init(var Bounds : TRect; ATitle : TTitleStr; ACommand : word; AFlags : word); Вызывает GraphButton.Init; затем из файла стандартных ресурсов, автоматически открываемого во время инициализации приложения, загружает коллекцию образов с именем ATitle, и присваивает указатель на нее полю Images: Load constructor Load(var S : TStream); Вызывает GraphButton.Load, который загружает поля Title, Command, Flags и AmDefault, затем из файла стандартных ресурсов загружает коллекцию образов с именем Title^ и сохраняет указатель на нее в поле Images. Done destructor Done; virtual; Уничтожает коллекцию образов и вызывает GraphButton.Done. DrawState procedure DrawState(Pushed : boolean); virtual; Рисует кнопку на экране в зависимости от ее состояния. Коллекции образов для стандартных кнопок, хранящиеся в файле стандартных ресурсов, содержат три образа: Индекс Назначение ------ ---------- 0 неактивная кнопка (State and sfFocused = 0) (для разрешенных и запрещенных кнопок) 1 нажатая активная кнопка 2 нормальная активная кнопка (State and sfFocused <> 0) Например, последовательность: GetExtent(R); P := Images^.At(1); DrawImg(R.A,PImage(P),NormalPut); рисует на экране активную кнопку в нажатом состоянии. Этот метод может быть переопределен. 16 GraphButton Controls =========================================================================== ------------- | GraphView | ------------- | | --------------- | GraphButton | --------------- В отличие от объекта TButton, объект GhaphButton является абстрактным объектом, на основе которого создаются различные виды кнопок. Объект GraphButton содержит те же поля, что и TButton. Их описание см. в "Turbo Vision Guide". МЕТОДЫ ------------------------------------------------------------ DrawState procedure DrawState(Pushed : boolean); virtual; Абстрактный метод, выполняющй прорисовку кнопки в зависимости от ее текущего состояния. Должен быть переопределен для потомков объекта GraphButton. GraphCheckBoxes Controls ============================================================================ ---------------- | GraphCluster | ---------------- | | ------------------- | GraphCheckBoxes | ------------------- Объект GraphСheckboxes выполняет те же функции, что и TCheckBoxes в Turbo Vision. Это набор кнопок с независимой фиксацией, т.е. в любой момент времени могут быть выбраны несколько кнопок. Поле Value интерпретируется как набор из 16 бит (от 1 до 16), где 1 в бите позиции означает, что элемент помечен. МЕТОДЫ ------------------------------------------------------------- Init constructor Init(var Bounds : TRect; AStrings : PSItem); Cоздает набор кнопок с независимой фиксацией. Load constructor Load(var S : TStream); Загружает из потока S набор кнопок с независимой фиксацией. Done destructor Done; virtual; Уничтожает набор кнопок с независимой фиксацией. 17 GetItemSize procedure GetItemSize(var ItemSize : TPoint); virtual; Возвращает в переменной ItemSize размеры области, занимаемой одним элементом управления. HandleEvent procedure HandleEvent(var Event : TEvent); virtual; Обрабатывает события от мыши и клавиатуры для определения и изменения состояния текущей кнопки. NewControl function NewControl(Bounds : TRect; AId : integer): PGraphView; virtual; Добавляет новую кнопку в группу кнопок с независимой фиксацией. Никогда не вызывается непосредственно. Mark function Mark(Item : Integer): boolean; virtual; Возвращает true, если бит элемента в Value установлен в 1, т.е. данная кнопка отмечена. Press procedure Press(Control : PGraphView); virtual; Вызывается из HandleEvent, когда нажата кнопка с независимой фиксацией. Измененяет значение поля Value. Никогда не вызывается непосредственно. GraphCluster Controls ============================================================================ -------------- | GraphGroup | -------------- | | ---------------- | GraphCluster | ---------------- Объект GraphCluster представляет собой функциональный аналог объекта TCluster, но, в отличие от него, является потомком группы. GraphCluster - абстрактный объект, на основе которого реализуются объекты зависимых и независимых кнопок. ПОЛЯ ------------------------------------------------------------- Value Value: Word; Текущее значение элемента управления. Конкретный смысл этого поля определяется типом объекта, порожденного от GraphCluster. 18 Sel Sel: Integer; Текущий выбранный элемент кластера. МЕТОДЫ ------------------------------------------------------------- Init constructor Init(var Bounds: TRect; AStrings: PSItem); Вызывает GraphGroup.Init, добавляет в нее элементы управления, вызывая метод InsertItem для каждой строки списка AStrings. Load constructor Load(var S: TStream); Вызывает GraphGroup.Load, затем читает из потока S поля Value и Sel. DataSize function DataSize: Word; virtual; Возвращает размер поля Val. Должен перекрываться в порожденных типах, которые добавляют другие поля данных. GetData procedure GetData(var Rec); virtual; Записывает значение поля Value в запись Rec. Должен перекрываться в порожденных типах, которые добавляют другие поля данных. GetItemSize procedure GetItemSize(var ItemSize : TPoint); virtual; Возвращает в переменной ItemSize размеры области, занимаемой одним элементом управления. Это абстрактный метод, который должен быть переопределен для потомков объекта GraphCluster. GetHelpCtx function GetHelpCtx: Word; virtual; Возвращает значение HelpCtx + Sel, что позволяет задать контекстную справку для каждого элемента кластера. GetPalette function GetPalette : PPalette; virtual; Возвращает указатель на палитру по умолчанию. NewControl function NewControl(Bounds : TRect; AId : integer): PGraphView; virtual; Абстрактный метод, выполняющий добавление в кластер элемента управления. AID - идентификатор элемента в группе. Должен быть переопределен для потомков объекта GraphCluster. Никогда не вызывается непосредственно. 19 Mark function Mark(Item: Integer): Boolean; virtual; Используется для определения, какие элементы кластера отмечены По умолчанию всегда возвращает false, т.е. этот метод должен быть переопределен для потомков объекта GraphCluster. Press procedure Press(Control : PGraphView); virtual; Вызывается из HandleEvent, когда элемент в кластере нажат либо отметкой мышки, либо событием от клавиатуры. Это абстрактный метод должен быть перекрыт. SetData procedure SetData(var Rec); virtual; Читает поле Value из записи Rec и дает команду элементам кластера перерисовать себя в соответствии с этим значением. Должен быть перекрыт, если порожденные типы используют дополнительные поля данных. Наример: procedure NewType.SetData(var Rec); begin GraphCluster.SetData(Rec); .... {другие действия} .... end; Store procedure Store(var S: TStream); Сохраняет объект GraphCluster в потоке, вызывая GraphView.Store, записывает Valuse и Sel в поток S. ПАЛИТРА -------------------------------------------------------------- CCluster = #47#48#49#50#51#52#53; | | | | | | | фон -------------Щ | | | | | | текст запрещенный---Щ | | | | | текст нормальный-------Щ | | | | текст выбранный-----------Щ | | | символ короткого набора------Щ | | кнопка нормальная---------------Щ | кнопка запрещенная-----------------Щ 20 GraphDeskTop GrApp ============================================================================ -------------- | GraphGroup | -------------- | | ---------------- | GraphDesktop | ---------------- Объект GraphDesktop аналогичен объекту TDeskTop, за исключением того, что вместо метода NewBackground испоьзуется метод InitBackground. МЕТОДЫ ------------------------------------------------------------- InitBackground procedure InitBackground; virtual; Создает объект фона, используемый в панели экрана. Вызывается в методе GraphDesktop.Init. Может быть перекрыт. GraphDialog Controls =========================================================================== ----------------- | GraphWindow | ----------------- | | --------------- | GraphDialog | --------------- Этот объект является аналогом объекта TDialog. Описание полей и методов см. в "Turbo Vision Guide". ПАЛИТРА ----------------------------------------------------------- CDialog = #94#95#96#97#98#99#100#101#102#103#104#105#106+ #107#108#109#110#111#112#113#114#115#116#117+ #118#119#120#121#122#123#124#125#126#127#128+ #129#130#131#132#133#134#135#136#137#138#139+ #140#141#142#143#144#145#146#147#148#149#150+ #151#152#153#154#155#156#157#158; Входы с 1 по 23 - совпадают по назначению с соответствующими входами в палитре окна. с 24 по 25 - цвета для GraphStaticText c 26 по 30 - цвета для GraphLabel с 31 по 46 - цвета для текстовых кнопок с 47 по 53 - цвета для кластера с 54 по 57 - цвета строки ввода с 58 по 61 - используются окнами историй с 62 по 64 - цвета для потомков GraphListViewer 21 GraphGrayGroup Controls ============================================================================ ------------------- | GraphBackground | ------------------- | | ------------------ | GraphGrayGroup | ------------------ Этот простой объект предназначен для визуального объединения нескольких управляющих элементов в единую группу. Пример использования : модуль Calc в демонстрационной программе. МЕТОДЫ ------------------------------------------------------------- Init constructor Init(var Bounds : TRect); Вызывает GraphBackground.Init и устанавливает GrowMode = 0; GraphGroup Grav ============================================================================ ------------- | GraphView | ------------- | | ---------------- | GraphGroup | ---------------- GraphGroup - аналог объекта TGroup в Turbo Vision и предоставляет те же самые средства для управления списками видимых элементов. ПОЛЯ ------------------------------------------------------------- Исключено поле Buffer, так как все операции рисования работают непосредственно с видеопамятью. МЕТОДЫ ------------------------------------------------------------- ChangeClipRect procedure ChangeClipRect; virtual; Изменяет размер минимального прямоугольника, который требуется перерисовать в процессе операции Draw. Для каждого видимого элемента, включенного в группу, также вызывается метод ChangeClipRect; Никогда не перекрывается и не вызывается непосредственно. 22 ResetCliprect procedure ResetClipRect; virtual; Восстанавливает размер минимального прямоугольника. Для каждого видимого элемента, включенного в группу, также вызывается метод ResetClipRect. Никогда не перекрывается и не вызывается непосредственно. GraphHistoryViewer Controls ============================================================================ ------------------- | GraphListViewer | ------------------- | | ---------------------- | GraphHistoryViewer | ---------------------- Объект GraphHistoryViewer выполняет те же функции, что и THistoryViewer. Подробное описание см. в руководстве по Turbo Vision. ПАЛИТРА ------------------------------------------------------------- CHistoryViewer = #28#29#30#31; | | | | фон нормальный----Щ | | | текст нормальный-----Щ | | фон выбранный-----------Щ | текст выбранный------------Щ GraphHistoryWindow Controls ============================================================================ --------------- | GraphWindow | --------------- | | ---------------------- | GraphHistoryWindow | ---------------------- Объект GraphHistoryWindow полностью аналогичен объекту THistoryWindow в Turbo Vision. 23 ПАЛИТРА ------------------------------------------------------------- CHistoryWindow = #1#2#3#4#5#6#7#8#9#10#11#12#13#14#15#16#17 + #18#19#20#21#22#23#24#25#26#27#58#59#60#61 входы с 1 по 27 совпадают по назначению с ссответствующими входами окна, входы с 28 по 31 - цвета для GraphHistoryViewer. GraphHistory Controls ============================================================================ ------------- | GraphView | ------------- | | ---------------- | GraphHistory | ---------------- Объект GraphHistory полностью аналогичен объекту THistory. Описание методов и полей смотри в руководстве по Turbo Vision. ПАЛИТРА ------------------------------------------------------------- CHistory = #04#05#06#07#08; | | | | | основной-----Щ | | | | светлый --------Щ | | | темный ------------Щ | | разрешенный ----------Щ | запрещенный -------------Щ GraphInputLine Controls ============================================================================ ------------- | GraphView | ------------- | | ------------------ | GraphInputLine | ------------------ Объект GraphInputLine полностью аналогичен объекту TInputLine в Turbo Vision. 24 ПАЛИТРА ------------------------------------------------------------- CInputLine = #54#55#56#57; | | | | фон нормальн---Щ | | | текст нормальн----Щ | | фон выделенный-------Щ | текст выделенный--------Щ GraphLabel Controls ============================================================================ ------------------- | GraphStaticText | ------------------- | | -------------- | GraphLabel | -------------- Объект GraphLabel полностью аналогичен объекту TLabel в Turbo Vision. Для изображения себя на экране о бъект GraphLabel использует системный фонт и размер символа, равный 1. ПАЛИТРА ------------------------------------------------------------- CLabel = #26#27#28#29#30; | | | | | фон -------------Щ | | | | текст запрещенный---Щ | | | текст нормальный-------Щ | | текст выбранный-----------Щ | символ короткого набора------Щ GraphListBox Controls ============================================================================ ------------------- | GraphListViewer | ------------------- | | ---------------- | GraphListBox | ---------------- В отличие от объекта TListBox в Turbo Vision, объект GraphListBox является абстрактным объектам. Он реализует методы для работы с присоединенной коллекцией, аналогичные методам TListBox, за исключением метода GetText. Вместо него используется метод GetItem. 25 МЕТОДЫ ------------------------------------------------------------- GetItem function GetItem(Item : integer): pointer; virtual; Возвращает нетипизированный указатель на элемент коллекции Item. Потомки объекта GraphListBox должны определять методы, которые интерпретируют возвращаемый указатель как указатель на конкретный тип. Для примера см. объект TextListBox. GraphListViewer Grav ============================================================================ ------------- | GraphView | ------------- | | ------------------- | GraphListViewer | ------------------- Объект GraphListViewer является аналогом объекта TListViewer. Из реализации исключен метод GetText. Вместо него используется метод GetItem. МЕТОДЫ ------------------------------------------------------------- DrawItem procedure DrawItem(Item : integer); virtual; Абстрактный метод, предназначенный для изображения на экране элемента с номером Item. Должен быть переопределен для потомков объекта GraphListViewer. DrawItems procedure DrawItems; Изображает на экране отображаемые элементы списка, вызывая для каждого из них метод DrawItem. GetItem function GetItem(Item: Integer): pointer; virtual; Абстрактный метод. Возвращает указатель на элемент Item. Должен быть переопределен для потомков объекта GraphListViewer. 26 GetItemRect procedure GetItemRect(Item : integer; var Bounds : TRect); Возвращает в переменной Bounds координаты области, занимаемой изображением элемента Item. GetItemSize procedure GetItemSize(var ItemSize : TPoint); virtual; Абстрактный метод. Возвращает в переменной ItemSize размеры изображения элемента списка. Все элементы списка должны иметь изображение одинакового размера. Этот метод должен быть переопределен для потомков объекта GraphListViewer. ПАЛИТРА ------------------------------------------------------------- CListViewer =#62#63#64#65; | | | | фон нормальный--------Щ | | | текст -"- ---------------Щ | | фон подсвеченный-------------Щ | текст -"- ----------------------Щ GraphParamText Controls ============================================================================ ------------------- | GraphStatictext | ------------------- | | ------------------ | GraphParamText | ------------------ Объект GraphParamText полностью аналогичен объекту TParamText в Turbo Vision. Для изображения себя на экране объект GraphParamText использует системный фонт и размер символа, равный 1. 27 GraphProgram Grapp ============================================================================ -------------- | GraphGroup | -------------- | | ---------------- | GraphProgram | ---------------- Объект GraphProgram, аналогично TProgram в Turbo Vision, является базой для всех стандартных програм на GraphVision. Подробное описание методов см. в руководстве по Turbo Vision. При инициализации объект GraphProgram пытается открыть поток, в котором хранятся стандартные ресурсы, используемые различными объектами Graph Vision. Сначала производится поиск в файле выполняемой программы. Если ресурсы не найдены, производится попытка открыть файл Standard.rsc, который поставляется вместе с пакетом Graph Vision и в котором хранится набор стандартных ресурсов (образы bitmap-кнопок и т.д.). Если файл ресурсов найден, глобальной переменной StdResource присваивается указатель на объект типа TResourceFile, связянный с файлом ресурсов. Кроме того, создается объект типа TSharedResource, которому при инициализации передается указатель, хранящийся в переменной StdResource. МЕТОДЫ ------------------------------------------------------------ RefreshRect procedure RefreshRect(Bounds : TRect); virtual; Используется для перерисовки прямоугольника Bounds, заданного в локальных координатах объекта GraphProgram. Никогда не перекрывается и не вызывается непосредственно. GraphRadioButtons Controls ============================================================================ ---------------- | GraphCluster | ---------------- | | --------------------- | GraphRadioButtons | --------------------- Объект GraphRadioButtons выполняет те же функции, что и TRadioButtons в Turbo Vision. Это набор кнопок с зависимой фиксацией, т.е. в любой момент времени может быть выбрана только одна кнопка. Поле Value интерпретируется как номер выбранной кнопки: 0 - нет выбранных кнопок,1 - выбрана первая кнопка и т.д. МЕТОДЫ ------------------------------------------------------------ Init constructor Init(var Bounds : TRect; AStrings : PSItem); Создает набор кнопок с зависимой фиксацией. 28 Load constructor Load(var S : TStream); Загружает из потока S набор кнопок с зависимой фиксацией. Done destructor Done; virtual; Уничтожает набор кнопок с зависимой фиксацией. GetItemSize procedure GetItemSize(var ItemSize : TPoint); virtual; Возвращает в переменной ItemSize размеры области, занимаемой одним элементом управления. HandleEvent procedure HandleEvent(var Event : TEvent); virtual; Обрабатывает события от мыши и клавиатуры для определения и изменения текущей кнопки. NewControl function NewControl(Bounds : TRect; AId : integer): PGraphView; virtual; Добавляет новую кнопку в группу кнопок с зависимой фиксацией. Никогда не вызывается непосредственно. Mark function Mark(Item : Integer): boolean; virtual; Возвращяет true, если Item = Value, т.е. кнопка с номером Item является текущей. Press procedure Press(Control : PGraphView); virtual; Вызывается из HandleEvent, когда нажата кнопка с зависимой фиксацией. Измененяет значение поля Value и состояния зависимых кнопок, входящих в группу. Никогда не вызывается непосредственно. GraphStaticBitmap Controls ============================================================================ ------------- | GraphView | ------------- | | --------------------- | GraphStaticBitmap | --------------------- 29 Это простой объект, предназначенный для отображенеия на экране статических изображений. GraphStaticBitmap игнорирует все события, переданные ему. Используется как пассивная иконка или метка. ПОЛЯ ----------------------------------------------------------- Image Image : PImage; Указатель на объект типа TImage, в котором хранится образ картинки. МЕТОДЫ ----------------------------------------------------------- Init constructor Init(var Bounds : TRect; AName : String); Вызывает GraphView.Init, загружает из файла стандартных ресурсов образ с именем AName и присваивает полю Image указатель на загруженный объект типа TImage. Load constructor Load(var S : TStream); Вызывает GraphView.Load и загружает из потока S строку c с именем образа, и затем загружает из файла стандартных ресурсов образ с данным именем. Done destructor Done; virtual; Уничтожает объект, хранящий образ картинки и вызывает GraphView.Done. Draw procedure Draw; virtual; Выводит на экран изображение, используя метод DrawImg: GetExtent(R); DrawImg(R.A,Image,NormalPut); Store procedure Store(var S : TStream); virtual; Вызывает GraphView.Store и сохраняет в потоке S имя образа. GraphTextButton Controls =========================================================================== --------------- | GraphButton | --------------- | | ------------------- | GraphTextButton | ------------------- 30 GraphTextButton - это терминальный объект, представляющий собой объемный прямоугольник с заголовком, по внешнему виду похожий на стандартные кнопки в Microsoft Windows. Наследует все методы, кроме указанных ниже, от объекта GraphButton. МЕТОДЫ ------------------------------------------------------------ DrawState procedure DrawState(Pushed : boolean); virtual; Выполняет прорисовку кнонопки на экране. Вызывается через метод Draw и никогда не вызывается непосредственно. При желании может быть перекрыт. GetPalette procedure GetPalette : PPalette; virtual; Возвращает указатель на палитру текстовой кнопки CButton. ПАЛИТРА ------------------------------------------------------------ CButton = #31#32#33#34#31#32#33#34#35#36#37#38#43#44#45#46; | | | | | | | | | | | | | | | | разрешенная неактивная | | | | | | | | | | | | | | | | фон -----------Щ | | | | | | | | | | | | | | | светлый ----------Щ | | | | | | | | | | | | | | темный --------------Щ | | | | | | | | | | | | | текст ------------------Щ | | | | | | | | | | | | по умолчанию (amDefault=true) | | | | | | | | | | | | фон -----------------------Щ | | | | | | | | | | | светлый ----------------------Щ | | | | | | | | | | темный --------------------------Щ | | | | | | | | | текст ------------------------------Щ | | | | | | | | текущая | | | | | | | | фон------------------------------------Щ | | | | | | | светлый ----------------------------------Щ | | | | | | темный --------------------------------------Щ | | | | | текст ------------------------------------------Щ | | | | запрещенная | | | | фон -----------------------------------------------Щ | | | светлый ----------------------------------------------Щ | | темный --------------------------------------------------Щ | текст ------------------------------------------------------Щ GraphTwoStateButton Controls ============================================================================ ------------- | GraphView | ------------- | | ----------------------- | GraphTwoStateButton | ----------------------- Это абстрактный объект, содержащий основные методы для создания кнопок с двумя фиксирующимися состояниями. 31 ПОЛЯ ------------------------------------------------------------- Checked Checked : boolean; Это поле хранит текущее состояние кнопки (если false - кнопка зафиксирована в верхнем положении). МЕТОДЫ -------------------------------------------------------------- Load constructor Load(var S : TStream); Вызывает GraphView.Load и запружает из потока S значение поля Checked. Check procedure Check; Устанавливает значение поля Checked в true. GetData procedure GetData(var Rec); virtual; Возвращает в переменной Rec значение поля Checked. Может быть переопределен для потомков. DataSize function DataSize : word; virtual; Возвращает размер записи для GetData. По умолчанию возвращает SizeOf(Boolean). Может быть переопределен для потомков. Draw procedure Draw; virtual; Прорисовывает кнопку на экране в соответствии со значением поля Checked, вызывая метод DrawState. Не должен перекрываться. DrawState procedure DrawState(Pressed: Boolean); virtual; Прорисовывает кнопку на экране в соответствии со значением параметра Pressed. Должен быть переопределен для потомков объекта GraphTwoStateButton. HandleEvent procedure HandleEvent(var Event: TEvent); virtual; Обрабатывает события, которые могут влиять на изменение состояния кнопки. Состояние кнопки может быть изменено, как и у GraphButton, щелчком мышки или нажатием клавиши пробела (если State and sfFocused <> 0). SetData procedure SetData(var Rec); virtual; По умолчанию читает SizeOf(Boolean) байт из записи Rec. Может быть переопределен для потомков. 32 Press procedure Press; virtual; Вызывается процедурой HandleEvent пари нажатии на кнопку. Изменяет состояние поля Checked, вызывая метод Toggle. Может быть переопределен для потомков. SetCheck procedure SetCheck(CheckState : boolean); Устанавливает поле Checked в состояние CheckState. Store procedure Store(var S : TStream); Вызывает GraphView.Store и записывает в поток S поле Checked. Toggle procedure Toggle; Изменяет значение поля Checked на противоположное. Uncheck procedure UnCheck; Устанавливает значение поля Checked в false. GraphScrollBar Grav ============================================================================ -------------- | GraphGroup | -------------- | | ------------------ | GraphScrollBar | ------------------ Изменена реализация объекта полосы прокрутки. В отличие от объекта TScrollBar, который является потомком TView, GraphScrollBar является потомком GraphGroup. Программный интерфейс, однако, не изменился. Все поля и методы, реализованные для TScrollBar, реализованы и для GraphScrollBar. Подробное описание полей и методов смотри в "Turbo Vision Guide". ПАЛИТРА ------------------------------------------------------------ CScrollBar = #19#20#21#22#23; | | | | | основной ------Щ | | | | светлый ----------Щ | | | темный --------------Щ | | резерв------------------Щ--Щ 33 GraphScroller Grav ============================================================================ ------------- | GraphView | ------------- | | ----------------- | GraphScroller | ----------------- Объект GraphScroller является аналогом объекта TScroller. Подробное описание полей и методов см. в "Turbo Vision Guide". ПОЛЯ ----------------------------------------------------------- Step Step : TPoint Хранит размеры логического элемента скроллера. МЕТОДЫ ----------------------------------------------------------- GetDelta procedure GetDelta(var Delta : TPoint); Возвращает размеры скроллера в логических элементах. Вызывается в методe SetLimit. Полученные значения Delta.X и Delta.Y используются для установки корректных параметров полос прокрутки, связанных со скроллером. Значение Delta вычисляется следующим образом: with ADelta do begin X := Size.X div Step.X; Y := Size.Y div Step.Y; end; ПАЛИТРА ----------------------------------------------------------- CScroller = #24#25#26#27; | | | | нормальный фон --Щ | | | нормальный текст----Щ | | подсвеченный фон-------Щ | подсвеченный текст--------Щ 34 GraphStaticText Controls ============================================================================ ------------- | GraphView | ------------- | | ------------------- | GraphStaticText | ------------------- Объект GraphStaticText, аналогично объекту TStaticText в Turbo Vision, представляет собой простейший видимый элемент. Он содержит фиксированный текст и игнорирует любые события. ПОЛЯ ------------------------------------------------------------ Font Font : word; Определяет номер фонта, используемого для вывода текста на экран (см. модуль GFonts). CharSize CharSize : word; Определяет размер символов при выводе текста на экран. МЕТОДЫ ------------------------------------------------------------ Init constructor Init(var Bounds: TRect; AText: String; AFont,ACharSize : word); Создает объект типа GraphStaticText заданного размера, вызывая GraphView.Init. Сохраняет строку AText и присваивает полям Font и CharSize значения AFont и ACharSize соответственно. ПАЛИТРА ------------------------------------------------------------ CStaticText = #24#25; | | фон-------------Щ | текст--------------Щ 35 GraphView Grav ============================================================================ ----------- | TObject | ----------- | | --------------- | GraphView | --------------- Объект типа GraphView является аналогом объекта TView в Turbo Vision и является прародителем всех видимых элементов. ПОЛЯ ------------------------------------------------------------- Cursor Cursor : TPoint; Координаты текушего указателя в видимом элементе (аналог текущего указателя модуля Graph). Отображается на экране в виде курсора, если видимый элемент активен (sfActive) и курсор включен (sfCursorVis). Форма курсора зависит от состояния флага sfCursorIns. Некоторые методы рисования, определенные для GraphView, используют значение поля Cursor для определения начальной точки операции (например WriteText). МЕТОДЫ ------------------------------------------------------------- ChangeClipRect procedure ChangeClipRect; virtual; Изменяет размер минимального прямоугольника, который требуется перерисовать в процессе операции Draw. Никогда не перекрывается и не вызывается непосредственно. ChangeMouseCursor procedure ChangeMouseCursor; virtual; Изменяет мышиный курсор на связанный с данным видимым элементом, вызывая метод MakeActive соответствующего объекта типа TMouseCursor. GraphView.ChangeMouseCursor всегда использует объект типа TMouseCursor, на который указывает глобальная переменная StdMouseCursor. Этот метод может быть перекрыт для установки соответствия между видимым элементом и формой мышиного курсора. DragView procedure DragView(Event: TEvent; Mode: Byte; var Limits: TRect; MinSize, MaxSize: TPoint; RealMove : boolean); virtual; Выполняет те же функции, что и аналогичный метод TView. Отличие в том, что добавлен еще один параметр RealMove, который определяет, каким образом будет перемещаться видимый элемент. Если RealMove = true, то перемещается непосредственно видимый элемент. В противном случае по экрану перемещается только тонкая рамка, а сам видимый элемент остается на месте, пока не будет отпущена клавиша мышки, после чего он перемещается на новое место. Значение параметра RealMove = true разумнее использовать для перемещения объектов небольшого размера во избежание мерцания экрана. 36 GetColor function GetColor(Color: Word): Word; В отличие от метода TView.GetColor возвращает не значения основного и фонового цветов в младшем и старшем байтах соответственно, а значение одного цвета, определяемого индексом Color в палитре. Это связано с изменением внутренней структуры палитр цветов. RefreshRect procedure RefreshRect(Bounds : TRect); virtual; Используется для перерисовки прямоугольника Bounds, заданного в локальных координатах видимого элемента. Может быть использован для изменения видимого элемента, даже если он не является активным (State and sfFocused = 0). Никогда не перекрывается. Для примера см. модуль Arty. ResetClipRect procedure ResetClipRect; virtual; Восстанавливает размер минимального прямоугольника. Никогда не перекрывается и не вызывается непосредственно. SetDrawPort procedure SetDrawPort(Bounds : TRect); Изменяет размер и положение текущей области вывода графической подсистемы. Локальные координаты, переданные в параметре Bounds, преобразуются в глобальные, затем вызывается процедура SetViewPort модуля Graph. Используется в методе DrawView: .... GetClipRect(Bounds); SetDrawPort(Bounds); Draw; .... Желательно не использовать в других методах. Arc procedure Arc(Center : TPoint; StAngle, EndAngle, Radius: Word); Рисует дугу радуса Radius от StAngle до EndAngle, используя Center как центральную точку. Значение Сenter задается в локальных координатах видимого элемента. Bar procedure Bar(Bounds : TRect); Рисует закрашенный прямоугольник,используя текущие цвет и стиль закраски. Границы прямоугольника задаются в локальных координах видимого элемента. 37 BicolorRectangle procedure BicolorRectangle(Bounds : TRect; Light,Dark : word; Down : boolean); Рисует незакрашенный прямоугольник с размерами, заданными Bounds. Две прилегающие стороны рисуются цветом Light, две другие - цветом Dark. Используется для создания эффекта объемности. Например, BicolorRectangle(R,White,DarkGray,false) нарисует "выпуклую" область, левая и верхняя стороны будут белыми(подсвеченными), а правая и нижняя будут темно-серыми (затемненными). Соответственно, BicolorRectangle(R,White,DarkGray,true) нарисует "вдавленную" область. Circle procedure Circle(Center : TPoint; Radius : word); Рисует незакрашенный круг радуса R с центром Center, используя текущий цвет. DrawImg procedure DrawImg(Location : TPoint; Image : PImage; BitBlt : word); Выводит на экран образ, заданный параметром Image. Location - координата левого верхнего угла в локальных координатах. DrawPoly procedure DrawPoly(Number:Word; var PolyArray); Рисует полигон, используя текущий цвет и стиль линии. Параметр Number задает количество вершин, параметр PolyArray - массив координат вершин, заданных элементами типа TPoint. EllipticArc procedure EllipticArc(Center : TPoint; StAngle,EndAngle, XRadius,YRadius : word); Рисует эллиптическую дугу с радиусами XRadius и YRadius, от угла StAngle до угла EndAngle, используя Center как центральную точку и используя текущий цвет. Ellipse procedure Ellipse(Center : TPoint; XRadius,YRadius : word); Рисует эллипс с радиусами XRadius и YRadius, используя Center как центральную точку и используя текущий цвет. FillEllipse procedure FillEllipse(Center : TPoint; XRadius,YRadius : word); Рисует закрашенный эллипс с радиусами XRadius и YRadius, используя Center как центральную точку и используя текущий цвет и стиль закраски. 38 FillPoly procedure FillPoly(Number:Word; var PolyArray); Рисует закрашенный полигон, используя текущий стиль закраски. Параметр Number задает количество вершин, параметр PolyArray - массив координат вершин, заданных элементами типа TPoint Line procedure Line(Start,Stop : TPoint); Рисует линию из точки Start в точку Stop, используя текущий цвет и стиль линии. LineTo procedure LineTo(Point : TPoint); Рисует линию от текущей позиции, определяемой значением поля Cursor, до точки Point. MoveRect procedure MoveRect(Bounds : TRect; DeltaX,DeltaY : integer); Перемещает блок пикселов, заданный прямоугольником Bounds, на расстояние (DeltaX,DeltaY) внутри границ видимого элемента. PieSlice procedure PieSlice(Center : TPoint; StAngle, EndAngle, Radius: Word); Рисует закрашенный сектор с радиусом Radius от угла StAngle до угла EndAngle, используя Center как центральную точку. PutBitmap procedure PutBitmap(Location : TPoint; var BitMap; BitBlt : word); Аналог функции PutImage. Выводит на экран образ BitMap. Location - координата левого верхнего угла образа в локальных координатах видимого элемента. Выполняется отсечение по границе текущей области просмотра. PutPixel procedure PutPixel(Location : TPoint; Color : word); Присваивает пикселу, заданному Location, цвет Color. Rectangle procedure Rectangle(Bounds : TRect); Рисует прямоугольник с границами Bounds. Использует текущий цвет и стиль линии. WriteText procedure WriteText(S : String); выводит строку текста, используя текущий фонт начиная с текущей позиции в видимом элементе (см. поле Cursor). WriteTextXY procedure WriteTextXY(Point : TPoint; S : string); Выводит строку S начиная с позиции Point, используя текущий фонт. 39 WriteCtextXY procedure WriteCTextXY(Point : TPoint; S : string; TextColor,AccelColor : word); Выводит строку S начиная с позиции Point; Символы, заключенные в знаки "~", выводятся цветом AccelColor, остальные символы выводятся цветом TextColor. GraphWindow Grav ============================================================================ -------------- | GraphGroup | -------------- | | --------------- | GraphWindow | --------------- Объект GraphWindow является аналогом объекта TWindow. В реализацию GraphWindow внесены небольшие изменения. Например, исключено поле Number, так что окна в GraphVision не имеют номера и не могут быть выбраны комбинацией клавиш Alt-n (n от 0 до 9). В поле Flags дополнительно задействованы три битовых поля. Описание масок смотри в разделе "Константы" модуля Grav. Значение поля Palette по умолчанию равно wpGrayWindow. ПОЛЯ ------------------------------------------------------------ Frame Frame: PGraphView; Указатель на объект, реализующий рамку окна. Как указывалось выше, объект типа "рамка" теперь является внутренним для модуля Grav и недоступен из других модулей. Выполнять какие-либо операции над этим полем не рекомендуется. WorkSpace WorkSpace : PGraphView; Указатель на объект "рабочее пространство" типа GraphGroup. Все видимые элементы, добавляемые пользователем к объекту GraphWindow, фактически добавляются в эту группу (см. метод GraphWindow.Insert). Caption Caption : PGraphView; Указатель на объект "заголовок окна". Не рекомендуется выполнять какие-либо операции над этим полем. 40 МЕТОДЫ ------------------------------------------------------------ Init constructor Init(var Bounds: TRect; ATitle : TTitleStr; AFlags : word); Вызывает GraphGroup.Init(Bounds), присваивает полю Flags значение параметра AFlags, полю Palette - значение wpGrayWindow, создает и инициализирует группу WorkSpace. Вид создаваемого окна зависит от значения параметра AFlags: если установлены флаги wfThickFrame или wfThinFrame, окно будет иметь рамку; если установлен флаг wfTitle, окно будет иметь заголовок. Кроме того, при установленных флагах wfClose и wfZoom, к заголовку будут добавлены кнопки закрытия(Close) и и масштабирования (Zoom). Insert procedure Insert(P: PGraphView); virtual; Добавляет видимый элемент в рабочую область. Эквивалентно вызову WorkSpace^.Insert(P); Эсли же необходимо добавить видимый элемент к самому окну (например, полосу прокрутки для скроллера), используйте вызов GraphGroup.Insert(P); ПАЛИТРА ------------------------------------------------------------ Объекты окна используют по умолчанию палитру CGrayWindow. СGrayWindow = #13#14#15#16#17#18#19#20#21#22#23#24#25 + #26#27#28#29#30#31#32#33#34#35#36#37#38#39; CBlueWindow = #40#41#42#43#44#45#46#47#48#49#50#51#52 + #53#54#55#56#57#58#59#60#61#62#63#64#65#66; CCyanWindow = #67#68#69#70#71#72#73#74#75#76#77#78#79 + #80#81#82#83#84#85#86#87#88#89#90#91#92#93; Входы с 1 по 3 - цвета рабочей области (см палитру для GraphBackground), c 4 по 8 - цвета для кнопок: цвет фона,светлый, темный,разрешенный,запрещенный. с 9 по 14 - цвета рамки: основной,светлый, темный для активного окна, основной, светлый,темный для неактивного окна. с 15 по 18 - цвета заголовка: фон,текст для активного окна, фон,текст для неактивного окна. с 19 по 23 - цвета полосы прокрутки (см CScrollBar) с 24 по 27 - цвета скроллера (см CScroller) 41 T8x8BiosFont GFonts ============================================================================ ------------- | TBiosFont | ------------- | | ---------------- | T8x8BiosFont | ---------------- Встроенный фонт 8х8 является особым случаем, так как для него существуют две таблицы образов: одна для кодов 0 - 127, другая для кодов 128 - 256. Объект T8x8BiosFont и предназначен для работы с фонтом 8х8. ПОЛЯ ------------------------------------------------------------- Top Top : Pointer; Хранит указатель на таблицу образов для символов с кодами 128 - 255. МЕТОДЫ ------------------------------------------------------------- Init constructor Init(AName : string; ABase,ATop : Pointer; ABytes : word); Вызывает TBiosFont.Init и сохраняет указатель на вторую половину таблицы образов ATop в поле Top. Пример: var Info : BiosFontParams; Font : PFixedFont; ... GetFontParams(i,Info); with Info do if TwoPart then Font := New(P8x8BiosFont, Init(GetFontName(i),Base,Top, BytesPerChar)) else Font := New(PBiosFont,Init(GetFontName(i), ImageTable, Width, Height, BytesPerChar)); ... 42 GetCharImage function GetCharImage(Ch : Char) : Pointer; virtual; Перекрывает TBiosFont.GetCharImage. Если код символа Ch меньше 128, GetCharImage выдает указатель на образ в первой половине таблицы, на которую указывает поле ImageTable, наследуемое от TBiosFont. В противном случае GetCharImage выдает указатель на образ из таблицы, на которую указывает поле Top. TBGIFont GFonts =========================================================================== --------- | TFont | --------- | | ------------ | TBGIFont | ------------ Объект TBGIFont предназначен для работы со стандартными BGI фонтами. ПОЛЯ ------------------------------------------------------------ ID ID : integer; Содержит код BGI фонта, предопределенный в модуле Graph или присвоенный функцией InstallUserFont. МЕТОДЫ ------------------------------------------------------------ Init constructor Init(AName : String; AID : Integer); Вызывает TFont.Init и присваивает полю ID значение параметра AID. Пример: var BGIFont : TBGIFont; begin ... BGIFont.Init('Triplex',TriplexFont); {создается объект типа TBGIFont для работы со стандартным фонтом TriplexFont} ... CanFillBackground function CanFillBackground : boolean; virtual; Перекрывает TFont.CanFillBackground. Возвращает false, так как стандартные BGI фонты не изменяют пикселы фона. 43 TextWidth function TextWidth(S : String) : integer; virtual; Перекрывает TFont.TextWidth. Вызывает функцию TextWidth модуля Graph. TextHeight function TextHeight(S : String) : integer; virtual; Перекрывает TFont.TextHeight. Вызывает функцию TextHeight модуля Graph. OutText procedure OutText(S : String); virtual; Перекрывает TFont.OutText. Вызывает функцию OutText модуля Graph. OutTextXY procedure OutTextXY(Location : TPoint; S : String); virtual; Перекрывает TFont.OutTextXY. Вызывает функцию OutTextXY модуля Graph. SetTextStyle procedure SetTextStyle(Direction,Size : word); virtual; Перекрывает TFont.SetTextStyle; Вызывает процедуру SetTextStyle модуля Graph: Graph.SetTextStyle(Id,Direction,Size); GetCharHeight function GetCharHeight(Ch : Char) : word; virtual; Перекрывает TFont.GetCharHeight. GetCharWidth function GetCharWidth(Ch : Char) : word; virtual; Перекрывает TFont.GetCharWidth. TBiosFont GFonts ============================================================================ -------------- | TFixedFont | -------------- | | ------------- | TBiosFont | ------------- Этот объект предназаначен для работы со встроенными фонтами видеоадаптера. Он наследует все основные методы объекта TFixedFont. 44 ПОЛЯ ----------------------------------------------------------- Bytes Bytes : word Хранит размер образа символа (Это поле необходимо потому, что размер образа символа для встроенных фонтов может отличаться от того значения, которое может быть расчитано при помощи метода TFixedFont.BytesPerChar). МЕТОДЫ ---------------------------------------------------------- Init constructor Init(AName : String; AImageTable : Pointer; AWidth,AHeight,ABytes : word); Вызывает TFixedFont.Init, установив параметры First и Count равными 0 и 255 соответственно, и сохраняет значение параметра ABytes в поле Bytes. Пример var Info : BiosFontParams; Font : PFixedFont; ... begin ... for i = 1 to GetMaxFont do begin GetFontParams(i,Info); with Info do Font := New(PBiosFont,Init(GetFontName(i),ImageTable, Width, Height, BytesPerChar)); ... end; ... end. см. описания типа BiosFontParams, функций GetMaxFont и GetFontName, процедуры GetFontParams BytesPerChar function BytesPerChar(Ch : Char) : word; virtual; Перекрывает TFixedFont.BytesPerChar. Возвращает значение поля Bytes. TBmpFilter Images ============================================================================ ----------- | TFilter | ----------- | | -------------- | TBmpFilter | -------------- 45 Специализированный объект, реализующий фильтр для файлов формата Windows и OS/2 .BMP. В данной версии реализован только импорт .bmp файлов. ПОЛЯ ------------------------------------------------------------- Header Header : TBitmapInfoHeader; Содержит данные из служебного заголовка графического файла формата Windows или OS/2 bmp. Описание структуры TBitmapInfoHeader можно найти в справочной системе Borland Pascal 7 МЕТОДЫ ------------------------------------------------------------- Open procedure Open(AName : FNameStr); virtual; Создает поток, связанный с файлом AName, и сохраняет указатель на него в поле Stream. Затем вызывает метод GetHeader, который считывает служебный заголовок .bmp файла и помещает его в поле Header. GetSize procedure GetSize(var ASize : TPoint); virtual; Возвращает размеры загружаемого изображения: ASize.X := integer(Header.biWidth); ASize.Y := integer(Header.biHeight); GetHeader procedure GetHeader; virtual; Считывает служебный заголовок .bmp файла и помещает его в поле Header. LoadImage procedure LoadImage(AImage : PImage); virtual; Считывает данные из потока Stream^ и заполняет ими область данных объекта AImage^. Save procedure Save(AName : FNameStr; AImage : PImage); virtual; В данной версии не реализован. Пустой метод, который может быть переопределен. SaveImage procedure SaveImage(AImage : PImage); virtual; В данной версии не реализован. Пустой метод, который может быть переопределен. 46 TByteFlow ExtObj ============================================================================ ----------- | TObject | ----------- | | -------------- | TByteFlow | -------------- TByteFlow предназначен для хранения произвольных данных в виде потока байт. ПОЛЯ ------------------------------------------------------------- Size Size : word; Размер данных в байтах; Data Data : pointer; Указатель на данные, ассоциированные с объектом МЕТОДЫ ------------------------------------------------------------- Init constructor Init(ASize : word; AData : pointer); Вызывает ТОbject.Init; присваивает полям Size и Data значения параметров ASize и AData. Done destructor Done; virtual; Если Data <> nil, освобождает память, занятую данными, затем вызывает TObject.Done; Load constructor Load(var S : TStream); Создает объект TByteFlow, читает из потока S поле Size, распределяет память соответствующего размера, читает данные из потока S и сохраняет указатель на них в поле Data. Store procedure Store(var S : TStream); Записывает в поток поле Size и данные, на которые указывает поле Data. 47 TDefaultBGIFont GFonts ============================================================================ ------------ | TBGIFont | ------------ | | ------------------- | TDefaultBGIFont | ------------------- Особый случай объекта TBGIFont для фонта DefaultFont. При использовании этого стиля текста процедуры OutText и OuttextXY модуля Graph вообще не выводят текст, если его левый край выходит за границу области просмотра, поэтому соoтветствующие методы для объекта TDefaultBGIFont переопределены таким образом, чтобы эмулировать отсечение текста. МЕТОДЫ ------------------------------------------------------------ OutText procedure OutText(S : String); virtual; Перекрывает TBGIFont.OutText. Эмулирует отсечение текста по границе области просмотра. OutTextXY procedure OutTextXY(Location : TPoint; S : String); virtual; Перекрывает TBGIFont.OutTextXY. Эмулирует отсечение текста по границе области просмотра. TextListBox Controls ============================================================================ ---------------- | GraphListBox | ---------------- | | --------------- | TextListBox | --------------- Реализует объект для работы с коллекцией строк, т.е. функционально аналогичный объекту TListBox в Turbo Vision. Методы ------------------------------------------------------------ DrawItem procedure DrawItem(Item : integer); virtual; Изображает на экране элемент коллекции Item как строку символов, используя системный фонт и текущий цвет. GetItemSize procedure GetItemSize(var ItemSize : TPoint); virtual; Возвращает в переменной ItemSize размеры изображения элемента списка. 48 GetText function GetText(Item: Integer; MaxLen: Integer): String; virtual; Возвращает строку для элемента Item. В отличие от TListBox.GetText, параметр MaxLen определяет не длину строки в символах, а ее ширину в пикселах для текущего системного фонта. Может быть переопределен. TFilter Images =========================================================================== ----------- | TObject | ----------- | | ----------- | TFilter | ----------- Абстрактный объект, предназначенный для построения фильтров для импорта/экспорта файлов различных графических форматов. ПОЛЯ ------------------------------------------------------------ Stream Stream : PStream; Указатель на поток, связанный с текущим обрабатываемым файлом. ErrorCode ErrorCode : integer; Хранит код последней ошибки, произошедшей во время обработки графического файла. МЕТОДЫ ----------------------------------------------------------- Load constructor Load(var S : TStream); Не выполняет никаких действий, кроме вызова TObject.Init. Может быть переопределен для потомков объекта TFilter. Open procedure Open(AName : FNameStr); virtual; Создает поток, связанный с файлом AName, и присваивает указатель на него полю Stream. Абстрактный метод, котороый должен быть переопределен для портомков объекта TFilter. 49 GetHeader procedure GetHeader; virtual; Загружает в память служебный заголовок файла, содержащего графические данные. Абстрактный метод, который должен быть переопределен для потомков объекта TFilter. GetSize procedure GetSize(var ASize : TPoint); virtual; Возвращает в параметре ASize размер изображения в пикселах. Абстрактный метод, который должен быть переопределен для потомков объекта TFilter. LoadImage procedure LoadImage(AImage : PImage); virtual; Считывает данные из потока Stream^, выполняет необходимые преобразования и записывает данные построчно в область данных объекта AImage. Абстрактный метод, который должен быть переопределен для потомков объекта TFilter. Save procedure Save(AName : FNameStr; AImage : PImage); virtual; Создает файл соответствующего графического формата и сохраняет в нем данные из объекта AImage. Абстрактный метод, который должен быть переопределен для потомков объекта TFilter. SaveImage procedure SaveImage(AImage : PImage); virtual; Сохраняет в потоке Stream^ данные из объекта AImage^ в соответствующем графическом формате. Абстрактный метод, который должен быть переопределен для потомков объекта TFilter. Store procedure Store(var S : TStream); Сохраняет объект типа TFilter в потоке S; TFixedFont GFonts =========================================================================== --------------- | TRasterFont | --------------- | | -------------- | TFixedFont | -------------- В этом объекте реализованы методы для работы с фонтами, имеющими фиксированные размеры образов символов. 50 ПОЛЯ ------------------------------------------------------------ CharWidth CharWidth : word; Ширина символов в пикселах. МЕТОДЫ ----------------------------------------------------------- Init constructor Init(AName : String; AImageTable : Pointer; First,Count : byte; AWidth,AHeight : word); Вызывает TRasterFont.Init и присваивает полям CharWidth и CharHeight значения параметров AWidth и AHeight соответственно. BytesPerChar function BytesPerChar(Ch : Char) : word; virtual; Перекрывает TRasterAFont.BytesPerChar. Размер образа символа расчитывается следующим образом: i := CharWidth div 8; if (CharWidth mod 8) <> 0 then inc(i); BytesPerChar := CharHeight * i; GetCharWidth function GetCharWidth(Ch : Char) : word; virtual; Перекрывает TRasterFont.GetCharWidth. Возвращает значение поля CharWidth. GetCharImage function GetCharImage(Ch : Char) : Pointer; virtual; Перекрывает TRasterFont.getCharImage. Возвращает указатель на образ символа, если FirstChar <= код символа <= FirstChar + CharCount и nil в противном случае. OutText procedure OutText(S : String); virtual; Выводит строку S на экран начиная с текущей позиции. OutTextXY procedure OutTextXY(Location : TPoint; S : String); virtual; Выводит строку S на экран начиная с позиции Location. 51 TFont GFonts =========================================================================== ----------- | TObject | ----------- | | --------- | TFont | --------- Абстрактный тип для реализаций любого типа фонтов. ПОЛЯ ------------------------------------------------------------- FontName FontName : String; Содержит имя фонта. МЕТОДЫ ------------------------------------------------------------- Init constructor Init(AName : String); Вызывает TObject.Init и присваивает полю FontName значение параметра. CanFillBackground function CanFillBackground : boolean; virtual; Возвращает true, если фонт умеет изменять цвет фоновых пикселей. TFont.CanFillBackground просто возвращает true. TextWidth function TextWidth(S : String) : integer; virtual; Метод TextWidth возвращает длину строки S в пикселах. Это абстрактный метод, который должен быть переопределен у потомков объекта TFont. TextHeight function TextHeight(S : String) : integer; virtual; Метод TextHeight возвращает высоту строки S в пикселах. Это абстрактный метод, который должен быть переопределен у потомков объекта TFont. OutText procedure OutText(S : String); virtual; Метод OutText выводит строку S начиная с текущей позиции экрана. Это абстрактный метод, который должен быть переопределен. OutTextXY procedure OutTextXY(Location : TPoint; S : String); virtual; Метод OutTextXY выводит строку S начиная с позиции, заданной параметром Location. Это абстрактный метод, который должен быть переопределен. SetTextStyle procedure SetTextStyle(Direction,Size : word); virtual; Делает фонт активным и устанавливает характеристики вывода текста (направление, размер). Абстрактный метод. Не должен испльзоваться непосредственно, а только косвенно через вызов глобальной процедуры SetTextStyle. 52 GetFontName function GetFontName : String; Возвращает строку с именем фонта. CetCharHeight function GetCharHeight(Ch : Char) : word; virtual; Возвращает высоту в пикселах символа Ch. Абстрактный метод, должен быть переопределен. CetCharWidth function GetCharWidth(Ch : Char) : word; virtual; Возвращает ширину в пикселах символа Ch. Абстрактный метод, должен быть переопределен. TImage Images =========================================================================== ----------- | TObject | ----------- | | ---------- | TImage | ---------- TImage предназначен для хранения изображений произвольных размеров. ПОЛЯ ----------------------------------------------------------- Size Size : TPoint; Размеры образа в пикселах. Data Data : PStream; Указатель на поток, в котором хранится изображение. МЕТОДЫ ------------------------------------------------------------- Init constructor Init(ASize : TPoint); Присваивает полю Size значение параметра ASize, и создает поток, в котором будет храниться изображение. Import constructor Import(AName : FNameStr; AFilter : PFilter); Загружает изображение из файла AName используя фильтр графических форматов, на который указывает параметр AFilter. 53 Load constructor Load(var S : TStream); Загружает изображение из потока S. Сначала загружает из потока объект - графический фильтр, затем, с помощью вызова Filter^.LoadImage(@Self) загружает из потока S изображение, хранящееся в каком-либо графическом формате. Done desctructor Done; virtual; Уничтожает объект-поток, в котором хранится изображение, затем вызывает TObject.Done. Export procedure Export(AName : FNameStr; AFilter : PFilter); Сохраняет образ в файле AName в графическом формате, определяемым типом графического фильтра AFilter. GetBytesPerLine function GetBytesPerLine : integer; Возвращает количество байтов, необходимых для хранения одной строки пикселов образа. GetLine procedure GetLine(Line : integer; var Buffer); Считывает строку образа с номером Line и помещает ее в буфер Buffer. PutLine procedure PutLine(Line : integer; var Buffer); Записывает строку пикселов, находящуюся в буфере Buffer, в образ на место строки Line. Draw procedure Draw(X,Y : integer; BitBlt : word); Выводит образ на экран. X,Y - координаты левого верхнего угла изображения относительно текущей области вывода. Параметр BitBlt задает режим записи в видеопамять. TMouseCursor ExtObj =========================================================================== ----------- | TObject | ----------- | | ---------------- | TMouseCursor | ---------------- TMouseCursor предназначен для создания, хранения и управления курсором мыши. 54 ПОЛЯ ------------------------------------------------------------- Size Size : TPoint; Хранит размеры образа курсора. HotSpot HotSpot : TPoint; Координаты "горячего пятна" Shape Shape : pointer; Указатель на образ курсора МЕТОДЫ ------------------------------------------------------------- Init constructor Init(ASize, AHotSpot : TPoint; AndPlane,XorPlane : Pointer); Вызывает TObject.Init; присваивает полям Size и HotSpot значения параметров ASize и AHotSpot; выделяет память для образа курсора и сохраняет AND и XOR маски. Load constructor Load(var S : TStream); Читает из потока S поля Size и HotSpot, а также образ курсора. Done destructor Done; virtual; Освобождает память, занятую под образ курсора, и вызывает TObject.Done. MakeActive procedure MakeActive; Изменяет вид курсора мыши, вызывая процедуру SetMouseShape. Store procedure Store(var S : TStream); Сохраняет информацию о мышином курсоре в потоке S: записывает значения полей Size и HotSpot, а также образ курсора. 55 TRasterFont GFonts =========================================================================== --------- | TFont | --------- | | --------------- | TRasterFont | --------------- Это абстрактный тип, являющийся основой для реализации различных видов растровых фонтов, в том числе встроенных фонтов видеоадаптера. ПОЛЯ ------------------------------------------------------------ ImageTable ImageTable : pointer; Указатель на таблицу образов символов. FirstChar FirstChar : byte; Код первого символа, для которого определен образ в таблице образов. CharCount CharCount : byte; Количество образов в таблице образов (на 1 меньше реального). CharHeight CharHeight : word; Высота символов в пикселах. МЕТОДЫ ------------------------------------------------------------ Init constructor Init(AName : String; AImageTable : Pointer; First,Count : byte); Вызывает TFont.Init, сохраняет указатель на таблицу образов в поле ImageTable, значение параметра First в поле FirstChar и значение параметра Count в поле CharCount. BytesPerChar function BytesPerChar(Ch : Char) : word; virtual; Возвращает размер образа в байтах для символа Ch. Абстрактный метод. Должен быть переопределен в объектах-потомках. TRasterFont.BytesPerChar просто возвращает 0. GetCharImage function GetCharImage(Ch : Char) : Pointer; virtual; Возвращает указатель на образ символа Ch. Абстрактный метод. Должен быть переопределен в объектах-потомках. TRasterFont.GetCharImage просто возвращает nil. GetCharHeight function GetCharHeight(Ch : Char) : word; virtual; Перекрывает TFont.GetCharHeight. 56 TextHeight function TextHeight(S : String) : integer; virtual; Перекрывает TFont.TextHeight. TextWidth function TextWidth(S : String) : integer; virtual; Перекрывает TFont.TextWidth. TSharedResourceCollection ExtObj =========================================================================== --------------------- | TStringCollection | --------------------- | | ----------------------------- | TSharedResourceCollection | ----------------------------- Этот объект используется объектом TSharedResource. Каждый элемент коллекции содержит поля Resource,Count и Key, которые являются указателями на объект-ресурс, счетчиком использования и именем ресурса соответственно. Переопределяет методы FreeItem и KeyOf TSharedResource ExtObj ============================================================================ ----------- | TObject | ----------- | | ------------------- | TSharedResource | ------------------- TSharedResource предназначен для управления разделяемыми ресурсами, т.е. ресурсами, которые могут быть использованы несколькими "клиентами" одновременно. В памяти при этом хранится только один экземпляр ресурса. ПОЛЯ ------------------------------------------------------------- ResourceFile ResourceFile : PResourceFile; Указатель на объект типа TResourceFile, в котором хранятся ресурсы. 57 МЕТОДЫ ------------------------------------------------------------- Init constructor Init(AResourceFile : PresourceFile); Вызывает TObject.Init, инициализирует коллекцию ресурсов, присваивает полю ResourceFile значение переданного параметра. Done destructor Done; virtual; Выгружает все загруженные ресурсы, удаляет индекс ресурсов и закрывает файл ресурсов, заданный полем ResourceFile. Count function Count : integer; Возвращает количество загруженных ресурсов. Free proceure Free(Key : String); Если ресурс с именем Key загружен, его счетчик использования уменьшается на единицу. Если счетчик становится равным нулю, ресурс удаляется из памяти. Get function Get(Key : String) : PObject; Если ресурс с именем Key уже загружен, его счетчик использования увеличивается на единицу и функция Get возвращает указатель на него. В противном случае ресурс загружается из файла ресурсов, заданного полем ResourceFile. Если ресурс с именем Key не найден в файле ресурсов, функция Get возвращает nil. KeyAt function KeyAt(I : integer) : String; Возвращает имя ресурса с номером I. TXmsStream ExtObj =========================================================================== ----------- | TObject | ----------- | | -------------- | TXmsStream | -------------- TXmsStream - это объект, реализующий потоки в XMS памяти. Два дополнительных поля предназначены для хранения размера потока и его текущей позиции. Этот тип объектов определен только в версии для реального режима. 58 ПОЛЯ ------------------------------------------------------------- Size Size : LongInt; Размер потока в байтах. Position Position : LongInt; Текущая позиция в потоке. Начальная позиция равна 0. МЕТОДЫ ------------------------------------------------------------- Init constructor Init(ALimit : LongInt); Создает поток в XMS памяти с заданным минимальным размером в байтах. Вызывает TStream.Init, проверяет наличие XMS памяти, и, если она доступна, пытается распределить блок XMS-памяти, достаточный для размешения ALimit байтов. Если XMS-память отсутствует, или произошла ошибка при выделении блока памяти, вызывается метод Error c аргументом stInitError. Done destructor Done; virtual; Освобождает занятую XMS память, тем самым уничтожая поток. Никогда не перекрывается. GetPos function GetPos : LongInt; virtual; Возврашает текущую позицию в потоке. Никогда не перекрывается. GetSize function GetSize : LongInt; virtual; Возвращает размер потока в байтах. Никогда не перекрывается. Seek procedure Seek(Pos : LongInt); virtual; Устанавливает текущую позицию потока равной Pos. Никогда не перекрывается. Trunkate procedure Truncate; virtual; Удаляет все данные , начиная с текущей позиции до конца файла. Текущая позиция становится новым концом файла. Никогда не перекрывается. Read procedure Read(var Buf; Count : word); virtual; Читает Count байтов в буфер Buf, начиная с текущей позиции. Никогда не перекрывается. Write procedure Write(var Buf; Count : word); virtual; Записывает Count байтов из буфера Buf, начиная с текущей позиции. Никогда не перекрывается. 59 О Б Щ И Й С П Р А В О Ч Н И К 3 ---------------------------------------------------------------------------- BiosFontParams тип GFonts ============================================================================ Объявление BiosFontParams = record Width : word; Height : word; BytesPerChar : word; case TwoPart : boolean of false : (ImageTable : Pointer); true : (Base,Top : Pointer); end; Функция Записи типа BiosFontParams служат для получения характеристик встроенных экранных фонтов. В них передается информация о высоте и ширине символа, количество байт в образе символа, указатель на таблицу образов (в случае фонта 8x8 передается 2 указателя: Base - указатель на первую половину таблицы (коды 0-127), Top - указатель на вторую половину таблицы (коды 128-255)). BitPerPlane переменная LowGraph ============================================================================ Объявление BitPerPlane : integer; Функция Количество битов в битовой карте, необходимое для хранения одного пиксела. bsXXXXXXX константы Grav ============================================================================ Функция Константы стилей фона для объекта типа GraphBackground Значения константа значение смысл -------------------------------------------------------------- bsNone 0 Фон рисуется без границы bsBump 1 Выпуклый фон bsDip 2 Вдавленный фон 60 BytesPerLine переменная LowGraph ============================================================================ Объявление BytesPerLine : integer; Функция Длина скан-линии в байтах для текущего видеорежима. CanFillBackground функция GFonts ============================================================================ Объявление function CanFillBackground : boolean; Функция Возвращает true, если текущий фонт умеет изменять цвет фоновых пикселов. Аналогична вызову PFont(Fonts^.At(CurrentFont))^.CanFillBackground; ConvertPixRow процедура LowGraph ============================================================================ Объявление procedure ConvertPixRow(var Source,Dest; Width : word; var Palette : TPaletteType); Функция Преобразует строку пикселов. Source - исходный массив, в котором каждый пиксел занимает один байт. Dest - массив, в котором сохраняется результат операции. Структура массива Dest зависит от текущего видеорежима и соответствует формату хранения пикселов в видеопамяти. Параметр Width задает длину строки пикселов. Palette - таблица перекодировки цветов. Процедура ConvertPixRow используется в модуле Images при импорте файлов различных графических форматов. CstrToStr процедура EventMan ============================================================================ Объявление procedure CStrToStr(Source : string; var Dest : string); Функция Копирует строку Source в строку Dest, удаляя при этом все тильды ('~'). CurrentFont переменная GFonts ============================================================================ Объявление CurrentFont : integer = 0; Функция Номер текущего используемого фонта. Номер текущего фонта может быть установлен с помощью процедуры SetTextStyle из модуля GFonts. Некоторые процедуры, такие как OutText, OutTextXY, TextWidth и т.д., используют номер текущего фонта. 61 CursorAreaSize переменная LowGraph ============================================================================ Объявление CursorAreaSize : word; Функция Размер буфера, необходимый для сохранения области экрана, перекрываемой курсором мыши. Устанавливается при инициализации видеорежима. Используется в режиме эмуляции мышиного курсора. DoneFonts процедура GFonts ============================================================================ Обявление procedure DoneFonts; Функция Уничтожает коллекцию фонтов. DoneVideo процедура GrDriver ============================================================================ Объявление procedure DoneVideo; Функция Завершает работу с графической подсистемой. DrawChar процедура LowGraph ============================================================================ Объявление procedure DrawChar(X,Y : integer; Width,Height : word; Fore,Back : word; FillBackgr : boolean; Image : pointer); Функция Начиная с позиции (X,Y) рисует на экране символ, на образ которого указывает параметр Image. Ширина и высота символа задаются параметрами Width и Height соответственно. Символ рисуется цветом Fore. Если параметр FillBackground = true, фон заполняется цветом Back. Предполагается, что символ не пересекает границ экрана. DrawImage процедура GrDriver ============================================================================ Объявление procedure DrawImage(X,Y : integer; var Bitmap; BitBlt : word); Функция Выводит на экран битовый образ. Улучшенная версия процедуры PutImage из модуля Graph. Выполняет отсечение изображения на границе текущей области вывода (viewport). 62 DrawMouseShape процедура LowGraph ============================================================================ Объявление procedure DrawMouseShape(X,Y : integer; var Shape); Функция Рисует на экране мышиный курсор. Параметры X и Y задают координаты левого верхнего угла курсора. Буфер Shape содержит маски образа курсора. Процедура DrawMouseShape выполняет отсечение образа мышиного курсора на границе экрана. В настоящей версии поддерживаются только курсоры размера 16x16 точек. DriverMode переменная GrDriver ============================================================================ Объявление DriverMode : integer = Vga640x480; Функция Соовместно с переменной DriverType определяет используемый видеорежим. Допустимые значения видеорежимов для каждого драйвера приведены в описании констант Vesa*. Для инициализации нужного режима видеодрайвера необходимо присвоить переменной DriverMode соответствующее значение перед вызовом процедуры InitVideo: DriverType := Vesa16; { драйвер VESA 16 цветов } DriverMode := Vesa16_1024x768; { режим 1024 x 768 } InitVideo; Смотри также DriverType, InitVideo. DriverPaths переменная GrDriver ============================================================================ Объявление DriverPaths : array[0..2] of string = ('','',''); Функция Используется процедурой InitVideo при инициализайии графической продсистемы. По значению переменной DriverType выбирается строка с именем каталога, в котором находится используемый драйвер. По умолчанию считается, что драйвер находится в текущем каталоге. Если драйвер находится где-то в другом каталоге, необходимо указать путь к нему до вызова процедуры InitVideo: DriverType := Vesa16; { используем дрйвер Vesa 16 цветов} DriverMode := Vesa16_800x600; DriverPaths[DriverType] := 'c:\tp\bgi'; InitVideo; 63 DriverType переменная GrDriver ============================================================================ Объявление DriverType : integer = StandardVga; Функция Определяет тип видеодрайвера, используемого при выполнении программы. Переменной DriverType может быть присвоено одно из следующих значений: StandardVGA - иcпользовать драйвер стандартного VGA. Vesa16 - будет использоваться драйвер VESA 16 цветов. Vesa256 - будет использоваться драйвер VESA 256 цветов. По умолчанию используется драйвер стандартного VGA. Чтобы использовать какой-либо другой драйвер, необходимо присвоить переменной DriverType соответствующее значение перед вызовом процедуры InitVideo. Смотри также DriverMode, InitVideo. EmulateMouseCursor переменная LowGraph ============================================================================ Объявление EmulateMouseCursor : boolean = false; Функция Флаг эмуляции курсора мыши. По умолчанию эмуляция мышиного курсора отключена и отображение мышиного курсора выполняется системным драйвером мыши. Однако стандартные драйверы мыши не поддерживают режимы Vesa, и курсор на экране не отображается. Для включения эмуляции курсора необходимо присвоить переменной EmulateMouseCursor значение true перед инициализацией менеджера событий: EmulateMouseCursor := true; InitVideo; InitEvents; ..... Смотри также InitEvents. 64 ExtractImage процедура LowGraph ============================================================================ Объявление procedure ExtractImage(X1,Y1,X2,Y2 : integer; var Source, Dest); Функция Копирует часть образа из буфера Source в буфер Dest. Параметры X1,Y1,X2,Y2 указываются в пикселах и задают координаты копируемой части образа в буфере Source. Source должен содержать образ в формате GetImage/PutImage. Образ в буфере Dest также будет иметь формат GetImage/PutImage. FalseMode переменная LowGraph ============================================================================ Объявление FalseMode : byte; Функция Используется для обмана драйвера мыши во время инициализации менеджера событий в Vesa видеорежимах. Устанавливается во время инициализации видеорежима. Для 16-цветных режимов используется значение $12, для 256-цветных режимов используется значение $13. Код стандартного видеорежима, хранящийся в переменной FalseMode, записывается перед инициализацией мыши по адресу $40:$49. В результате при вызове функции "mouse reset" (int $33, ax=0) драйвер мыши воспринимает текущий видеорежим как стандартный. FillBackGround переменная GFonts ============================================================================ Объявление FillBackground : boolean = true; Функция Если FillBackgrount = true, то при выводе текста фоновые пикселы будут заполняться цветом, заданным в последнем вызове процедуры SetFillStyle. FillBackground := true; SetFillStyle(SolidFill,Yellow); OutText('Text with yellow background'); ...... FillBackGround := false; OutText('Do not fill background'); Fonts переменная GFonts ============================================================================ Объявление Fonts : PCollection; Функция Указатель на коллекцию объектов фонтов. Коллекция создается процедурой InitFonts. Смотри также TFont 65 GetNearestColor функция LowGraph ============================================================================ Объявление function GetNearestColor(Count : Integer; rgbRed,rgbGreen,rgbBlue : byte) : byte; Функция Для цвета, заданного параметрами rgbRed,rgbGreen и rgbBlue, возвращает номер наиболее подходящего цвета из стандартной палитры BIOS. Параметр Count задает количество элементов палитры BIOS, среди которых производится поиск. Используется в модуле Images для создания таблицы перекодировки цветов из внутренней палитры импортируемого графического файла в стандартную палитру BIOS. Смотри также TPaletteType, ConvertPixRow Hot переменная Eventman ============================================================================ Объявление Hot : TPoint = (X : 0, Y :0 ); Функция Координаты горячего пятна мышиного курсора. Используется при эмуляции курсора процедурами отображения курсора. InitEvents процедура EventMan ============================================================================ Объявление procedure InitEvents; Функция Инициализирует менеджер событий GraphVision. Если драйвер мыши установлен и EmulateMouseCursor = true, перехватывает вектор прерывания int $33 и устанавливает собственную подпрограмму обработки обращений к функциям управления мышью. Смотри также EmulateMouseCursor, FalseMode InitFonts процедура GFonts ============================================================================ Объявление procedure InitFonts; Функция Инциализирует коллекцию фонтов, добавляет в нее объект типа TDefaultBGIFont (так что фонт DefaultFont всегда присутствует, и соответсвующий ему объект в коллекции фонтов имеет номер 0), определяет количество встроенных фонтов,вызывая функцию GetMaxFont, и для каждого из этих фонтов вызывает процедуру GetFontParams, создает объект типа TBiosFont (или T8x8BiosFont для фонта 8х8) и добавляет этот объект в коллекцию фонтов. 66 InitVideo процедура GrDriver ============================================================================ Объявление procedure InitVideo; Функция Инициализирует графическую подсистему и устанавливает требуемый видеорежим. Выполняются следующие действия: 1. Устанавливет драйверы, имена которых указаны в массиве VesaDriverNames; 2. Вызывается процедура регистрации драйверов, если она определена 3. Вызывается процедура InitGraph, которая устанавливает необходимый видеорежим. 4. В зависимости от используемого режима устанавливаются значения следующих переменных: SwitchBank, ScreenWidth, ScreenHeight, BitPerPlane, Planes BytesPerLine Если при инициализации графической подсистемы произошла ошибка, на экран выводится соответствующее сообщение и программа аварийно завершается. LockMouseCursor переменная Grav ============================================================================ Объявление LockMouseCursor : word = 0; Функция Флаг возможности изменения формы мышиного курсора. Если LockMouseCursor = 0, то изменение формы курсора разрешено. MinWinSize переменная Grav ============================================================================ Объявление MinWinSize: TPoint = (X: 124; Y: 84); Функция Определяет минимальный размер окна. 67 MouseInRect функция EventMan ============================================================================ Объявление function MouseInRect(Bounds : TRect) : boolean; Функция Возвращает true, если курсор мыши полностью или частично находится в области Bounds. Параметр Bounds должен содержать глобальные (экранные) координаты. Пример ... GetExtent(R); with R do begin MakeGlobal(A,A); MakeGlobal(B,B); end; if MouseInRect(R) then HideMouse; ... MouseOwner переменная Grav ============================================================================ Объявление MouseOwner : PGraphView = nil; Функция Указатель на видимый элемент, в границах которого в данный момент находится мышь. MouseShape переменная EventMan ============================================================================ Объявление MouseShape : pointer = nil; Функция Указатель на текущий образ мышиного курсора. MoveBlock процедура GrDriver ============================================================================ Объявление procedure MoveBlock(X1,Y1,X2,Y2 : integer; DeltaX,DeltaY : integer); Функция Копирует блок пикселов, границы которого заданы параметрами X1,Y1,X2 и Y2. Коррдинаты задаются относительно текущей области вывода. Параметры DeltaX и DeltaY задают расстояние и направление переноса. Выполняется отсечение на границе текущей области вывода. Смотри также MovePixels 68 MovePixels процедура LowGraph ============================================================================ Объявление procedure MovePixels(X1,Y1,X2,Y2 : integer; DeltaX,DeltaY : integer); Функция Копирует блок пикселов, границы которого заданы параметрами X1,Y1,X2 и Y2. Координаты задаются относительно границ экрана. Параметры DeltaX и DeltaY задают расстояние и направление переноса. Предполагается, что как исходные, так и новые координаты находятся в границах экрана. ofXXXXXX константы Grav ============================================================================ Функция Новые флаги для поля GraphView.Options Значения Константа Назначение -------------------------------------------------------------- ofNoDrawSelect Видимый элемент не перерисовывается при выборе ofResizeable Видимый элемент может изменять размер ofMoveable Видимый элемент может быть перемещен OutText процедура GFonts ============================================================================ Объявление procedure OutText(S : String); Функция Выводит на экран строку текста начиная с текущей позиции на экране и используя текущий фонт из коллекции фонтов. Аналогична вызову PFont(Fonts^.At(CurrentFont))^.OutText(S); Смотри также TFont.OutText, CurrentFont, Fonts OutTextXY процедура GFonts ============================================================================ Объявление procedure OutTextXY(Location : TPoint; S : String); Функция Выводит на экран строку текста, начиная с позиции Location и используя текущий фонт из коллекции фонтов. Аналогична вызову PFont(Fonts^.At(CurrentFont))^.OutTextXY(Location,S); Смотри также TFont.OutText, CurrentFont, Fonts 69 Planes переменная LowGraph ============================================================================ Объявление Planes : integer; Функция Количество битовых карт в видеопамяти для текущего режима. Устанавливается во время инициализации видеорежима. RegisterProc переменная GrDriver ============================================================================ Объявление RegisterProc : procedure = nil; Функция Указатель на процедуру регистрации BGI драйверов. Процедура InitVideo проверяет значение этой процедурной переменной, и если значение не равно nil, вызывается связанная с переменной процедура регистрации. procedure MyRegisterProc; begin ... end; begin RegisterProc := MyRegisterProc; ... InitVideo; ... end; Смотри описание процедуры InitVideo. ScreenHeight переменная LowGraph ============================================================================ Объявление ScreenHeight : integer; Функция Хранит высоту экрана в пикселах. Устанавливается во время инициализации видеорежима. ScreenWidth переменная LowGraph ============================================================================ Объявление ScreenWidth : integer; Функция Хранит ширину экрана в пикселах. Значение присваивается во время инициализации видеорежима. 70 SelectFont процедура GFonts ============================================================================ Объявление procedure SelectFont(Font : integer); Функция Если фонт с номером Font присутствует в коллекции фонтов, то он становится текущим (переменной CurrentFont присваивается значение Font). Если вы используете BGI фонты, то этой процедурой лучше не пользоваться. Вместо нее нужно использовать процедуру SetTextStyle(см. ниже) SetExclusiveArea процедура EventMan ============================================================================ Объявление procedure SetExclusiveArea(Bounds : TRect); Функция Устанавливает координаты области экрана, в которой запрещено появление мышиного курсора. При попадании в эту область курсор будет погашен. SetMouseCursor процедура EventMan ============================================================================ Объявление procedure SetMouseShape(HotSpot,Size : TPoint; Shape : pointer); Функция Изменяет форму мышиного курсора. Параметр Shape является указателем на образ нового курсора. Параметр HotSpot задает координаты "горячего пятна" в образе курсора. Параметр Size всегда должен содержать значение (16,16), поскольку в данной версии GraphVision поддерживаются только курсоры размера 16x16. SetTextStyle процедура GFonts ============================================================================ Объявление procedure SetTextStyle(Font,Direction : word; CharSize : word); Функция Делает фонт Font текущим, вызывая процедуру SelectFont, затем вызывает метод SetTextStyle текущего фонта: PFont(Fonts^.At(CurrentFont))^.SetTextStyle(Direction,CharSize); Смотри также TFont.SetTextStyle, CurrentFont, Fonts 71 SetupMethods16 процедура LowGraph ============================================================================ Объявление procedure SetupMethods16 Функция Служебная процедура, вызывается процедурой InitVideo при инициализации 16-цветных режимов. SetupMethods256 процедура LowGraph ============================================================================ Объявление procedure SetupMethods256 Функция Служебная процедура, вызывается процедурой InitVideo при инициализации 256-цветных режимов. SetWriteMode процедура GrDriver ============================================================================ Объявление procedure SetWriteMode(WriteMode : integer); Функция Устанавливает режим записи в видеопамять для операций рисования. Аналог процедуры SetWriteMode из модуля Graph, но дополнительно сохраняет код режима записи в переменной Mode, которая используется некоторыми процедурами из модуля LowGraph. StdResource переменная ExtObj ============================================================================ Объявление StdResource : PResourceFile = nil; Указатель на файл стандартных ресурсов. StdSharedResource переменная ExtObj ============================================================================ Объявление StdSharedResource : PSharedResource = nil; Указатель на коллекцию разделяемых ресурсов. SwitchBank переменная LowGraph ============================================================================ Объявление SwitchBank : boolean = false; Функция Устанавливается во время инициализации видеорежима. Если SwitchBank = true, то требуется переключение банков видеопамяти при операциях рисования. 72 SystemFont переменная GFonts ============================================================================ Объявление SystemFont : integer = 0; Функция Номер фонта в коллекции фонтов, используемого как системный фонт. Системный фонт используется для вывода текста в меню, строке состояния и диалогах. TextHeight функция GFonts ============================================================================ Объявление function TextHeight(S : string) : integer; Функция Для текущего фонта возвращает высоту текста. Аналогична вызову PFont(Fonts^.At(CurrentFont))^.TextHeight(S); Смотри также TFont.TextHeight, Fonts, CurrentFont TextWidth функция GFonts ============================================================================ Объявление function TextWidth(S : String) : integer; Функция Для текущего фонта возвращает ширину текста в пикселах. Аналогична вызову PFont(Fonts^.At(CurrentFont))^.TextWidth(S); Смотри также TFont.TextWidth, Fonts, CurrentFont TPaletteType тип LowGraph ============================================================================ Объявление TPaletteType = record Size : word; Colors : array[0..255] of byte; end; Функция Записи типа TPaletteType используются в основном как таблицы перекодировки для преобразования палитр импортируемых образов в стандартную палитру BIOS. Смотри также описания функции GetNearestColor и процедуры ConvertPixRow. 73 Vesa16Modes массив GrDriver ============================================================================ Объявление Vesa16Modes : array[0..2] of integer = (Vesa16_800x600,Vesa16_1024x768,Vesa16_1280x1024); Функция Номера режимов Vesa 16 цветов для используемого драйвера. Поскольку одни и те же режимы в разных драйверах могут иметь разные номера, массив Vesa16Modes используется для перекодировки номера режима GraphVision в соответствующий номер режима используемого драйвера. Массив режимов используется процедурой InitVideo при иниициализации графической подсистемы. Значения элементам массива должны быть присвоены до вызова процедуры InitVideo: Vesa16Modes[0] := 16; Vesa16Modes[1] := 17; Vesa16Modes[2] := 18; ..... InitVideo; Vesa256Modes массив GrDriver ============================================================================ Объявление Vesa256Modes : array[0..4] of integer = (Vesa256_640x400, Vesa256_640x480, Vesa256_800x600, Vesa256_1024x768,Vesa256_1280x1024); Функция Номера режимов Vesa 256 цветов для используемого драйвера. Поскольку одни и те же режимы в разных драйверах могут иметь разные номера, массив Vesa256Modes используется для перекодировки номера режима GraphVision в соответствующий номер режима используемого драйвера. Массив режимов используется процедурой InitVideo при иниициализации графической подсистемы. Значения элементам массива должны быть присвоены до вызова процедуры InitVideo: Vesa256Modes[0] := 21; Vesa256Modes[1] := 22; ..... InitVideo; VesaDriverNames массив GrDriver ============================================================================ Объявление VesaDriverNames : array[1..2] of string[20] = ('Vesa16',''); Функция Массив имен драйверов для режимов VESA 16 и 256 цветов. Используется процедурой InitVideo при установке и регистрации драйверов в графической продсистеме. По значению переменной DriverType определяется имя используемого драйвера, которое передается процедуре InstallUserDriver как параметр. 74 По умолчанию считается, что для режимов Vesa 16 цветов используется драйвер Vesa16.bgi, входящий в состав Turbo Pascal, а имя драйвера для режимов Vesa 256 цветов не определено. Однако вы можете использовать любые доступные драйверы, поддерживающие режимы Vesa 16 и 256 цветов. Просто переопределите имя используемого драйвера: VesaDriverNames[Vesa16] := 'MyVesa16'; VesaDriverNames[Vesa256] := 'Svga'; wfXXXXXX константы Grav ============================================================================ Функция Новые маски для поля GraphWindow.Flags Значения константа смысл -------------------------------------------------------------- wfThickFrame Окно имеет широкую рамку wfThinFrame Окно имеет тонкую рамку wfFramed Окно имеет рамку wfTitle Окно имеет заголовок Xms_Addr переменная Xms ============================================================================ Объявление Xms_Addr : pointer = nil; Функция Содержит адрес точки входа диспетчера XMS памяти. Если Xms_Addr = nil, это означает, что XMS память отсутствует или не была инициализирована. Xms_FreeMem процедура Xms ============================================================================ Объявление procedure Xms_FreeMem(Handle : word); Функция Освобождает блок расширенной памяти, распределенный ранее функцией Xms_GetMem и связанный с дескриптором Handle. Код завершения операции сохраняется в переменной Xms_Status. Xms_GetMem функция Xms =========================================================================== Объявление function Xms_GetMem(Size : word) : word; Функция Выделяет блок расширенной памяти. Размер блока Size задается блоках по 1024 байт. Возвращает дескриптор блока, если блок успешно выделен, или 0 в противном случае. Код завершения операции сохраняется в поле Xms_Status. 75 Xms_Init функция Xms ============================================================================ Объявление function Xms_Init : boolean; Функция Определяет наличие драйвера XMS памяти. Возвращает True, если драйвер находится в памяти, а также сохраняет в переменной Xms_Addr адрес диспетчера расширенной памяти. Xms_Initialized переменная Xms ============================================================================ Объявление Xms_Initialized : boolean = false; Функция Флаг наличия XMS памяти. Если Xms_Initialized = false, это означает, что XMS память отсутствует или не была инициализирована. Xms_MaxAvail функция Xms ============================================================================ Объявление function Xms_MaxAvail : word; Функция Возвращает размер максимального свободного блока в килобайтах. Код завершения операции сохраняется в поле Xms_Status. Xms_MemAvali функция Xms ============================================================================ Объявление function Xms_MemAvali : word; Функция Возвращает размер свободной расширенной памяти в килобайтах. Код завершения операции сохраняется в поле Xms_Status. 76 Xms_MoveMem процедура Xms ============================================================================ Объявление procedure Xms_MoveMem(Source : pointer; SHandle : word; Dest : pointer; DHandle : word; Count : LongInt); Функция Пересылка данных из/в расширенную память. Парамерты: SHandle - дескриптор блока-источника; DHandle - дескриптор блока-приемника; Source - 32-разрядное смещение внутри блока-источника до первого пересылаемого байта. Dest - 32-разрядное смещение внутри блока-приемника. Count - количество пересылаемых байтов. Если SHandle = 0, то Source интерпретируется как указатель в стандартной памяти. То же самое верно для DHandle и Dest. Количество пересылаемых байт должно быть четным. Xms_ResizeMem процедура Xms ============================================================================ Объявление procedure Xms_ResizeMem(Handle,Size : word); Функция Изменяет размер блока расширенной памяти, связанного с дескриптором Handle. Параметр Size задает новый размер блока. Код завершения операции сохраняется в поле Xms_Status. Xms_Status переменная Xms ============================================================================ Объявление Xms_Status : byte Статус завершения операции с XMS памятью. Значение Xms_Status, отличное от нуля, означает, что последняя операция с XMS памятью завершилась аварийно. Подробное описание возможных кодов завершения дано в спецификации XMS. 77 Р Е С У Р С Ы II --------------------------------------------------------------------------- GraphVision программы во время работы используют внешние ресурсы, такие как образы мышиных курсоров, иконки и наборы образов для различного вида кнопок. Все эти ресурсы хранятся в файле Standard.rsc, входящем в состав пакета. Что находится в файле Standard.rsc 1 --------------------------------------------------------------------------- 1. Набор образов мышиного курсора: "IBEAM" - используется при работе с текстами; "MOVE" - перемещение окна; "POINTINGHAND" - используется при работе с меню; "RESIZEHOR" - изменение размера окна по горизонтали; "RESIZEVERT" - изменение размера окна по вертикали; "STANDARD" - стандартный курсор (стрелка); "WAIT" - используется при выполнении длительных операций. 2. Коллекции образов для кнопок, которые наиболее часто используются при организации диалога с пользователем: "ABORT" - прервать; "CANCEL" - отказаться; "CLEAR" - очистить; "HELP" - помощь; "IGNORE" - игнорировать; "NO" - "нет"; "OK" - "согласен"; "OPEN" - открыть; "REPLACE" - заменить; "RETRY" - повторить; "SETUP" - установка; "YES" - "да"; 3. Коллекции образов для кнопок, используемых объектами GraphVision: "CHECKBOX" - кнопка с независимой фиксацией; "RADIOBUTTON" - кнопка с зависимой фиксацией; "DOWN" - стрелка вниз; \ "LEFT" - стрелка влево; \ используются полосами прокрутки; "RIGHT" - стрелка вправо; / "UP" - стрелка вверх; / "ZOOM" - кнопка масштабирования окна. 4. Картинки, используемые в окнах сообщений (MessageBox): "CONFIRM" - вопросительный знак - в запросах подтверждения; "ERROR" - останавливающая рука - в сообщениях об ошибках; "INFORMATION" - буква "i" - в информационных сообщениях; "WARNING" - восклицательный знак - в сообщениях-предупреждениях. 78 Как загрузить ресурс 2 --------------------------------------------------------------------------- Во время работы GraphVision-приложение создает объект типа TResourceFile, связанный с файлом ресурсов, и сохраняет указатель на него в переменной StdResource. Поскольку каждый ресурс является объектом и имеет уникальное имя, он может быть загружен в память с помощью вызова Stdresource^.Get. Например, вызов StdResource^.Get('HELP'); возвращает указатель на коллекцию образов для кнопки Help. Как хранятся ресурсы 3 --------------------------------------------------------------------------- Образы мышиных курсоров хранятся как объекты типа TMouseCursor. Подробное описание этого типа объекта дано в справочнике объектов. Наборы образов для различного вида кнопок хранятся как коллекции объектов типа TImage. Описание этого типа также дано в справочнике объектов. Картинки хранятся как объекты типа TImage. Как добавить ресурс 4 --------------------------------------------------------------------------- В состав пакета входит небольшая программа, AddResrc.exe, позволяющая добавлять новые ресурсы в файл Standard.rsc. Эта программа выполняет только импорт ресурсов, и не содержит никаких средств для их создания. Но проблема вполне разрешима. Поскольку все картинки в файле ресурсов хранятся в формате Windows bitmap, их можно создать с помощью любого графического редактора, поддерживающего этот формат. Предпочтительнее использовать 16-цветные образы, поскольку они могут быть использованы как в 16, так и в 256-цветных режимах. Также желательно при их создании использовать метод сжатия RLE4, поскольку такие образы занимают меньше места на диске и быстрее загружаются в память. Одно небольшое замечание: хотя GraphVision содержит некоторые средства для преобразования внутренней палитры импортируемых образов в стандартную палитру BIOS, результаты не всегда могут быть удовлетворительными. Поэтому рекомендуется при создании 16-цветных образов использовать RGB-значения цветов, близкие к RGB-значениям цветов палитры BIOS. 79 Чтобы добавить новый курсор мыши, необходимо создать на диске файл с данными следующей структуры: MouseData = record SizeX : word; { ширина } SizeY : word; { высота } HotX : word; { X-координата горячего пятна} HotY : word; { Y-координата горячего пятна} AndMask : array[0..15] of word; { AND маска } XorMask : array[0..15] of word; { XOR маска } end; и затем выполнить импорт этого файла с помощью программы AddResrc.exe. (В данной версии поддерживаются мышиные курсоры только с размерами 16x16). 80 С О В Е Т Ы III --------------------------------------------------------------------------- Установка видеорежимов 1 --------------------------------------------------------------------------- Для установки требуемого видеорежима необходимо перед инициализацией приложения установить соответвующие значения переменных DriverType и DriverMode. Переменная DriverType определяет номер логического драйвера видеорежимов. Логический драйвер - это понятие, которым оперирует GraphVision. Набор логических драйверов в GraphVision фиксирован и неизменяем. Каждый логический драйвер использует реальный BGI драйвер, набор которых может меняться. Переменная DriverMode определяет номер используемого видеорежима для логического драйвера. В пакете GraphVision определены следующие константы для обозначения логических драйверов: StandardVGA = 0 - драйвер стандартного VGA; Vesa16 = 1 - драйвер VESA 16 цветов; Vesa256 = 2 - драйвер VESA 256 цветов. Константы, определяющие номера режимов для каждого драйвера, приведены в следующей таблице: ------------------------------------------------------------ константа | значение | режим ------------------------------------------------------------ VGA640x480 | VGAHI | 640 x 480 x 16 VESA16_800x600 | 0 | 800 x 600 x 16 VESA16_1024x768 | 1 | 1024 x 768 x 16 VESA16_1280x1024 | 2 | 1280 x 1024 x 16 VESA256_640x400 | 0 | 640 x 400 x 256 VESA256_640x480 | 1 | 640 x 480 x 256 VESA256_800x600 | 2 | 800 x 600 x 256 VESA256_1024x768 | 3 | 1024 x 768 x 256 VESA256+1280x1024 | 4 | 1280 x 1024 x 256 ------------------------------------------------------------- По умолчанию используются драйвер стандартного VGA и режим 640 x 480 : DriverType := StandardVga; DriverMode := VGA640x480; Предположим, нам необходим режим 256 цветов и разрешение 800 x 600 точек. Для использования этого режима необходимо установить следующие значения: DriverType := Vesa256; DriverMode := VESA256_800x600; 81 Процедура InitVideo, вызываемая из GraphApplication.Init, используя значения этих переменных, установит требуемый видеорежим. Но тут возникает вопрос - какой BGI драйвер будет при этом использоваться? С драйвером для StandardVGA все ясно - это EGAVGA.BGI А для установления связи между логическими драйверами Vesa16 и Vesa256 и реальными BGI драйверами используется определенный в модуле GrDriver массив VesaDriverNames. По умолчанию в этом массиве заданы следующие значения: VesaDriverNames[Vesa16] := 'vesa16'; VesaDriverNames[Vesa256] := ''; Как видно, по умолчанию логический драйвер Vesa16 связан с драйвером Vesa16.bgi, а для логического драйвера Vesa256 имя BGI драйвера не определено. Предположим, мы хотим связать логический драйвер Vesa16 c драйвером MyVesa16.bgi, а логический драйвер Vesa256 - c драйвером Svga256.bgi. Для этого необходимо перед инициализацией приложения присвоить соответствующие значения элементам массива VesaDriverNames: VesaDriverNames[Vesa16] := 'myvesa16'; VesaDriverNames[Vesa256] := 'svga256'; Как известно, графическая подсистема Turbo Pascal при инициализации по умолчанию пытается найти требуемый драйвер в текущем каталоге. Если драйвер находится где-то в другом каталоге, необходимо указать путь к нему. Для этой цели в модуле GrDriver определен массив DriverPaths: DriverPaths : array[0..2] of string = ('','',''); Чтобы указать путь к конкретному драйверу, просто присвойте нужное значение соответствующему элементу массива: DriverPaths[StandardVga] := 'c:/tp/oldbgi'; DriverPaths[Vesa256] := 'c:/tp/newbgi'; Необходимо решить еще одну проблему. В основном это относится к BGI драйверам для 256-цветных режимов. В GraphVision номера видеорежимов имеют фиксированные значения, но авторы различных BGI драйверов как-то не приняли это во внимание, и поэтому одному и тому же видеорежиму в разных драйверах могут быть назначены различные номера. В решении этой проблемы нам помогут массивы Vesa16Modes и Vesa256Modes, определенные в модуле GrDriver. Эти массивы задают связь между номерами видеорежимов логических драйверов и номерами видеорежимов реальных BGI драйверов. 82 Предположим, что в драйвере Svga256.bgi видеорежимам VESA присвоены номера с 31 по 35. Следовательно, необходимо присвоить эти значения соответствующим элементам массива Vesa256Modes: Vesa256Modes[Vesa256_640x400] := 31; Vesa256Modes[Vesa256_640x480] := 32; Vesa256Modes[Vesa256_800x600] := 33; и так далее. Включение BGI драйверов в состав исполняемого модуля 2 ---------------------------------------------------------------------------- При включении BGI драйверов в состав исполняемого модуля необходимо выполнить регистрацию драйвера в графической подсистеме. В модуле GrDriver определена процедурная переменная RegisterProc, которая по сути являетмся указателем на процедуру регитрации драйверов. По умолчанию процедура регистрации не определена: RegisterProc : procedure = nil; Для регистрации BGI драйверов напишите процедуру, выполняющую необходимые действия, и присвойте переменной RegisterProc указатель на нее: procedure MyRegisterProc; begin ... end; RegisterProc := MyRegisterProc; Использование BGI драйверов в программах защищенного режима 3 ---------------------------------------------------------------------------- Драйверы EgaVga.bgi и Vesa16.bgi, входящие в комплект поставки Turbo/Borland Pascal 7, поддерживают защищенный режим и их использование не вызывает проблем. Сложнее дело обстоит с драйверами для 256-цветных режимов. Практически все они могут быть использованы только в реальном режиме процессора. Автору известен только один BGI драйвер 256-цветных режимов, поддерживающий как реальный, так и защищенный режим работы процессора. Это драйвер, входящий в состав пакета Svga333b.zip (автор - Ullrich von Bassewitz, email: uz@wuschel.sunflower.sub.org). Файл Svga333b.zip можно найти найти на различных файловых серверах. 83 Мышиный курсор в VESA режимах 4 ---------------------------------------------------------------------------- Практически ни один стандартный драйвер мыши не поддерживает SVGA режимы вообще и VESA режимы в частности. Поэтому в GraphVision была добавлена поддержка мыши для режимов VESA, в частности, возможность эмуляции курсора мыши. В модуле LowGraph определена переменная EmulateMouseCursor, которая задает режим эмуляции мышиного курсора: EmulateMouseCursor : boolean = false; По умолчанию режим эмуляции мышиного курсора отключен. Чтобы включить его, присвойте переменной EmulateMouseCursor значение true перед инициализацией приложения: EmulateMouseCursor := true; .... MyApp.Init; Не изменяйте значение этой переменной во время работы программы! Это может привести к непредсказуемым последствиям.