ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы.



 

Часть 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;

               Не изменяйте значение этой переменной во время работы
               программы! Это может привести к непредсказуемым последствиям.








?????? ???????????