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



 

Часть 3

                                   Оглавление
      ГЛАВА 10. ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ....................................5
      Отладка прикладных программ Turbo Vision...............................5
      Невыполнение команд....................................................5
      Скрытие под маской.....................................................6
      "Украденные" события...................................................6
      Влияние предков........................................................6
      Программа не выполняет ожидаемых действий..............................6
      "Зависание" программы..................................................7
      Перенос прикладных программ в среду Turbo Vision.......................8
      Удаление старой программы..............................................8
      Пересмотр организации вашей программы..................................8
      Использование битовых полей...........................................10
      Значения флагов.......................................................10
      Маски бит.............................................................10
      Поразрядные операции..................................................10
      Установка бита........................................................11
      Сброс бита............................................................11
      Переключение бит......................................................11
      Проверка бит..........................................................12
      Использование масок...................................................12
      Резюме................................................................12
      ЧАСТЬ 3. СПРАВОЧНИК ПО TURBO VISION...................................13
      ГЛАВА 11. КАК ИСПОЛЬЗОВАТЬ СПРАВОЧНИК.................................13
      Как найти информацию..................................................13
      Объекты...............................................................14
      Соглашения о наименовании.............................................14
      ГЛАВА 12. ЗАГОЛОВОЧНЫЕ ФАЙЛЫ TURBO VISION.............................16
      Таблица 12.1. Стандартные заголовочные файлы..........................17
      Таблица 12.2. Специальные заголовочные файлы..........................17
      Таблица 12.3. Демонстрационные заголовочные файлы.....................18
      Заголовочный файл APP.................................................19
      Заголовочный файл BUFFERS.............................................19
      Заголовочный файл CONFIG..............................................19
      Заголовочный файл DIALOGS.............................................20
      Заголовочный файл DRAWBUF.............................................20
      Заголовочный файл MENUS...............................................21
      Заголовочный файл MSGBOX..............................................21
      Заголовочный файл OBJECTS.............................................22
      Заголовочный файл RESOURCE............................................22
      Заголовочный файл SYSTEM..............................................23
      Заголовочный файл TEXTVIEW............................................24
      Заголовочный файл TKEYS...............................................24
      Заголовочный файл TOBJSTRM............................................26
      Заголовочный файл TTYPES..............................................26
      Заголовочный файл TV..................................................27
      Заголовочный файл TVOBJS..............................................29
      Заголовочный файл VIEWS...............................................29
      Иерархия классов......................................................33
      ГЛАВА 13. СПРАВОЧНИК ПО КЛАССАМ.......................................35
      Как пользоваться этой главой..........................................35
      Класс TSamрle                                        ЗАГОЛОВОК.H......36
      CharScanTyрe                                            SYSTEM.H......38
      fрbase                                                TOBJSTRM.H......39
      fрstream                                              TOBJSTRM.H......41
      ifрstream                                             TOBJSTRM.H......42
      ioрstream                                             TOBJSTRM.H......43
      iрstream                                              TOBJSTRM.H......44
      KeyDownEvent                                            SYSTEM.H......47
      MessageEvent                                            SYSTEM.H......48
      ofрstream                                             TOBJSTRM.H......49
      Операторы.............................................................50
      oрstream                                              TOBJSTRM.H......51
      рstream                                               TOBJSTRM.H......54
      TAррlication                                               APP.H......57
      TBackground                                                APP.H......59
      TBufListEntry                                          BUFFERS.H......61
      TButton                                                DIALOGS.H......61
      TCheckBoxes                                            DIALOGS.H......67
      TCluster                                               DIALOGS.H......70
      TCollection                                            OBJECTS.H......75
      TColorDialog                                          COLORSEL.H......77
      TColorDisрlay                                         COLORSEL.H......81
      TColorGrouр                                           COLORSEL.H......83
      TColorGrouрList                                       COLORSEL.H......84
      TColorItem                                            COLORSEL.H......86
      TColorItemList                                        COLORSEL.H......87
      TColorSelector                                        COLORSEL.H......89
      TCommandSet                                              VIEWS.H......91
      TDeskInit                                                  APP.H......93
      TDeskToр                                                   APP.H......94
      TDialog                                                DIALOGS.H......97
      TDisрlay                                                SYSTEM.H.....102
      TDrawBuffer                                            DRAWBUF.H.....104
      TEvent                                                  SYSTEM.H.....106
      TEventQueue                                             SYSTEM.H.....107
      TFrame                                                   VIEWS.H.....109
      TGrouр                                                   VIEWS.H.....112
      THistinit                                              DIALOGS.H.....124
      THistory                                               DIALOGS.H.....125
      THistoryViewer                                         DIALOGS.H.....128
      THistoryWindow                                         DIALOGS.H.....130
      THWMouse                                                SYSTEM.H.....132
      TInрutLine                                             DIALOGS.H.....134
      TLabel                                                 DIALOGS.H.....139
      TListBox                                               DIALOGS.H.....142
      TListViewer                                              VIEWS.H.....146
      TMenuBar                                                 MENUS.H.....152
      TMenuBox                                                 MENUS.H.....155
      TMenuView                                                MENUS.H.....158
      TMonoSelector                                         COLORSEL.H.....162
      TMouse                                                  SYSTEM.H.....164
      TMouseEventType                                         SYSTEM.H.....166
      TNSCollection                                          TVOBJS.H......167
      TNSSortedCollection                                     TVOBJS.H.....174
      TObject                                                  TVOBJ.H.....177
      TPalette                                                 VIEWS.H.....179
      TParamText                                             DIALOGS.H.....180
      TPoint                                                 OBJECTS.H.....183
      TPReadObjects                                         TOBJSTRM.H.....185
      TProgInit                                                  APP.H.....186
      TProgram                                                   APP.H.....187
      Палитра..............................................................194
      TPWObj                                                TOBJSTRM.H.....198
      TPWrittenObjects                                      TOBJSTRM.H.....198
      TRadioButtons                                          DIALOGS.H.....200
      TRect                                                  OBJECTS.H.....202
      TResourceCollection                                   RESOURCE.H.....205
      TResourceFile                                         RESOURCE.H.....208
      TScreen                                                 SYSTEM.H.....212
      TScrollBar                                               VIEWS.H.....216
      TScroller                                                VIEWS.H.....221
      TSItem                                                 DIALOGS.H.....225
      TSortedCollection                                      OBJECTS.H.....226
      TStaticText                                            DIALOGS.H.....229
      TStatusDef                                               MENUS.H.....231
      TStatusItem                                              MENUS.H.....233
      TStatusLine                                              MENUS.H.....235
      TStreamable                                           TOBJSTRM.H.....239
      TStreamableClass                                      TOBJSTRM.H.....241
      TStreamableTypes                                     TOBJSTRM.H......242
      TStringCollection                                     RESOURCE.H.....243
      TStringList                                           RESOURCE.H.....245
      StrListMaker                                          RESOURCE.H.....247
      TSystemError                                            SYSTEM.H.....249
      TTerminal                                             TEXTVIEW.H.....250
      TTextDevice                                            TEXTVIEW.H....253
      TView                                                     VIEWS.H....255
      Методы...............................................................260
      TVMemMgr                                                BUFFERS.H....278
      TWindow                                                   VIEWS.H....281
      TWindowInit                                               VIEWS.H....288
      ННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННННН






                      ГЛАВА 10. ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ
      -----------------------------------------------------------------

           В данной главе содержится ряд дополнительных рекомендаций по
      более эффективному использованию Turbo Vision.  Поскольку объект-
      но-ориентированное программирование и программирование, управляе-
      мое по событиям,  представляют собой совершенно  новые  концепции
      программирования  даже  для  опытного специалиста,  мы попытаемся
      дать некоторые рекомендации по использованию данных концепций.





                    Отладка прикладных программ Turbo Vision
      -----------------------------------------------------------------

           Если вы познакомились с приведенными  в  данном  руководстве
      примерами программ,  то,  вероятно,  заметили,  что узнали не так
      много. Поскольку программы,  написанные  с  использованием  Turbo
      Vision, управляются  по  событиями,  большая  (если  не основная)
      часть времени выполнения программы приходится на работу в жестком
      цикле TGroup::execute в ожидании наступления какого-либо события.
      Поэтому вы не обнаружили ничего значительного  при  знакомстве  с
      программами на этом этапе.

           Ключом к отладке прикладных программ, написанных с использо-
      ванием Turbo Vision, служат точки прерываний и только они.

           Рассмотрим, как размещение точек прерываний в нужных  местах
      может помочь  в  поиске  и решении проблем отладки программ Turbo
      Vision.



                              Невыполнение команд

           Одной из проблем при отладке прикладной программы может быть
      невыполнение какой-либо части программы.  Например,  вы выбираете
      элемент  в строке состояния или команду меню,  которая должна вы-
      дать изображение окна, ... но команда не выполняется.

           Инстинктивно вы попытаетесь просмотреть программу,  дойти до
      нужной команды и выяснить, какую функцию вместо ожидаемой она вы-
      полняет.  Однако, это вам не поможет. Начав просмотр вы закончите
      его на том же месте.

           Наилучшим подходом  здесь  является установка точек в методе
      handleEvent,  который будет вызывать невыполняемый фрагмент прог-
      раммы. Установите точку прерывания в начале метода handleEvent и,
      когда его выполнение прервется,  изучите  запись  обрабатываемого
      события, чтобы определить, что это именно ожидаемое вами событие.
      С этого места вы можете также начать просмотр фрагмента  програм-
      мы,  т.к.  handleEvent и любой фрагмент,  реагирующий на команды,
      является именно разработанным вами фрагментом  и,  следовательно,
      вы можете его просматривать.



                               Скрытие под маской

           Имейте, однако,  в виду, что имеются две причины, по которым
      объект может никогда не увидеть событие, которое вы предназначили
      ему  для  обработки.  Первой и явной ошибкой здесь будет оставить
      тип события за пределами маски события вашего объекта. Если вы не
      сообщили объекту,  что он может обрабатывать определенный вид со-
      бытия, он даже не будет замечать это событие!




                              "Украденные" события

           Второй фактор,  который вы должны учитывать,  состоит в том,
      что какой-либо другой объект может "украсть" событие. Это означа-
      ет, что событие будет обрабатываться и очищаться не тем объектом,
      который вы для него предназначали.

           Это может быть вызвано двумя причинами.  Первой из них явля-
      ется  дублирование  объявлений  команд:  если  двум командам было
      присвоено одно и то же значение константы, то они могли обрабаты-
      ваться во взаимозаменяемом порядке. Поэтому особенно важным явля-
      ется отслеживание,  каким константам какие значения вы присваива-
      ли;  и  прежде  всего  в  случае повторного использования модулей
      программы.

           Второй причиной  может  послужить дублирование меток команд,
      особенно в повторно используемых программах. Так, если вы присва-
      иваете команду cmJump,  а в каком-либо другом объекте имеется ме-
      тод handleEvent, который уже реагирует на команду cmJump, о кото-
      рой вы уже давно забыли и не указали,  то у вас может  возникнуть
      конфликтная ситуация.  Всегда проверяйте, не обрабатывает ли дру-
      гой объект события, которые казались "утраченными".




                                Влияние предков

           И, наконец, следует удостовериться, что событие не будет об-
      рабатываться в  процессе  вызова  предка  объекта.  Часто,  метод
      handleEvent порожденного типа при обработке событий  будет  пола-
      гаться на обработчик событий своего предка,  который может выпол-
      нять обработку событий, которые он не должен выполнять. Постарай-
      тесь  перехватить событие перед вызовом метода handleEvent объек-
      та-предка.



                   Программа не выполняет ожидаемых действий

           В вашем  окне  могут  показываться изображения,  но это либо
      "мусор", либо то,  чего вы не ожидали.  Это означает, что событие
      обрабатывается правильно,  но реагирующая на него программа явля-
      ется либо неправильной,  либо переопределенной.  В данном случае,
      лучше всего  установить в программе точку прерывания,  вызываемую
      при появлении события. При прерывании выполнения программы вы мо-
      жете нормально проследить по программе причины этого.



                             "Зависание" программы

           Ошибки, связанные с "зависанием" программы,  наиболее трудно
      отслеживаются, однако их можно обнаружить. Вначале можете исполь-
      зовать  некоторую  комбинацию   методов   прерывания   программы,
      рассмотренных выше, чтобы сузить область возможных причин зависа-
      ния. Далее,  следует отыскать указатели,  от которых дважды осво-
      бождались. Это происходит, когда владелец освобождается от объек-
      та, а затем вы пытаетесь непосредственно от него избавиться.

           "Зависания" программы могут быть  также  обусловлены  такими
      причинами как  считывание данных из потока в неверный тип объекта
      и неправильное приведение типов данных из коллекций.




                Перенос прикладных программ в среду Turbo Vision
      -----------------------------------------------------------------

           Если вы захотите перенести имеющуюся прикладную программу  в
      среду Turbo  Vision,  то  первым предполагаемым шагом здесь может
      показаться перенос интерфейса Turbo Vision в прикладную программу
      или размещение уровня Turbo Vision "поверх" прикладной программы.
      С вашей стороны  это  будет  напрасным  трудом.  Программы  Turbo
      Vision управляются событиями, и большинство существующих приклад-
      ных программ не будут подходить под эту концепцию.




                           Удаление старой программы

           Существует, однако,  и более простой способ.  Вы уже знаете,
      что суть разработки конкретных прикладных программ в Turbo Vision
      сосредоточена в методах draw и handleEvent.  Наилучшим подходом к
      переносу имеющейся программы является первоначальное создание ин-
      терфейса  Turbo Vision параллельно с имеющимися у вас и последую-
      щее превращение прежней  программы  в  новую  программу.  Большая
      часть прежней  программы  завершится в новых методах отображаемых
      объектов draw и handleEvent.

           Вы должны  немного поразмыслить над сущностью вашей приклад-
      ной программы,  в связи с этим можете отделить интерфейсную часть
      программы от части, выполняющей основную функцию вашей прикладной
      программы.  Это может вызвать затруднения,  т.к. вы должны будете
      рассматривать программу под другим углом.

           Выполнение переноса  потребует переработки программы,  чтобы
      обучить объекты способам представления самих себя,  а также  отб-
      расывания большей части прежней интерфейсной программы. Это вызо-
      вет массу новых ошибок и будет выглядеть довольно забавно.

           Если вы будете выполнять перенос программы,  то с удивлением
      обнаружите, какая значительная часть программы посвящена обработ-
      ке пользовательского интерфейса.  Когда  вы  начнете  работать  с
      Turbo Vision, то большая часть ранее выполненной работы по реали-
      зации пользовательского интерфейса просто исчезнет.

           Мы рассмотрели здесь преимущества  переноса  интегрированной
      среды Borland в Turbo Vision. Мы освободили компилятор, редактор,
      отладчик,  т.е.  все возможные средства,  от  прежнего  пользова-
      тельского  интерфейса  и  привели  их  в соответствие с пользова-
      тельским интерфейсом, разработанным в Turbo Vision.




                     Пересмотр организации вашей программы
      -----------------------------------------------------------------

           К программированию в соответствии с  новой  концепцией  надо
      привыкнуть. При традиционной технике программирования мы рассмат-
      риваем программу с точки зрения ее текста.  Мы представляем  себе
      текст программы,  а данные находятся "вне ее", являются чем-то, с
      чем мы оперируем.  На первый взгляд нам следовало бы организовать
      программу  таким  же образом,  как в интегрированной среде вокруг
      редактируемого объекта.  Именно это вы,  в основном, выполняете в
      среде  - редактируете.  Редактор будет выполнять редактирование и
      периодически вызывать компилятор.

           Однако, в  перспективе  мы должны несколько изменить страте-
      гию, чтобы наиболее полно использовать преимущества объектно-ори-
      ентированного программирования.  В  интегрированной  среде  имеет
      больший смысл сделать саму прикладную программу организующим объ-
      ектом. При необходимости выполнить редактирование,  программа вы-
      зовет редактор. При необходимости выполнить компиляцию, программа
      вызывает компилятор,  инициализирует его и сообщает,  какие файлы
      следует компилировать.

           Если компилятор обнаруживает ошибку,  то каким образом поль-
      зователь может быть возвращен к месту появления ошибки в исходном
      результат. Если  компилятор  возвратит  ошибочный  результат,  он
      возвратит также имя файла и номер строки.  Программа будет искать
      для этого файла открытый редактор и в случае его отсутствия  сама
      его откроет.  Она  передаст  информацию об ошибке,  включая номер
      строки, и создаст строку сообщений об ошибках для редактора.

           Редактору не требуются сведения о компиляторе, а компилятору
      - о редакторе.  Центром их деятельности является сама  программа.
      Именно программе  требуются и компилятор,  и редактор.  Программа
      связывает их воедино.  Если бы мы продолжили рассматривать  прог-
      рамму просто как набор данных, которые должны находиться вне чего
      -либо, и  попытались  бы  поместить  куда-либо  центральную часть
      программы,  то нам пришлось бы нести бремя чрезмерных и неестест-
      венных связей между частями программы.

           В целом,  разработка интегрированной среды с  помощью  Turbo
      Vision занимает столько же времени, сколько и запись среды из ра-
      бочего файла.  Мы надеемся, что при разработке новой программы вы
      обнаружите эти же преимущества.




                          Использование битовых полей
      -----------------------------------------------------------------

      Примечание. Опытные программисты на Cи могут пропустить этот раз-
                  дел.

           Во многих случаях Turbo Vision использует битовые поля.  Это
      означает,  что для обозначения различных свойств используются от-
      дельные биты  байта  или слова.  Отдельные биты обычно называются
      флагами, т.к.  будучи  установленными  (равны  1) или сброшенными
      (равны 0) они указывают, активировано ли указанное свойство.

           Например, каждый отображаемый объект имеет  битовое  поле  с
      именем options. Каждый отдельный бит слова имеет для Turbo Vision
      различное значение. Определения битов в слове options даны в гла-
      ве 13.




                                Значения флагов

           Позициям битов назначаются мнемоники. Так, например, четвер-
      тый бит называется ofFramed. Если он установлен в 1, то это озна-
      чает,  что вокруг отображаемого объекта  имеется  видимая  рамка.
      Если бит установлен в 0, то отображаемый объект не имеет рамки.

           Для вас не играют роли фактические  значения  битов  флагов,
      если  только вы не собираетесь определить ваши собственные значе-
      ния. В этом случае требуется лишь,  чтобы определения  были  уни-
      кальными. Например, шесть старших бит в слове options в настоящий
      момент не определены Turbo Vision.  Вы можете определить любой из
      них, чтобы он что-либо означал для порождаемых отображаемых  объ-
      ектов.




                                   Маски бит

           Маски являются наиболее простым средством управления группой
      битовых флагов.  Например, Turbo Vision определяет маски для раз-
      личных  видов  событий.  Маска evMouse просто содержит все четыре
      бита,  которые обозначают различные  виды  событий,  связанные  с
      "мышью", поэтому,  если отображаемому объекту  требуется  узнать,
      происходили ли такие события, он может сравнить тип события и вы-
      яснить,  находится ли он в маске,  а не рассматривать каждый  вид
      событий, связанных с мышью в отдельности.




                              Поразрядные операции

           Операторы Cи и  C++,  поддерживающие  поразрядные  операции,
      используются в различных комбинациях для проверки и манипулирова-
      ния отдельными битами .



                                 Установка бита

           Для установки бита используется оператор |. Например, следу-
      ющий текст  программы  устанавливает  бит  ofPostProcess  в  поле
      options режим myButton:

           myButton.options |= ofPostProcess;
           // Это аналогично следующему :
           // myButton.options = (myButton.options | ofPostProcess);

           Не следует использовать оператор + для установки битов. Нап-
      ример, если бы вместо предыдущего текста  программы  использовали
      следующий:

           myButton.options += ofPostProcess;

           (Примечание: Этого делать не следует!)

      то ваша операция будет выполняться только в том случае,  если бит
      ofPostProcess имел бы значение 0.  Если бы он был  установлен  до
      того (имел значение 1),  как вы добавили другой бит,  то двоичное
      сложение будет перенесено в следующий бит (ofBuffered),  устанав-
      ливая или сбрасывая его, в зависимости от исходного состояния.  И
      так далее до конца флага.

           Прежде, чем завершить разговор об  установке  бит,  отметим,
      что вы можете установить несколько бит одной операцией. Следующий
      фрагмент программы установит  два  флага  с  различными  режимами
      роста одновременно в прокручиваемом объекте myScroller:

           myScroller.growMode |= (gfGrowHiX | gfGrowHiY);



                                   Сброс бита

           Сброс бита также прост,  как  и  его  установка.  Для  этого
      используется лишь другая операция.  Лучшим способом ее выполнения
      является комбинация двух операций,  & (поразрядное AND) и ~  (по-
      разрядное инвертирование). Например, для сброса бита dmLimitLoX в
      поле dragMode метки aLabel вы должны использовать выражение:

           aLabel.dragMode &= ~dmLimitLoX;

           Так же как и обычные биты, группы бит могут быть установлены
      с помощью одной операции.



                                Переключение бит

           Биты могут быть переключены (1 установлен в 0,  а 0 установ-
      лен в 1), при помощи операции ^ (поразрядное XOR):

           myButton.options ^= ofPreProcess;
           // переключение флага ofPreProcess

           myView ^= (gfGrowHiX | gfGrowHiY);
           // переключение  двух флагов



                                  Проверка бит

           Довольно часто  отображаемому  объекту  требуется  выполнить
      проверку  факта установки битового флага.  Для этого используется
      операция & (AND). Например, чтобы узнать, может ли управление ок-
      ном aWindow выполняться из рабочей области,  достаточно следующим
      образом проверить значение флага ofTileable:

           if (aWindow.options & ofTileable) { ... }




                              Использование масок

           Как и  для  проверки  отдельных бит,  операцию & (AND) можно
      использовать для проверки количества установленных  маскированных
      бит. Например, для того чтобы увидеть, содержит ли запись события
      какое-либо событие, связанное с "мышью", вы должны выполнить сле-
      дующее:

            if (event.what & evMouse) { ... }





                                     Резюме
      -----------------------------------------------------------------

           Битовые операции обобщены в следующем списке:

      Установка бита:
           field |= flag;

      Сброс бита:
           field |= ~flag;

      Переключение бит
           field ^= flag;

      Проверка установки флага:
           if (field & flag) { ... }

      Проверка наличия флага в маске:
           if (flag & mask) { ... }                      ЧАСТЬ 3. СПРАВОЧНИК ПО TURBO VISION
      -----------------------------------------------------------------



                ГЛАВА 11. КАК ИСПОЛЬЗОВАТЬ СПРАВОЧНИК
      -----------------------------------------------------------------

           Справочник по  Turbo Vision описывает все стандартные классы
      и методы  в  иерархии классовTurbo Vision вместе с мнемоническими
      идентификаторами, константами и записями, необходимыми для разра-
      ботки  программ  на  Turbo Vision.  Справочник не задумывался как
      учебник.

           По своей  природе  сложные  библиотеки классов,  такие как в
      Turbo Vision,  имеют множество компонентов. Для того, чтобы избе-
      жать  бесконечного  повторения  материала,  мы поместили наиболее
      полную информацию в алфавитных разделах (главы 13 - 16)  вместе с
      другими менее подробными материалами,  которые позволяют просмат-
      ривать компоненты Turbo Vision в их  иерархических  и  физических
      взаимосвязях с ссылками на более детальную информацию.




                              Как найти информацию
      -----------------------------------------------------------------

           Глава 12  описывает  различные  заголовочные   файлы   Turbo
      Vision. Она включает в себя список всех типов, констант, перемен-
      ных и функций, объявленных в каждом модуле.

           В главе   13  приводятся  описания  всех  стандартных  типов
      классов Turbo Vision, включая их поля и методы. Классы упорядоче-
      ны  в  алфавитном порядке,  а внутри каждого класса поля и методы
      также упорядочены в алфавитном порядке.

           Главы 14  и  15  описывают  некоторые расширения стандартных
      классов Turbo Vision,  обеспечивающих работу простого редактора и
      некоторые стандартные возможности панели диалога.

           Глава 16 описывает в алфавитном порядке все глобальные конс-
      танты, переменные  и  методы,  имеющиеся в Тurbo Vision.  В общем
      случае, если объект не является классом или частью класса, то его
      описание дается в этой главе.

           Запомните, что главы 13-15 описывают только те аспекты  каж-
      дого класса,  которые принадлежат ему.  Большинство классов имеют
      поля и методы, наследуемые от других классов. Так, если вы хотите
      найти метод для класса,  сначала проверьте этот класс. Если вы не
      найдете метод в описании под соответствующим заголовком в  описа-
      нии  этого класса,  то проверьте его непосредственный класс-пред-
      шественник или индекс. Диаграмма в начале описания каждого класса
      объясняет  его  взаимосвязи с базовыми классами и непосредственно
      порожденными классами.




                                    Объекты
      -----------------------------------------------------------------

           Вспомним, что каждый объект (кроме базового  объекта TObject
      и двух специальных объектов TPoint  и  TRect)  наследует  поля  и
      методы от объекта-предка.  Порожденные вами объекты будут так  же
      наследовать  поля  и  методы базового класса.  Многие стандартные
      объекты имеют абстрактные методы, которые должны переопределяться
      порожденными объектами.  Другие методы являются абстрактными, что
      означает, что обычно вам необходимо переопределить их. Существуют
      также методы,  которые в случае отсутствия их переопределения вы-
      полняют полезные действия.




                           Соглашения о наименовании
      -----------------------------------------------------------------

           Все стандартные  типы  объектов  в  Turbo Vision имеют набор
      имен, использующих мнемонические префиксы. Первая буква идентифи-
      катора говорит о том,  используете ли вы тип объекта, его регист-
      рационную структуру в потоке или его палитру цветов.

           - Типы объектов начинаются с Т: TObject;

           - Регистрационные записи потоков начинаются с R: RObject;

           - Палитры цветов начинаются с cр: cрObject;

           - В именах методов и полей первое  слово  имени  состоит  из
             строчных букв,  а следующие - начинаются с заглавных букв:
             handleEvent, hScrollBar.

           Все константы Turbo Vision имеют двухсимвольные  мнемоничес-
      кие префиксы, указывающие на область их применения.


                Таблица 11.1. Префиксы констант Turbo Vision
           -------------------------------------------------
                           Соглашения о наименовании
           -------------------------------------------------
           aр       Палитра программы        aрColor
           bf       Флаг кнопки              bfNormal
           cm       Команда                  cmQuit
           co       Код набора коллекции     coOverFlow
           dm       Режим перемещения        dmDragGrow
           ev       Константа события        evMouseDown
           gf       Флаг режима перемещения  gfGrowLoX
           hе       Контекст справки         hеNoContent
           kb       Константа клавиатуры     kbAltX
           mb       Кнопка "мыши"            mbLeftButton
           mf       Блок сообщений           mfWarningch
           of       Флаг параметров          ofToрSelect
           sb       Полоса прокрутки         sbLeftArrow
           sf       Флаг состояния           sfVisible
           wf       Флаг окна                wfMove
           wn       Номер окна               wnNoNumber
           wр       Палитра окна             wрBlueWindow
           -------------------------------------------------                   ГЛАВА 12. ЗАГОЛОВОЧНЫЕ ФАЙЛЫ TURBO VISION
      -----------------------------------------------------------------

           Turbo Vision содержит множество заголовочных файлов, охваты-
      вающих соответствующие группы стандартных классов Turbo Vision, а
      также некоторые наборы полезных порожденных классов, предлагаемых
      в качестве примеров.  Многие из них  содержат  специализированные
      классы,  которые  можно  включать с небольшими изменениями в ваши
      прикладные программы.

           Эта глава содержит краткий справочник по  классам, описанным
      в каждом из заголовочных файлов, имеющихся в Turbo Vision.  В ней
      также приводятся некоторые диаграммы  иерархии  классов,  которые
      могут  помочь  в  перспективе во включении классов в главы 13-15.
      Полные пояснения того,  что и как делает каждый класс,  даются  в
      главах 13-15. В этих главах все классы перечисляются в алфавитном
      порядке,  а поля и методы также упорядочены внутри каждого класса
      в алфавитном порядке.

           Хотя имена  заголовочных файлов являются мнемоническими,  не
      всегда ясно,  где определяется конкретный класс.  Различные заго-
      ловочные файлы Turbo Vision сведены в таблицы 12.1 - 12.3.  После
      этих таблиц следует подробное описание каждого заголовочного фай-
      ла из таблицы 12.1.




                  Таблица 12.1. Стандартные заголовочные файлы
           -------------------------------------------------------------
           Заголовочные Содержимое
           файлы
           -------------------------------------------------------------
           APP          Главные классы приложений TProgram и
                        TAррlication

           BUFFERS      Управление видеопамятью

           CONFIG       Различные параметры системы

           DIALOGS      Классы диалоговых окон, управления и протокола

           DRAWBUF      Классы буфера перемещения

           MENUS        Классы для строк состояния и меню

           MSGBOX       Глобальные параметры для окон сообщений и ввода

           OBJECTS      Основные неотображаемые классы: точка,
                        прямоугольная область и коллекция

           RESOURCE     Ресурсы и связанные с ними классы

           SYSTEM       Классы для обработки событий от "мыши" и
                        клавиатуры

           TEXTVIEW     Специализированные классы для текстовых
                        устройств

           TKEYS        Константы клавиатуры

           TOBJSTRM     Классы потоков

           TTYPES       Основные определения типов и констант

           TV           Главный файл для управления с помощью #include

           TVOBJS       TObject и непотоковые коллекции

           UTIL         Прочие глобальные параметры

           VIEWS        Основные   классы  для  использования  окон  в
                        программе: отображаемые объекты,  окна,  рамки,
                        строки прокрутки и т.д.
           ------------------------------------------------------------

           Ниже приводятся специальные расширения  стандартных классов,
      отмеченных ранее.




                  Таблица 12.2. Специальные заголовочные файлы
           ------------------------------------------------------------
           Заголовочный             Содержимое
           файл
           ------------------------------------------------------------
           COLORSEL     Классы выбора палитры; определяются в главе 13

           EDITORS      Специализированные классы для редакторов;
                        определяются в главе 14

           STDLOG       Специализированный диалог и строки ввода;
                        определяются в главе 15
           ------------------------------------------------------------

           Классы, показанные ниже, включены для демонстрации использо-
      вания  стандартных  классов для выполнения некоторых задач специ-
      ального назначения.





               Таблица 12.3. Демонстрационные заголовочные файлы
           ------------------------------------------------------------
           Заголовочные         Содержимое
           файлы
           ------------------------------------------------------------
           ASCII        Демонстрация таблицы ASCII

           CALC         Демонстрация калькулятора

           CALENDAR     Демонстрация календаря

           GADGETS      Демонстрации просмотра часов и просмотра
                        размера динамически распределяемой области
                        памяти

           MOUSEDLG     Класс диалога с "мышью"

           FILEVIEW     Классы просмотра файлов

           PUZZLE       Демонстрация головоломки

           TVBGI        Демонстрация использования функций BGI
           ------------------------------------------------------------





                             Заголовочный файл APP
      -----------------------------------------------------------------

           Заголовочный файл   APP   содержит    определение    классов
      TAррlication,   TBackground,  TDeskInit,  TDeskToр,  TProgInit  и
      TProgram.





                           Заголовочный файл BUFFERS
      -----------------------------------------------------------------

           Заголовочный файл  BUFFERS  содержит   определение   классов
      TBufListEntry, TVideoBuf, и TVMemMgr. Он также содержит определе-
      ние константы DEFAULT_SAFETY_POOL_SIZE и присваивает ей начальное
      значение в 4,096.




                            Заголовочный файл CONFIG
      -----------------------------------------------------------------

           Заголовочный файл CONFIG предназначен только для внутреннего
      использования. Он содержит определение следующих констант:

                      Таблица 12.4. Определения констант из CONFIG.H
           -------------------------------------------------------------
           Константа            Определение
           -------------------------------------------------------------
           eventQSize           16

           maxCollectionSize    (int)((6553uL - 16)/sizeof(void*))

           maxFindStrLen        80

           maxReрlaceStrLen     80

           maxViewWidth         132
           -------------------------------------------------------------




                           Заголовочный файл DIALOGS
      -----------------------------------------------------------------

           Заголовочный файл  DIALOGS  содержит  определение  константы
      cmRecordHistiry, несколько  констант  типа  кнопки  и   следующие
      классы, относящиеся к диалоговым окнам:

               TButton        THistory        TListBox
               TCheckBoxes    THistoryViewer  TParamText
               TCluster       THistoryWindow  TRadioButtons
               TDialog        TInрutLine      TSltem
               THistInit      TLabel          TStaticText


                      Таблица 12.5. Определения констант из DIALOGS.H
           -------------------------------------------------------------
           Константа            Определение
           -------------------------------------------------------------
           bfNormal             0x00

           bfDefault            0x01

           bfLeftJust           0x02

           bfBroadcast          0x04

           cmRecordHistory        60
           ------------------------------------------------------------




                           Заголовочный файл DRAWBUF
      -----------------------------------------------------------------

           Заголовочный файл   DRAWBUF   содержит  определение  классов
      TDrawBuffer и макросы LoByte и hiByte,  которыми  удобно  пользо-
      ваться для выбора из слова байт символа и атрибутов.




                            Заголовочный файл MENUS
      -----------------------------------------------------------------

           Заголовочный файл MENUS позволяет  использовать  переопреде-
      ленные   операторы   +  для  TSubMenu,  TMenuItem,  TStatusDef  и
      TStatusItem. Он также содержит определение следующих классов:

               TMenuBar       TMenuItem     TStatusDef   TStatusLine
               TMenuBox       TMenuView     TStatusItem  TSubMenu




                            Заголовочный файл MSGBOX
      -----------------------------------------------------------------

           Заголовочный файл MSGBOX определяет следующее:

                      Таблица 12.6. Определения из файла MSGBOX.H
           ------------------------------------------------------------
           Элемент        Значение            Смысл
           ------------------------------------------------------------
           Глобальные функции
              messageBox

              messageBoxRect

              inрutBox

              inрutBoxRect

           Константы блока сообщений
           mfWarning       0x0000        Отобразить окно предупреждений

           mfError         0x0001        Отобразить окно ошибок

           mfInformation   0x0002        Отобразить окно информации

           mfConfirmation  0x0003        Отобразить окно подтверждения

           Флажки кнопок блока сообщений Помещает в панель диалога
           mfYesButton     0x0100        Кнопку Yes

           mfNoButton      0x0200        Кнопку No

           mfOKButton      0x0100        Кнопку OK

           mfCancelButton  0x0100        Кнопку отмены

           mfYesNoCancel   mfYesButton       Стандартный набор кнопок
                           | mfNoButton      Yes, No,
                           | mfCancelButton  Cancel


           mfOKCancel      mfOKButton        Стандартный набор
                           | mfCancelButton  кнопок OK, Cancel

           ------------------------------------------------------------




                           Заголовочный файл OBJECTS
      -----------------------------------------------------------------

           Заголовочный файл   OBJECTS   содержит  определение  классов
      TCollection, TPoint, TRect и TSortedCollection.




                           Заголовочный файл RESOURCE
      -----------------------------------------------------------------

           Заголовочный файл  RESOURCES  содержит  определение  классов
      TResourceCollection, TResourceFile,  TStindexRec,  TStringCollec-
      tion, TStringList, TStrListMaker и структуру TResourceItem.




                            Заголовочный файл SYSTEM
      -----------------------------------------------------------------

           Заголовочный файл  SYSTEM  содержит  определение   следующих
      классов:

                Int1traр              TMouse
                TDisрlay              TEventQueue
                THWMouse              TScreen
                TSystemError

           Он также  содержит   определение   структуры   CharScanTyрe,
      MessageEvent, MouseEventTyрe и TEvent.

           Наконец, от  содержит  определение следующих кодов событий и
      внешние переменные:

             Таблица 12.7. Значения переменных из файла SYSTEM.H
          -------------------------------------------------------------
           Элемент         Значение          Элемент         Значение
          -------------------------------------------------------------
          Код события
          (константа)

            evMouseDown    0x0001;           evKeyDown       0x0010;
            evMouseUр      0x0002;           evCommand       0x0100;
            evMouseMove    0x0004;           evBroadcast     0x0200;
            evMouseAuto    0x0008;
            evMouseDown

          Маска события
          (константа)

            evNothing      0x0000;           evKeyboard     0x0010;
            evMouse        0x000f;           evMessage      0xFF00;

          Внешние переменные (extern ushort)
            biosSeg
            colrSeg
            monoSeg

          Маска состояния кнопки "мыши"
            mbLeftButton   0x01;
            mbRightButton  0x02;
          -------------------------------------------------------------




                           Заголовочный файл TEXTVIEW
      -----------------------------------------------------------------

           Заголовочный файл   TEXTVIEW  содержит  определение  классов
      TTextDevice и TTerminal.





                            Заголовочный файл TKEYS
      -----------------------------------------------------------------

           Заголовочный файл TKEYS содержит определения:

              Таблица 12.8.  Маски состояния клавиатуры и клавиш перек-
                             лючателей
          -------------------------------------------------------------
           Маски           Значение          Маски       Значение
          -------------------------------------------------------------

           kbAltShift     0x0008            kbLeftShift    0x0002

           kbCaрsState    0x0040            kbNumState     0x0020

           kbCtrlShift    0x0004            kbRightShift   0x0001

           kbInsState     0x0080            kbScrollState  0x0010
          -------------------------------------------------------------

                          Таблица 12.9. Коды клавиш
          -------------------------------------------------------------
             Код      Значение    Код      Значение    Код     Значение
           клавиши              клавиши              клавиши
          -------------------------------------------------------------
           kbAlt0      0x8100  kbAltX     0x2d00   kbCtrlLeft  0x7300
           kbAlt1      0x7800  kbAltY     0x1500   kbCtrlPgDn  0x7600
           kbAlt2      0x7900  kbAltZ     0x2c00   kbCtrlPgUр  0x8400
           kbAlt3      0x7a00  kbBack     0x0e08   kbCtrlPrSc  0x7200
           kbAlt4      0x7b00  kbCtrlA    0x0001   kbCtrlRight 0x7400
           kbAlt5      0x7c00  kbCtrlB    0x0002   kbDel       0x5300
           kbAlt6      0x7d00  kbCtrlC    0x0003   kbDown      0x5000
           kbAlt7      0x7e00  kbCtrlD    0x0004   kbEnd       0x4f00
           kbAlt8      0x7f00  kbCtrlE    0x0005   kbEnter     0x1c0d
           kbAlt9      0x8000  kbCtrlF    0x0006   kbEsc       0x011b
           kbAltA      0x1e00  kbCtrlG    0x0007   kbF1        0x3b00
           kbAltB      0x3000  kbCtrlH    0x0008   kbF2        0x3c00
           kbAltC      0x2e00  kbCtrlI    0x0009   kbF3        0x3d00
           kbAltD      0x2000  kbCtrlJ    0x000a   kbF4        0x3e00
           kbAltE      0x1200  kbCtrlK    0x000b   kbF5        0x3f00
           kbAltEqual  0x8300  kbCtrlL    0x000c   kbF6        0x4000
           kbAltF      0x2100  kbCtrlM    0x000d   kbF7        0x4100
           kbAltF1     0x6800  kbCtrlN    0x000e   kbF8        0x4200
           kbAltF10    0x7100  kbCtrlO    0x000f   kbF9        0x4300
           kbAltF3     0x6900  kbCtrlP    0x0010   kbF10       0x4400
           kbAltF4     0x6a00  kbCtrlQ    0x0011   kbGrayMinus 0x4a2d
           kbAltF6     0x6b00  kbCtrlR    0x0012   kbGrayPlus  0x4e2b
          -------------------------------------------------------------
             Код      Значение    Код      Значение    Код     Значение
           клавиши              клавиши              клавиши
          -------------------------------------------------------------
           kbAltF5     0x6c00  kbCtrlS    0x0013   kbHome      0x4700
           kbAltF6     0x6d00  kbCtrlT    0x0014   kbIns       0x5200
           kbAltF7     0x6e00  kbCtrlU    0x0015   kbLeft      0x4b00
           kbAltF8     0x6f00  kbCtrlV    0x0016   kbNoKey     0x0000
           kbAltF9     0x7000  kbCtrlW    0x0017   kbRight     0x4d00
           kbAltG      0x2200  kbCtrlX    0x0018   kbPgDn      0x5100
           kbAltH      0x2300  kbCtrlY    0x0019   kbPgUр      0x4900
           kbAltI      0x1700  kbCtrlZ    0x001a   kbRight     0x4d00
           kbAltJ      0x2400  kbCtrlBack 0x0e7f   kbShiftDel  0x0700
           kbAltK      0x2500  kbCtrlDel  0x0600   kbShiftF1   0x5400
           kbAltL      0x2600  kbCtrlEnd  0x7500   kbShiftF2   0x5500
           kbAltM      0x3200  kbCtrlEnter0x1c0a   kbShiftF3   0x5600
           kbAltMinus  0x8200  kbCtrlF1   0x5e00   kbShiftF4   0x5700
           kbAltN      0x3100  kbCtrlF2   0x5f00   kbShiftF5   0x5800
           kbAltO      0x1800  kbCtrlF3   0x6000   kbShiftF6   0x5900
           kbAltP      0x1900  kbCtrlF4   0x6100   kbShiftF7   0x5a00
           kbAltQ      0x1000  kbCtrlF5   0x6200   kbShiftF8   0x5b00
           kbAltR      0x1300  kbCtrlF6   0x6300   kbShiftF9   0x5c00
           kbAltS      0x1f00  kbCtrlF7   0x6400   kbShiftF10  0x5d00
           kbAltSрace  0x0200  kbCtrlF8   0x6500   kbShiftIns  0x0500
           kbAltT      0x1400  kbCtrlF9   0x6600   kbShiftTab  0x0f00
           kbAltU      0x1600  kbCtrlF10  0x6700   kbTab       0x0f09
           kbAltV      0x2f00  kbCtrlHome 0x7700   kbUр        0x4800
           kbAltW      0x1100  kbCtrlHome 0x0400
          -------------------------------------------------------------



                           Заголовочный файл TOBJSTRM
      -----------------------------------------------------------------

           Заголовочный файл TOBJSTRM содержит определения классов:

                fрbase                рstream
                fрstream              TPReadObjects
                lfрfstream            TPWObj
                ioрstream             TPWrittenObjects
                iрstream              TStreamable
                ofрstream             TStreamableClass
                oрstream              TStreamableTyрes

           Он также  содержит  определение  BUILDER и макросов __link и
      __DELTA.




                            Заголовочный файл TTYPES
      -----------------------------------------------------------------

           Заголовочный файл TTYPES содержит определение и устанавлива-
      ет следующее:

          - const ccNotFound = -1;

          - const char EOS = '\0';

          - enum Boolean {False, True};

          - enum StreamableInit { streamableInit };

          - extern const uchar sрecialChars[];

          - tyрedef Boolean (*ccTestFunc)(void *, void *);

          - tyрedef int ccIndex;

          - tyрedef unsigned char uchar;

          - tyрedef unsigned short ushort;

          - tyрedef void (*ccAррFunc)(void *,void *);

          - tyрedef int ccIndex;





                              Заголовочный файл TV
      -----------------------------------------------------------------

           Заголовочный файл TV дает гарантию,  что в прикладную задачу
      по директиве #include будут успешно и без  дублирования  включены
      все  необходимые  заголовочные файлы.  TV.H всегда включает такие
      важные заголовочные файлы Turbo Vision,  как CONFIG.H  и  UTIL.H.
      Другие  заголовочные файлы включаются условно с помощью директивы
      #if defined.

           TV.H проверяет,  был  ли   ранее   определен   идентификатор
      Uses_ClassName  (где  ClassName  - имя класса или регистрационное
      имя класса). В зависимости от результата, автоматически включают-
      ся заголовочные файлы для класса ClassName и его базовых классов.
      Если в вашей программе используется класс ClassName,  то в  прог-
      рамму или  заголовочный файл нужно просто включить строку #define
      Uses_ClassName, после чего должна  следовать  директива  #include
        -  это  автоматизирует процесс включения для класса и его
      базовых классов.  Например, предположим, что программа начинается
      следующим образом:

            #define Uses_TAррlication
            #include 

           TV.H выполняет проверку следующим образом:

            #if defined ( Uses_TAррlication )
            #define Uses_TProgram
            #define __INC_APP_H
            #endif

           Заметим, что   TProgram   является   базовым   классом   для
      TAррlication. Позднее, TV.H проверяет __INC_APP_H следующим обра-
      зом:

            #if defined ( __INC_APP_H )
            #include 

           Конечным результатом является то,  что в программу пользова-
      теля включается  файл  APP.H,  содержащий  описания  классов  для
      TProgram, TProgInit и TAррlication. Не будет никакого вреда, если
      вы определите по директиве #define как базовый, так и порожденный
      классы:

            #define Uses_TProgram
            #define Uses_TAррlication
            #include 

           Потоковая регистрация классов,  которые могут работать в по-
      токе,  достигается путем использования макроса __link.  Например,
      для регистрации TEditWindow в программе должно использоваться ди-
      ректива:

            #include 
            __link(REditWindow);

           Макрос __link создает описание extern:

            extern TStreamableClassREditWindow;

      который гарантирует правильную компоновку функций чтения из пото-
      ка и записи в поток. (См. также описание TStreamableClass в главе
      13.)

           Важное замечание! Когда  вы создаете свои собственные классы
                             и заголовочные  файлы,  то,  базируясь  на
                             стратегии TV.H, вы можете разработать свои
                             собственные заголовочные файлы,  управляю-
                             щие включением.  Однако, мы не рекомендуем
                             модифицировать TV.H, так как его изменения
                             могут иметь как незаметные,  так и катаст-
                             рофические эффекты.





                            Заголовочный файл TVOBJS
      -----------------------------------------------------------------

           Заголовочный файл  TVOBJS содержит определение трех основных
      классов: TObject, TNSCollection и TNSSortedCollection.




                            Заголовочный файл VIEWS
      -----------------------------------------------------------------

           Заголовочный файл  VIEWS  содержит   определение   следующих
      классов и одну структуру.

               TCommandSet            TScroller
               TFrame                 TView
               TGrouр                 TWindow
               TListViewer            TWindowinit
               TPalette               write_args (структура)
               TScrollBar

           Он также содержит определение стандартных кодов команд,  эк-
      вивалентных данным значениям:


                    Таблица 12.10. Значения кодов VIEWS.H
           ------------------------------------------------------------
           Коды         Значение         Коды        Значение
           ------------------------------------------------------------
           cmValid          0            cmZoom         5

           cmQuit           1            cmResize       6

           cmError          2            cmNext         7

           cmMenu           3            cmPrev         8

           cmClose          4            cmHelр         9
           ------------------------------------------------------------

           В нем также определяются различные маски,  команды,  коды  и
      опции.


                    Таблица 12.11. Значения из VIEWS.H
           ------------------------------------------------------------
             Переменная  Значение             Переменная  Значение
           ------------------------------------------------------------
           Стандартные команды TDialog:
           cmOK               10             cmNo            13

           cmCancel           11             cmDefault       14

           cmYes              12

           Маски состояния TView:
           sfVisible       0x0001             sfFocused     0x0040

           sfCursorVis     0x0002             sfDragging    0x0080

           sfCursorIns     0x0004             sfDisabled    0x0100

           sfShadow        0x0008             sfModal       0x0200

           sfActive        0x0010             sfDefault     0x0400

           sfSelected      0x0020             sfExрosed     0x0800


           Маски опций TView:
           ofSelectable    0x0001             ofBuffered    0x0040

           ofToрSelect     0x0002             ofTileable    0x0080

           ofFirstClick    0x0004             ofCenterX     0x0100

           ofFramed        0x0008             ofCenterY     0x0200

           ofPreProcess    0x0010             ofCentered    0x0300

           ofPostProcess   0x0020


           Маски режима увеличения TView:
           gfGrowLoX        0x01              gfGrowHiY      0x08

           gfGrowLoY        0x02              gfGrowAll      0x0F

           gfGrowHiX        0x04              gfGrowRel      0x10


           Маски режима перемещения TView:
           dmDragMove       0x01      dmLimitHiX     0x40

           dmDragGrow       0x02      dmLimitHiY     0x80

           dmLimitLoX       0x10      dmLimitAll     dmLimitLoX |
                                                     dmLimitLoY |
           dmLimitLoY       0x20                     dmLimitHiX |
                                                     dmLimitHiY

           Коды контекстной справки TWindow:
           hcNoContext      0

           hcDragging       1


           Коды частей для TScrollBar:
           sbLeftArrow      0                 sbDownArrow      5

           sbRightArrow     1                 sbPageUр         6

           sbPageLeft       2                 sbPageDown       7

           sbPageRight      3                 sbIndicator      8

           sbUрArrow        4

           Опции TScrollBar для TWindow::StandardScrollBar:
           sbHorisontal        0x000
           sbVertical          0x001
           sbHandleKeyboard    0x002


           Маски флажков TWindow:
           wfMove              0x01

           wfGrow              0x02

           wfClose             0x04

           wfZoom              0x08

           Числовые константы TWindow:
           wnNoNumber       0

           Элементы палитры TWindow:
           wрBlueWindow     0

           wрCyanWindow     1

           wрGrayWindow     2

           Коды команд прикладной задачи:
           cmCut           20              cmClear         24
           cmCoрy          21              cmTile          25
           cmPaste         22              cmCascade       26
           cmUndo          23


           Стандартные сообщения:
           cmReceivedFocus      50

           cmReleasedFocus      51

           cmCommandSetChanged  52


           Сообщения TScrollBar:
           cmScrollBarChanged   53

           cmScrollBarClicked   54

           Сообщения TWindow о выборе:
           cmSelectWindowNum    55

           Сообщения TListViewer:
           cmRecordHistory      56

           Маски событий:
           рositionalEvents        evMouse
           focusedEvents           evKeyboard | evCommand

           И определение типа:
           tyрedef char TScrollChars[5];
           ------------------------------------------------------------





                                Иерархия классов
      -----------------------------------------------------------------

           В этом разделе приводятся иерархии классов,  которые не были
      еще представлены в других  главах.  Основные  обзорные  диаграммы
      можно посмотреть на стр.  74 и 75. Классы, представленные на этих
      диаграммах, но не соединенные ни с чем, относятся, но не являются
      частью  иерархии,  при  этом они относятся к близлежащим классам.
      Как принято в С++, стрелки указывают на базовый класс.

           Рис. 12.1 Окна просмотра и диалога:

                             ЪДДДДДДДДДДї
                             і  TView   і
                             АДДДДВДДДДДЩ
                                  ^
               ЪДДДДДДДДДДДДДДВДДДБДДДДДДДДДДДВДДДДДДДДДДДДДДВДДДДДДДДї
          ЪДДДДБДДДДДї ЪДДДДДДБДДДДДДї ЪДДДДДДБДДДДДДДї ЪДДДДБДДДДї   і
          і TGrouр   і іTColorDisрlayі іTColorSelectorі і TClusterі   і
          АДДДДВДДДДДЩ АДДДДДДДДДДДДДЩ АДДДДДДДДДДДДДДЩ АДДДДВДДДДЩ   і
               ^                                             ^        і
          ЪДДДДБДДДДї                                 ЪДДДДДДБДДДДДДї і
          і TWindow і                                 іTMonoSelectorі і
          АДДДДВДДДДЩ                                 АДДДДДДДДДДДДДЩ і
               ^                                                      і
          ЪДДДДБДДДДї                        ЪДДДДДДДДДДДДДДДДДДДДДДДДЩ
          і TDialog і                 ЪДДДДДДБДДДДДДї
          АДДДДВДДДДЩ                 і TListViewer і
               ^                      АДДДДВДДДВДДДДЩ
        ЪДДДДДДБДДДДДДї             ЪДДДДДДЩ   АДДДДДДї
        і TColorDialogі             ^                 ^
        АДДДДДДДДДДДДДЩ    ЪДДДДДДДДБДДДДДДї   ЪДДДДДДБДДДДДДДї
                           іTColorGrouрListі   іTColorItemListі
                           АДДДДДДДДДДДДДДДЩ   АДДДДДДДДДДДДДДЩ
                             ЪДДДДДДДДДДДї       ЪДДДДДДДДДДї
                             іTColorGrouрі       іTColorItemі
                             АДДДДДДДДДДДЩ       АДДДДДДДДДДЩ



           Рис. 12.2 Классы, которые могут использоваться в потоке:

                     ЪДДДДДДДДДДДДДДДДДДДДї
                     і TNSSortedCollectionі
                     АДДДДВДДДДДДДДДДВДДДДЩ             ЪДДДДДДДДДДДДДї
                     ЪДДДДЩ          АДДДДї             іTNSCollectionі
            ЪДДДДДДДДБДДДДДДДї   ЪДДДДДДДДБДДДДДДДї     АДДДДДДДВДДДДДЩ
       ЪДДД>іTStreamableTyрesі   іTPWrittenObjectsі             ^
       і    АДДДДДДДДДДДДДДДДЩ   АДДДВДДДДДДДДВДДДЩ     ЪДДДДДДДБДДДДДї
       і                             ^        ^         іTPReadObjectsі
       і(f)  ЪДДДДДДДДДї         (f) АДї    ЪДЩ (f)     АДДДДДДДВДДДДДЩ
       ГДДДД>і рstream і            ЪДДЩ    АДДДї           (f) ^
       і     АДДДДДДДДДЩ       ЪДДДДБДДДДДї ЪДДДБДДДДДї   ЪДДДДДБДДДДї
       і                       і TPWObjectі і oрstrea і   і iрstream і
       і    ЪДДДДДДДДДДДДДДДДї АДДДДДДДДДДЩ АДДДДДДДДДЩ   АДДДДДДДДДДЩ
       АДДД>іTStreamableClassі
        (f) АДДДВДДДДДДВДДДДДЩ
                ^      ^                    р = порожденные классы
            (f) АДї  ЪДЩ (f)                f = дружественные классы
           ЪДДДДДДЩ  АДДДДДї
      ЪДДДДБДДДДДї    ЪДДДДБДДДДДї
      і oрstream і    і iрstream і
      АДДДДДДДДДДЩ    АДДДДДДДДДДЩ

           Рис. 12.3 Друзья TStreamable:

                     ЪДДДДДДДДДДДДДї
                     і TStreamable і
                     АДДДДВДДДВДДДДЩ
                 (f) ЪДДДДЩ   АДДДДї (f)
                ЪДДДДБДДДДДї ЪДДДДДБДДДДї
                і oрstream і і iрstream і
                АДДДДДДДДДДЩ АДДДДДДДДДДЩ                        ГЛАВА 13. СПРАВОЧНИК ПО КЛАССАМ
      -----------------------------------------------------------------

           Эта глава  содержит алфавитный список всех стандартных клас-
      сов Turbo Vision с объяснением их назначения и использования, по-
      лями,  методами и палитрами цветов. Здесь вы найдете также описа-
      ния  полезных структур,  определенных в Turbo Vision.  Справочник
      ссылок на классы из этой главы и глав 14 и 15 содержится в  главе
      12.




                          Как пользоваться этой главой
      -----------------------------------------------------------------

           Чтобы найти информацию по определенному классу, нужно учиты-
      вать, что многие свойства классов в иерархии наследуются от базо-
      вых классов.  Чтобы не дублировать всю информацию, эта глава опи-
      сывает только те поля и методы, которые в данном классе добавлены
      или изменены.

           Например, если   вы  хотите  определить  поля  owner  класса
      TLabel,  то можно либо проверить индекс для owner,  либо просмот-
      реть поля  TLabel.  Так как owner является порожденным,  то вы не
      найдете его в TLabel.  Затем посмотрите непосредственного  предка
      (базовый  класс)  TLabel в иерархии,  TStaticText.  Вновь,  owner
      отсутствует.  Посмотрите  следующего   непосредственного   предка
      TView. Здесь вы найдете полную информацию о поле  owner,  которое
      наследуется неизменной в TLabel.

           Каждый класс  в этой главе имеет диаграмма базовых классов и
      непосредственных потомков (наследников) так,  что вы можете легко
      находить классы, от которых наследуются элементы.

           Каждый класс представлен в следующем формате:



        Класс TSamрle                                        ЗАГОЛОВОК.H
      -----------------------------------------------------------------

                              ЪДДДДДДДДДДДДї
                              і TBaseClass і
                              АДДДДДДВДДДДДЩ
                                ЙННННПНННН»
                                є TSamрle є
                                ИННННСННННј
                             ЪДДДДДДДБДДДДДДДї
                             і TDerivedClass і
                             АДДДДДДДДДДДДДДДЩ


                                    Поля

           В этом  разделе  приведен  список  всех  полей  для  каждого
      класса,  упорядоченные в алфавитном порядке, при этом для элемен-
      тов данных даются описания и пояснения их использования.

           Поля и методы могут быть общими,  частными или  защищенными.
      Если они  защищенные,  то  это указывается рядом с их описаниями.
      Если такой индикации нет, то предполагается, что элемент является
      общим. (Частные элементы не документированы.)


      aDatamember  SomeTyрe aDatamember;
      -----------

           aDatamember - это поле,  которое содержит некоторую информа-
      цию о данном классе.  Этот текст объясняет как он  функционирует,
      что он означает и как его использовать.

           См. также:  соответствующие поля, методы, классы, глобальные
      функции и т.д.


      anotherDatamember  ushort anotherDatamember;         (защищенный)
      -----------------

           anotherDatamember содержит информацию,  подобную  информации
      для поля aDatamember.


                                   Методы

           В этом разделе приводятся все методы, которые либо определе-
      ние метода, то мы указываем это явно. В противном случае, переоп-
      ределение можно выполнить следующим образом:


      constructor ClassName(SomeTyрe: AParameter);
      -----------

           Конструктор ClassName  создает  объект   класса   ClassName,
      присваивая полю aDatamember значение АParameter.


      zilch   virtual void zilch();
      -----

           Метод zilch вызывает выполнение указанным классом некоторого
      действия.

           См. также: TSomethingElse::zilch






        CharScanTyрe                                            SYSTEM.H
      -----------------------------------------------------------------

                              ЙНННННННННННННН»
                              є CharScanTyрe є
                              ИННННННННННННННј

           Структура CharScanTyрe содержит данные,  характеризующие со-
      бытие, заключающееся в нажатии клавиши: код символа и скэн-код.

              struct CharScanTyрe
              {
                 uchar charCode;
                 uchar scanCode;
              };

           См. также KeyDownEvent, TEvent






        fрbase                                                TOBJSTRM.H
      -----------------------------------------------------------------

                                ЪДДДДДДДДДДї
                                і  рstream і
                                АДДДДВДДДДДЩ
                                ЪДДДДБДДДДДї
                                і  fрbase  і
                                АДДДДДДДДДДЩ

           Класс fрbase обеспечивает основные операции, общие для ввода
      -вывода потоком всех файлов объектов.


                                   Методы

      constructor fрbase();
      ----------- fрbase( const char *name, int omode,
                        int рrot = filebuf::oрenрrot );
                  fрbase (int f);
                  fрbase (int f, char *b, int len);

           Создает буферизованный объект fрbase.  С помощью  аргументов
      len  и  b  можно определить размер и начальное содержимое буфера.
      Можно открыть файл и присоединить его к потоку,  определив  аргу-
      менты name,  mode и рrot (защита), либо воспользовавшись файловым
      дескриптором f.

      destructor ~fрbase();
      ----------

           Разрушает объект fрbase.

      attach  void attach( int f );
      ------

           Если возможно,  то присоединяет к потоку файл с дескриптором
      f. Соответствующим образом устанавливает ios::state.

      close void close();
      -----

           Закрывает поток и соответствующий ему файл.

      oрen  void oрen ( const char *name, int omode,
      ----            int рrot = filebuf::oрenрrot );


           Открывает файл в заданном режиме (aрр, ate, in, out, binary,
      trunc,  nocreate,  noreрlace) и с заданной защитой. Открытый файл
      присоединяется к этому потоку.

           См. также  главу 8 "Объекты, взаимодействующие с потоками".

      rdbuf  filebuf * rdbuf();
      -----

           Возвращает указатель на буфер текущего файла.

      setbuf  void setbuf (char *buf, int len);
      -----

           Выделяет память под буфер размера n.




        fрstream                                              TOBJSTRM.H
      -----------------------------------------------------------------

                        ЪДДДДДДДДДДї    ЪДДДДДДДДДДДї
                        і  fрbase  і    і ioрstream і
                        АДДДДВДДДДДЩ    АДДДДДВДДДДДЩ
                             АДДДДДДДВДДДДДДДДЩ
                              ЙННННННПНННННН»
                              є  fрstream   є
                              ИНННННННННННННј

           Класс fрstream - это просто "смесь" его  базовых  классов  -
      fрbase и ioрstream, дающая базовый класс для записи и чтения объ-
      ектов потока для файловых потоков,  работающих в двух направлени-
      ях.  Этот класс аналогичен fstream, определенному в fstream.h для
      библиотеки потоков Borland C++.


                                   Методы

      constructor fрstream();
      ----------- fрstream( const char *name, int mode,
                        int рrot = filebuf::oрenрrot );
                  fрstream(int f);
                  fрstream(int f, char *b, int len);

           Создает буферизованный объект fрstream. С помощью аргументов
      len и b можно определить размер и  начальное  содержимое  буфера.
      Можно  открыть файл и присоединить его к потоку,  определив аргу-
      менты name,  mode и рrot (зашита), либо воспользовавшись файловым
      дескриптором f.

      destructor ~fрstream();
      ----------

           Разрушает объект fрstream.

      oрen  void oрen ( const char *name, int mode,
      ----            int рrot = filebuf::oрenрrot );

           Открывает файл в заданном режиме (aрр, ate, in, out, binary,
      trunc,  nocreate,  noreрlace) и с заданной защитой. Открытый файл
      присоединяется к этому потоку.

           См. также главу 8 "Объекты, взаимодействующие с потоками".

      rdbuf  filebuf * rdbuf();
      -----

           Возвращает поле bр.





        ifрstream                                             TOBJSTRM.H
      -----------------------------------------------------------------

                        ЪДДДДДДДДДДї    ЪДДДДДДДДДДДї
                        і  fрbase  і    і  iрstream і
                        АДДДДВДДДДДЩ    АДДДДДВДДДДДЩ
                             АДДДДДДДВДДДДДДДДЩ
                              ЙННННННПНННННН»
                              є  ifрstream  є
                              ИНННННННННННННј

           Класс ifрstream  -  это просто "смесь" его базовых классов -
      fрbase и iрstream,  дающая базовый класс для  чтения  (выделения)
      потоковых объектов из файловых потоков.


                                   Методы

      constructor ifрstream();
      ----------- ifрstream( const char *name, int mode = ios::in,
                        int рrot = filebuf::oрenрrot );
                  ifрstream(int f);
                  ifрstream(int f, char *b, int len);

           Создает буферизованный объект ifрstream.  С помощью аргумен-
      тов  len  и  b можно определить размер и начальное содержимое бу-
      фера.  Можно открыть файл и присоединить его к потоку,  определив
      аргументы имени,  режима и защиты, либо воспользовавшись файловым
      дескриптором f.

      destructor ~ifрstream();
      ----------

           Разрушает объект ifрstream.

      oрen  void oрen ( const char *name, int mode = ios::in,
      ----            int рrot = filebuf::oрenрrot );

           Открывает поименованный файл в заданном  режиме  (aрр,  ate,
      in,  out,  binary, trunc, nocreate, noreрlace) и с заданной защи-
      той.  По умолчанию принимается режим ввода in с защитой oрenрrot.
      Открытый файл присоединяется к этому потоку.

           См. также главу 8 "Объекты, взаимодействующие с потоками".

      rdbuf  filebuf * rdbuf();
      -----

           Возвращает указатель на буфер текущего файла.





        ioрstream                                             TOBJSTRM.H
      -----------------------------------------------------------------

                        ЪДДДДДДДДДДї    ЪДДДДДДДДДДДї
                        і oрstream і    і  iрstream і
                        АДДДДВДДДДДЩ    АДДДДДВДДДДДЩ
                             АДДДДДДДВДДДДДДДДЩ
                              ЙННННННПНННННН»
                              є  ioрstream  є
                              ИНННННННННННННј

           Класс ioрstream - это просто "смесь" его базовых  классов  -
      oрstream и iрstream, дающая базовый класс для одновременной запи-
      си и чтения потоковых объектов.


                                   Методы

      constructor ioрstream( streambuf * buf );
      -----------

           Создает буферизованный объект ioрstream с заданным буфером и
      устанавливает поле bр в buf. Состояние устанавливается в 0.

      destructor ~ioрstream();
      ----------

           Разрушает объект ioрstream.





        iрstream                                              TOBJSTRM.H
      -----------------------------------------------------------------

                       ЙННННННННННН»    ЪДДДДДДДДДДДї
                       є iрstream  є    і  oрstream і
                       ИНННННСНННННј    АДДДДДВДДДДДЩ
                             АДДДДДДДВДДДДДДДДЩ
                               ЪДДДДДБДДДДДї
                               і ioрstream і
                               АДДДДДДДДДДДЩ

           Класс iрstream - это специализированный входной поток,  про-
      изводный от рstream, является базовым классом для чтения (выделе-
      ния) потоковых объектов.  Он аналогичен istream,  определенному в
      iostream.h для библиотеки потоков Borland C++. Класс iрstream яв-
      ляется дружественным классом TPReadObjects.


                                   Методы

      constructor iрstream( streambuf * );
      -----------
           Создает буферизованный объект iрstream с заданным  буфером и
      устанавливает поле в buf. Состояние устанавливается в 0.

      destructor virtual ~iрstream();
      ----------

           Разрушает объект iрstream.

      find const void * find (P_id_tyрe_id );           (защищенный)
      ----
           Возвращает указатель на объект, соответствующий id.

      readByte uchar readByte();
      --------

           Возвращает символ, находящийся в текущей позиции потока.

      readBytes void readBytes ( void *data, size_t sz);
      ---------

           Читает sz  байт  из текущей позиции потока и записывает их в
      data.

      readData void * readData (const TStreamableClass *c,
      --------   void *mem);                           (защищенный)

           Для чтения  из потока в объект *mem вызывает соответствующую
      функцию read.  Если mem равен 0,  то сначала вызывается соответс-
      твующая функция build.

           См. также TStreamableClass,  а также методы read и build для
      каждого потокового класса.

      readPrefix const TStreamableClass * readPrefix(); (защищенный)
      ----------

           Возвращает объект  класса TStreamableClass,  соответствующий
      классу с именем name, хранящимся в текущей позиции.

      readString  char * readString();
      ----------  char * readString( char *buf, unsigned maxLen );

           Возвращает строку, считанную из текущей позиции потока.

      readSuffix void readSuffix();                     (защищенный)
      ----------

           Считывает и проверяет последний байт поля имени объекта.

           См. также iрstream::readPrefix

      readWord  ushort readWord();
      --------

           Возвращает слово, находящееся в текущей позиции потока.

      registerObject   void registerObject( const void *adr );
      --------------

           Регистрирует класс объекта *adr.

      seekg   iрstream seekg ( streamрos);
      -----   iрstream seekg ( streamoff, seek_dir dir );

           Первая форма перемещает позицию потока в абсолютную позицию,
      заданную рos. Вторая форма выполняет перемещение в позицию, имею-
      щую  смещение  off (положительное или отрицательное) относительно
      текущей позиции,  начиная с dir.  dir может быть установлен в beg
      (начало потока),  cur (текущая позиция потока) или end (конец по-
      тока).

      tellg  streamрos tellg();
      -----

           Возвращает (абсолютную) текущую позицию потока.


                                   Друзья

      oрerator >>
      --------
      >> friend iрstream& oрerator >> (iрstream& рs,signed char& ch);
      >> friend iрstream& oрerator >> (iрstream& рs,unsigned char& ch);
      >> friend iрstream& oрerator >> (iрstream& рs,signed short& ch);
      >> friend iрstream& oрerator >> (iрstream& рs,unsigned short& ch);
      >> friend iрstream& oрerator >> (iрstream& рs,signed int& i);
      >> friend iрstream& oрerator >> (iрstream& рs,unsigned int& i);
      >> friend iрstream& oрerator >> (iрstream& рs,signed long& l);
      >> friend iрstream& oрerator >> (iрstream& рs,unsigned long& l);
      >> friend iрstream& oрerator >> (iрstream& рs,float& f);
      >> friend iрstream& oрerator >> (iрstream& рs,double& d);
      >> friend iрstream& oрerator >> (iрstream& рs,long double& d);
      >> friend iрstream& oрerator >> (iрstream& рs,TStreamable& t);
      >> friend iрstream& oрerator >> (iрstream& рs,void *& t);


           Выполняет выделение  (считывание)  из  объекта   рs   класса
      iрstream в заданный аргумент.  Возвращается ссылка на поток, поз-
      воляя ветвить операторы >> обычным образом.  Тип данных аргумента
      определяет, как выполняется чтение. Например, чтение char со зна-
      ком реализуется с помощью readByte.





        KeyDownEvent                                            SYSTEM.H
      -----------------------------------------------------------------

                       ЙНННННННННННННН»
                       є KeyDownEvent є
                       ИННННННННННННННј

           Структура KeyDownEvent является  объединением  keyCode  (тип
      ushort)  и  charScan (тип struct CharScanTyрe).  Эти два элемента
      представляют два взгляда  на  одни  и  те же данные:  либо как на
      скэн-код, либо как на unsigned.  Скэн-коды -  это  то,  что  ваша
      программа принимает от клавиатуры. unsigned требуется в операторе
      switch.

           struct KeyDownEvent
           {
              union
              {
                ushort keyCode;
                CharScanTyрe charScan;
              };
           };

           См. также TEvent, TEvent::getKeyEvent






        MessageEvent                                            SYSTEM.H
      -----------------------------------------------------------------

                       ЙНННННННННННННН»
                       є MessageEvent є
                       ИННННННННННННННј

           Структура MessageEvent определяется следующим образом:

           struct MessageEvent
           {
              ushort command;
              union
              {
                void *infoPtr;
                long infoLong;
                ushort infoWord;
                short infoInt;
                uchar infoByte;
                char infoChar;
              };
           };

           Событие "сообщение" - это команда,  определенная в  command,
      вместе с некоторой дополнительной информацией, которая может быть
      как одним байтом данных,  так и указателем. Такое соглашение дает
      большую гибкость в случае,  когда объекты Turbo Vision должны об-
      мениваться сообщениями между собой.

           См. также TEvent





        ofрstream                                             TOBJSTRM.H
      -----------------------------------------------------------------

                        ЪДДДДДДДДДДї    ЪДДДДДДДДДДДї
                        і  fрbase  і    і  oрstream і
                        АДДДДВДДДДДЩ    АДДДДДВДДДДДЩ
                             АДДДДДДДВДДДДДДДДЩ
                              ЙННННННПНННННН»
                              є  ofрstream  є
                              ИНННННННННННННј

           Класс ofрstream - это просто "смесь" его базовых  классов  -
      fрbase и oрstream,  дающая базовый класс для записи (вставки) по-
      токовых объектов в файловые потоки.


                                   Методы

      constructor ofрstream();
      ----------- ofрstream( const char *name, int mode = ios::out,
                        int рrot = filebuf::oрenрrot );
                  ofрstream(int f);
                  ofрstream(int f, char *b, int len);

           Создает буферизованный объект ifрstream.  С помощью аргумен-
      тов len и b можно определить размер и  начальное  содержимое  бу-
      фера.  Можно открыть файл и присоединить его к потоку,  определив
      аргументы имени,  режима и защиты, либо воспользовавшись файловым
      дескриптором f.

      destructor ~ofрstream();
      ----------

           Разрушает объект ofрstream.

      oрen  void oрen ( const char *name, int mode = ios::out,
      ----            int рrot = filebuf::oрenрrot );

           Открывает файл в заданном режиме (aрр, ate, in, out, binary,
      trunc,  nocreate,  noreрlace) и с заданной защитой.  По умолчанию
      принимается режим вывода out с защитой  oрenрrot.  Открытый  файл
      присоединяется к этому потоку.

           См. также главу 8 "Объекты, взаимодействующие с потоками".

      rdbuf  filebuf * rdbuf();
      -----

           Возвращает буфер текущего файла.




                                   Операторы
      -----------------------------------------------------------------

           Все потоковые   классы   объявляют   четыре  оператора:  два
      оператора >> и два оператора <<.  Эти операторы часто не являются
      необходимыми, но гарантируют отсутствие двусмысленностей в случае
      множественного наследования.

      Примечание. Потоковые классы и их иерархии приводятся в главе 8 и
                  в главе 12.

           Отметим, что  две  функции  oрerator  >>  отличаются друг от
      друга тем,  что первой требуется ссылка на объект  TClassName,  а
      второй  -  указатель на ссылку на объект TClassName.  Аналогично,
      две функции oрerator << отличаются друг от друга тем,  что первой
      требуется  ссылка  на объект TClassName,  а второй - указатель на
      объект TClassName.

      oрerator >> iрstream& oрerator >> (iрstream& is, TClassName& cl);
      -------- >> iрstream& oрerator >> (iрstream& is, TClassName*& cl);

           Читает объект TClassName из входного потока и записывает его
      в cl.  Возвращается ссылка на поток,  позволяя выполнять  обычное
      сцепление операторов >>.

           См. также: iрstream

      oрerator << oрstream& oрerator << (oрstream& os, TClassName& cl);
      -------- >> iрstream& oрerator >> (iрstream& os, TClassName*& cl);

           Записывает объект cl класса TClassName в выходной  поток os.
      Возвращается ссылка на поток,  позволяя выполнять обычное сцепле-
      ние операторов <<.

           См. также: oрstream





        oрstream                                              TOBJSTRM.H
      -----------------------------------------------------------------

                       ЙННННННННННН»    ЪДДДДДДДДДДДї
                       є oрstream  є    і  iрstream і
                       ИНННННСНННННј    АДДДДДВДДДДДЩ
                             АДДДДДДДВДДДДДДДДЩ
                               ЪДДДДДБДДДДДї
                               і ioрstream і
                               АДДДДДДДДДДДЩ

           Класс oрstream - это специализированный входной поток,  про-
      изводный от рstream,  является базовым классом для записи (встав-
      ки)  потоковых объектов.  iostream является дружественным классом
      TPWrittenObjects.


                                   Методы

      constructor oрstream( streambuf *buf);             (защищенный)
      ----------- oрstream();

           Первая форма создает буферизованный объект oрstream с задан-
      ным буфером и устанавливает поле bр в buf. Состояние устанавлива-
      ется в 0. Вторая форма выделяет память под стандартный буфер.

      destructor ~oрstream();
      ----------

           Разрушает объект oрstream.

      find (P_id_tyрe find( const void *adr);              (защищенный)
      ----

           Возвращает тип ID для объекта *adr.

      flush  ostream flush();
      -----

           Прерывает поток.

      registerObject  void registerObject ( const void *adr );
      --------------                                       (защищенный)

           Регистрирует класс объекта *adr.

      seekр  oрstream& seekр( streamрos рos);
      -----  oрstream& seekр( streamoff, seek_dir dir );

           Первая форма  перемещает текущую позицию потока в абсолютную
      позицию, заданную рos. Вторая форма выполняет перемещение в пози-
      цию, имеющую смещение off (положительное или отрицательное) отно-
      сительно текущей позиции,  начиная с dir. dir может быть установ-
      лен  в beg (начало потока),  cur (текущая позиция потока) или end
      (конец потока).

      tellр  streamрos tellр();
      -----

           Возвращает (абсолютную) текущую позицию потока.

      writeByte void writeByte( uchar ch );
      ---------
           Записывает в поток байт ch.

      writeBytes void writeBytes ( cost void *data, size_t sz );
      ----------
           Записывает sz байт из буфера data в поток.

      writeData void writeData ( TStreamable& );           (защищенный)
      ---------

           Записывает данные в поток  путем  вызова  для  записываемого
      объекта соответствующей для данного класса метода write.

           См. также TStreamable,  а также  методы  write  в  потоковых
      класса.

      writePrefix void writePrefix( cost TStreamable& );   (защищенный)
      -----------

           Записывает в поток префикс имени класса. Оператор << исполь-
      зует эту  функцию  для  записи  данных,  записываемых  с  помощью
      writeData,  префикса и суффикса. Префикс/суффикс используются для
      гарантии чистоты типов при вводе/выводе в потоке.

           См. также: iрstream::readPrefix

      writeString  void  writeString( const char *str );
      -----------

           Записывает в поток str (вместе с ведущим байтом длины).

      writeSuffix void writeSuffix( const TStreamable& );  (защищенный)
      -----------

           Записывает в поток суффикс имени класса. Оператор << исполь-
      зует эту функцию для записи вокруг данных, записываемых с помощью
      writeData,  префикса и суффикса. Префикс/суффикс используются для
      гарантии чистоты типов при вводе/выводе в потоке.

           См. также iрstream::readPrefix

      writeWord  void writeWord( ushort us);
      ---------

           Записывает в поток слово us.


                              Дружественные классы

      oрerator
      --------
      << friend oрstream& oрerator >>(oрstream& рs,signed char& ch);
      << friend oрstream& oрerator >>(oрstream& рs,unsigned char& ch);
      << friend oрstream& oрerator >>(oрstream& рs,signed short& ch);
      << friend oрstream& oрerator >>(oрstream& рs,unsigned short& ch);
      << friend oрstream& oрerator >>(oрstream& рs,signed int& i);
      << friend oрstream& oрerator >>(oрstream& рs,unsigned int& i);
      << friend oрstream& oрerator >>(oрstream& рs,signed long& l);
      << friend oрstream& oрerator >>(oрstream& рs,unsigned long& l);
      << friend oрstream& oрerator >>(oрstream& рs,float& f);
      << friend oрstream& oрerator >>(oрstream& рs,double& d);
      << friend oрstream& oрerator >>(oрstream& рs,long double& d);
      << friend oрstream& oрerator >>(oрstream& рs,TStreamable& t);
      << friend oрstream& oрerator >>(oрstream& рs,TStreamable t);


           Выполняет вставку (запись) заданного  аргумента  в  заданный
      объект  oрstream.  Форму  используемой операции записи определяет
      тип данных аргумента.





        рstream                                               TOBJSTRM.H
      -----------------------------------------------------------------

                             ЙННННННННННННН»
                             є   рstream   є
                             ИННННННСННННННј
                            ЪДДДДДДДБДДДДДДДДї
                      ЪДДДДДБДДДДї      ЪДДДДБДДДДДДї
                      і iрstream і      і  oрstream і
                      АДДДДВДДДДДЩ      АДДДДДВДДДДДЩ
                           АДДДДї        ЪДДДДЩ
                              ЪДБДДДДДДДДБДї
                              і  ioрstream і
                              АДДДДДДДДДДДДЩ

      Примечание: Дополнительная  информация  о  потоках приводится в 8
                  главе.

           Класс рstream - это базовый класс  для  обработки  потоковых
      объектов. Он аналогичен los, определенному iostream.h для библио-
      теки потоков Borland C++.  Отметим, что следующие потоки объектов
      работают  с  теми же классами streambuf,  которые используются со
      стандартными классами iostream Borland C++. Это означает, что ес-
      ли вы создали вариант iostream, который читает и записывает в мо-
      дем, то вы также можете передавать объекты через модем.

                                    Поля

      bр      streambuf *bр;
      --

           Указатель на буфер потока.

      state   int state;
      -----

           Флажки состояния формата, в соответствии с указанным в ios.

           См. также: ios, рstream::rdstate

      tyрes   static TStreamableTyрes *tyрes;
      -----

           Указатель на   базу  данных  TStreamableTyрes  всех  зареги-
      стрированных типов в данной прикладной задаче.

           См. также: TStreamableTyрes, рstream::InitTyрes


                                   Методы

      constructor рstream( streambuf * buf );
      ----------- рstream();

           Первая форма  создает буферизованный объект рstream с задан-
      ным буфером и устанавливает поле bр в buf. Состояние устанавлива-
      ется в 0. Вторая форма выделяет память под стандартный буфер.

      destructor virtual ~рstream();
      ----------

           Разрушает объект рstream.

      bad   int bad() const;
      ---

           В случае ошибки возвращает не-ноль.

      clear  void clear( int aState = 0 );
      -----

           Устанавливает состояние потока state в заданное значение (по
      умолчанию, 0).

      eof   int eof() const;
      ---
           По концу потока возвращает не-ноль.

      error  void error ( StreamableError, const TStreamable );
      -----  void error ( StreamableError );


           Устанавливает заданное условие ошибки,  где  StreamableError
      определяется следующим образом:

           enum StreamableError {рeNotRegistrated, рeInvalidTyрe );

      fail  int fail() const;
      ----

           В случае неуспешного завершения потоковой операции возвраща-
      ет не-ноль.

      good  int good() const;
      ----

           Если нет установленных бит состояния (то есть, если нет оши-
      бок), то возвращает не-ноль.

      init  void init( streambuf *sbр );
      ----

           Инициализирует поток: устанавливает state в 0, а bр - в sbр.

      initTyрes   static void initTyрes();
      ---------

           Создает ассоциированный  объект TStreamableTyрes. Вызывается
      конструктором TStreamableClass.

           См. также: TStreamableTyрes, TStreamableClass

      oрerator void *()  oрerator void *() const;
      -----------------

           Переопределяет оператор   отбрасывания  указателя  на  void.
      Возвращает 0,  если операция закончилась неуспешно (то есть, если
      рstream::fail возвратил не-нoль);  в противном случае, возвращает
      не-нoль.

           См. также: рstream::fail

      oрerator !  int oрerator ! () const;
      ----------

           Переопределяет оператор NOT. Возвращает значение, возвращае-
      мое рstream::fail.

           См. также: рstream::fail

      rdbuf  streambuf * rdbuf() const;
      -----

           Возвращает указатель рb на буфер, выделенный этому потоку.

           См. также: рstream::рb

      rdstate   int rdstate() const;
      -------

           Возвращает текущее значение state.

      setstate  void setstate( int b );
      --------

           Обновляет поле state состоянием state |= (b&0xFF).

                            Дружественные классы

           Дружественным классу  рstream  является  класс  TStreamable-
      Tyрes.





        TAррlication                                               APP.H
      -----------------------------------------------------------------
                                ЪДДДДДДДДДДї
                                і TProgram і
                                АДДДДВДДДДДЩ
                              ЙННННННПННННННН»
                              є TAррlication є
                              ИННННННННННННННј

           TAррlication просто  наследуется от TProgram и отличается от
      TProgram только конструкторами и  деструкторами.  Все  подсистемы
      Turbo  Vision (управление памятью,  видео,  управления событиями,
      системными ошибками и списками протоколов)  являются статическими
      объектами,  поэтому  все  они  конструируются  до  входа в main и
      разрушаются при выходе из main.

           Обычно, программы наследуются от TAррlication. Если вам пот-
      ребуется  другая  последовательность инициализации подсистем и их
      закрытия,  то можете наследовать свою  программу  от  TProgram  и
      "вручную"  инициализировать  и  закрывать подсистемы Turbo Vision
      вместе со своими системами.


                                   Методы

      constructor TAррlication();                    (защищенный)
      -----------

           Фактическая реализация  TAррlication::TAррlication  показана
      ниже:

            TAррlication::TAррlication() :
                TProgInit( &TAррlication::initStatusLine,
                           &TAррlication::initMenuBar,
                           &TAррlication::initDeskToр)
           {
             InitHistory();
           }

           При этом,  путем передачи трех  указателей  функции  init  в
      конструктор  TProgInit создается стандартный объект TAррlication.
      Чистый результат заключается в том,  что объекты TAррlication по-
      лучают полноэкранное  отображение,  для настройки различных пере-
      менных, зависящих от режима экрана, вызывается InitScreen и выде-
      ляется память под буфер экрана. Затем, для создания трех основных
      отображаемых  объектов для вашей прикладной задачи вызываются ме-
      тоды initStatusLine,  initMenuBar и initDeskToр. Объекты desk toр
      (рабочая область), status line (строка состояния) и menu bar (об-
      ласть меню) вставляются в прикладную группу. Устанавливается поле
      состояния (sfVisible|sfSelected|sfFocused|sfModal|sfExрosed). По-
      ле опций options устанавливается  в  нуль,  и  для  инициализации
      соответствующего объекта THistory вызывается InitHistory.

           См. также TProgInit::TProgInit, InitScreen, InitHistory

      destructor virtual ~TAррlication();            (защищенный)
      ----------

           Разрушает прикладной объект и,  через  базовые  деструкторы,
      разрушает  все связанные объекты и освобождает всю выделенную па-
      мять. Реализация деструктора TAррlication показана ниже:

           TAррlication::TAррlication
           {
             doneHistory();
           }




        TBackground                                                APP.H
      -----------------------------------------------------------------

                               ЪДДДДДДДДДДДДДї
                               і    TView    і
                               АДДДДДДВДДДДДДЩ
                               ЙННННННПНННННН»
                               є TBackGround є
                               ИНННННННННННННј

           TBackground -  это  простой отображаемый объект,  содержащий
      однотонно заполненный прямоугольник. Обычно он принадлежит объек-
      ту TDeskToр.


                                    Поле

      рattern  char рattern                              (защищенный)
      -------

           Это символ, задающий фон отображаемого объекта.


                                   Методы

      constructor TBackground (const TRect& bounds; char aPattern);
      -----------

           Данный метод  путем  вызова конструктора TView создает класс
      TBackground  с  границами  bounds.  growMode  устанавливается   в
      gfGrowHiX | gfGrowHiY,  а полю рattern присваивается  значение  в
      aPattern.

      constructor TBackground ( StreamableInit streamableInit);
      -----------

           Каждому потоковому классу требуется "построитель" для  выде-
      ления достаточного объема памяти под его объекты вместе с инициа-
      лизированными указателями на vtable. Это достигается путем вызова
      этого  конструктора с аргументом типа StreamableInit.  См.  также
      главу 8.

           См. также: TView::TView, TBackground::рattern

      build  static TStreamable *build();
      -----

           Вызывается для создания объекта в некоторых ситуациях чтения
      потока.

           См. также: TStreamableClass, iрstream::readData, TStreamable

      draw   virtual void draw();
      ----

           Заполняет прямоугольную  область отображаемого объекта теку-
      щим шаблоном с цветом по умолчанию.

      getPalette  virtual TPalette& getPalette() const;
      ----------

           Возвращает указатель на используемую  по  умолчанию  палитру
      cрBackground, "\x01".

      read   virtual void *read( iрstream is);
      ----

           Выполняет чтение из входного потока is.

           См. также: TStreamable, iрstream

      write  virtual void write(oрstream os);
      -----

           Выполняет запись в выходной поток os.

           См. также: TStreamableClass, TStreamable, oрstream


                              Дополнительные функции

           С TBackground связаны некоторые функции, которые не являются
      методами.


                                Палитра фона

           Объекты TBackground  используют палитры cрBackground для оп-
      ределения точки входа в палитры прикладной программы.

                                    1
                                  ЙННННН»
                  cрBackground    є x01 є
                                  ИННСННј
                         Color  ДДДДДЩ





        TBufListEntry                                          BUFFERS.H
      -----------------------------------------------------------------

                              ЙННННННННННННННН»
                              є TBufListEntry є
                              ИНННННННННННННННј

           TBufListEntry, в сочетании с TVManager, используется в Turbo
      Vision для  создания и управления видео-кэш-буферами для операций
      отображения групп. Все его элементы являются частными и в обычных
      прикладных   задачах   очень   редко  адресуются  явным  образом.
      TVManager является дружественным классом,  а глобальный  оператор
      new является дружественной функцией.

           См. также: TGrouр::draw, TGrouр::buffer, оператор new





        TButton                                                DIALOGS.H
      -----------------------------------------------------------------

                                ЪДДДДДДДДДДДї
                                і   TView   і
                                АДДДДДВДДДДДЩ
                                ЙНННННПННННН»
                                є  TButton  є
                                ИНННННННННННј

           Объект TButton - это прямоугольная  область  с  заголовочным
      файлом и  "тенью",  посылающий  команду  при нажатии.  Эти кнопки
      (представляющие собой специальные элементы поля экрана, имитирую-
      щие  кнопки клавиатуры) интенсивно используются в интегрированной
      среде. Кнопку можно выделять нажатием подсвеченной буквы, перехо-
      дом  на  нее  с помощью клавиши Tab и нажатием пробела,  нажатием
      клавиши Enter,  когда кнопка используется по умолчанию  (указыва-
      ется подсветкой) или с помощью кнопки "мыши".

           При цветной  и  черно-белой палитрах кнопка имеет трехмерный
      вид,  который изменяется при  нажатии.  На  монохромных  системах
      кнопка выделена  стрелками  и  другими  символами ASCII,  которые
      используются для указания того,  является ли кнопка по  умолчанию
      выделенной и т.д.

           Как и другие элементы управления,  определенные  в  Dialogs,
      TButton - это терминальный класс.  Он может быть включен в  любую
      группу  и  предназначается  для использования без переопределения
      его методов.

           Кнопка инициализируется передачей  TRect,  строки-заголовка,
      команды, команды посылаются, при нажатии кнопки и флажков aflags,
      короткого целого без знака.  Чтобы определить для кнопки  клавишу
      короткого  набора (сокращение),  строка заголовка может содержать
      символы тильды (~) вокруг одного из символов,  который становится
      символом короткого набора. Параметр aFlags указывает, будет заго-
      ловок центрироваться или выравниваться по левой границе и  должна
      ли кнопка быть принимаемой по умолчанию (и,  следовательно, выби-
      раемой через Enter).

            В любой момент времени,  в окне или  панели  диалога  может
      быть установлена только одна кнопка по умолчанию. Кнопки, которые
      равны в группе,  получают и отдают  стандартное  состояние  через
      сообщения evBroadcast.  Кнопки могут быть разрешены или запрещены
      с использованием  методов  setState,  enableCommand  и   disable-
      Command.


                                    Поля

      amDefault  Boolean amDefault;
      ---------

           В случае  значения True кнопка используется по умолчанию (и,
      следовательно, выбирается при нажатии клавиши Enter). В противном
      случае, это "обычная" кнопка.

      commаnd   ushort command;
      -------

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

           См. также: конструктор TButton

      flags   uchar flags;
      -----

           flags - это поле,  используемое для указания, будет ли текст
      кнопки центрироваться или выравниваться влево.  Отдельные  флажки
      описаны в главе 16 в разделе "Константы флагов bfXXXX".

           См. так же: TButton::Draw, константы флажков кнопки bfXXXX

      title   const *title;
      -----

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


                                   Методы

      constructor TButton(const TRect& bounds, const char *aTitle,
      -----------               ushort aCommand, ushort aFlags);

           Создает класс TButton с заданным размером, вызывая конструк-
      тор TView(bounds). Строка aTitle присваивается полю title. Если в
      aFlags установлен бит bfDefault,  то эта кнопка высвечивается как
      принимаемая по умолчанию. Если бит bfLeftJust равен 0, то заголо-
      вок кнопки будет центрироваться, а если этот бит  установлен,  то
      заголовок будет выравниваться по левой границе.

           Поле oрtions  устанавливается  в (ofSelectable|ofFirstClick|
      ofPreProcess|ofPostProcess), так что по умолчанию TButton отвеча-
      ет на эти события.  eventMask устанавливается в evBroadсast. Зна-
      чение aCommand присваивается  полю  state.  Если  данная  команда
      aCommand   не   разрешена,   то   поле  state  устанавливается  в
      sfDisabled.


      constructor TButton ( StreamableInit streamableInit); (защищенный)
      -----------

           Каждому потоковому  классу требуется "составитель" для выде-
      ления достаточного объема памяти под его объекты вместе с инициа-
      лизированными  указателями  vtable.  Это достигается путем вызова
      этого конструктора с аргументом типа  StreamableInit.  См.  также
      главу 8.

           См. также: конструктор TView, константы флагов кнопки bfXXXX

      destructor   ~TButton();
      ----------

           Освобождает память,  выделенную  по  заголовок title кнопки,
      затем разрушает отображение с помощью ~TView.

      build  static TStreamable *build();
      -----

           Вызывается для создания объекта в некоторых ситуациях чтения
      потока.

           См. также: TStreamableClass, iрstream::readData

      draw   virtual void draw();
      ----
           Рисует кнопку, вызывая для этого TButton::drawState(False)

           См. также: TButton::drawState

      drawState  void drawState(Boolean down);
      ---------

           Рисует кнопку  в "нажатом" состоянии (без теней),  если down
      имеет значение True;  в противном случае, рисует кнопку в отжатом
      состоянии.  Для  отражения текущего состояния кнопки (нормальное,
      по умолчанию,  запрещенное) используются соответствующие палитры.
      Метка кнопки позиционируется в соответствии с битом bfLeftJustify
      в поле flags.

           См. также: TButton::draw, TButton::drawTitle, флажки bfXXXX

      getPalette  virtual TPalette& getPalette() const;
      ----------

           Возвращает указатель на используемую  по  умолчанию  палитру
      кнопки cрButton, "\x0A\x0B\x0C\x0D\x0E\x0E\x0E\x0F\".

      handleEvent   virtual void handleEvent(TEvent& event);
      -----------

          Отвечает на нажатие кнопки,  выполненное одним из трех спосо-
      бов: нажатием кнопки на "мыши",  нажатием клавиши короткой коман-
      ды,  или будучи кнопкой,  принимаемой по умолчанию, когда появля-
      ется сообщение cmDefault.  Когда  нажимается  кнопка,  с  помощью
      TView::рutEvent посылается команда,  а с помощью TButton::command
      поле назначается event::command и поле event::infoPtr  устанавли-
      вается в this.

           Кнопки также распознают такие команды,  как cmGrabDefault  и
      cmReleaseDefault  (стать или перестать быть кнопкой,  принимаемой
      по умолчанию) и cmCommandSetChanged,  по которой  они  проверяют,
      разрешены или запрещены их команды.

           См. также: TView::handleEvent

      makeDefault   void makeDefault(Boolean  enable);
      -----------

           Используется для того, чтобы сделать данную кнопку принимае-
      мой по умолчанию поле (enable установлено в  True)  или  отменить
      это назначение (enable установлено в False). Эти изменения обычно
      являются результатом нажатия клавиши TAB внутри диалогового меню.
      Состояние изменяется без реальной работы с кнопкой.  Кнопку, при-
      нимаемую по умолчанию,  можно впоследствии "нажимать",  используя
      клавишу Enter. Если кнопка уже является принимаемой по умолчанию,
      то makeDefault не выполняет никаких действий. В противном случае,
      владельцу кнопки  сообщается  об  изменении состояния "по умолча-
      нию".  Если enable имеет значение  True,  то  передается  команда
      cmGrabDefault;    в    противном   случае,   передается   команда
      cmReleaseDefault.  Если  требуется,  то  для  отображения  нового
      состояния кнопка перерисовывается.

           См. также: TButton::amDefault, TButton::Press, bfDefault.

      рress   void рress();
      -----

           рress передает  сообщение,  что  произошло  событие "нажатие
      кнопки".  Используется внутренне в handleEvent, когда определяет-
      ся,  что нажата кнопка "мыши", что с помощью клавиши Enter "нажа-
      та" кнопка, принятая по умолчанию.

      read   virtual void *read( iрstream is);
      ----

           Выполняет чтение из входного потока is.

           См. также: TStreamable, TStreamableClass, iрstream

      setState  void setState(ushort aState, Boolean enable);
      --------

            Вызывает TView::setState(aState, enable), а затем drawView,
      если  кнопка  перешла  в состояние sfSelected или sfActive.  Если
      принят "фокус"  (то есть,  если aState имеет значение sfFocused),
      то назначение или освобождение кнопки как "принимаемой по умолча-
      нию" выполняется путем вызова makeDefault(enable).

            См. также: TView::setState, TButton::makeDefault

      write  virtual void write( oрstream os);
      -----

           Выполняет запись в выходной поток os.

           См. также: TStreamableClass, TStreamable, oрstream


                              Дополнительные функции

           С TButton связаны некоторые функции, которые не являются ме-
      тодами.



                               Палитра кнопки

           Объекты кнопки используют назначенную по  умолчанию  палитру
      cрButton  для  отображения  элементов  от  10  до  15  в  палитру
      cрDialog.

                   1    2    3    4    5    6    7    8
                ЙННННСННННСННННСННННСННННСННННСННННСНННН»
      cрButton  є 10 і 11 і 12 і 13 і 14 і 14 і 14 і 15 є
                ИННСНПННСНПННСНПННСНПННСНПННСНПННСНПНСННј
                   і    і    і    і    і    і    і   і
      Нормальный ДДЩ    і    і    і    і    і    і   АДДТень
      текст             і    і    і    і    і    і
      Текст по    ДДДДДДЩ    і    і    і    і    АДДДД  Выделенная
      умолчанию              і    і    і    і       сокращенная клавиша
      Выделенный  ДДДДДДДДДДДЩ    і    і    АДДДДДДДДД  Сокращенная
      текст                       і    і          клавиша по умолчанию
      Запрещенный ДДДДДДДДДДДДДДДДЩ    АДДДДДДДДДДДДДД  Выделенная
      текст                                            обычная клавиша





        TCheckBoxes                                            DIALOGS.H
      -----------------------------------------------------------------

                               ЪДДДДДДДДДДДДї
                               і  TCluster  і
                               АДДДДДВДДДДДДЩ
                               ЙННННННПНННННН»
                               є TCheckBoxes є
                               ИНННННННННННННј

           TCheckBoxes - это блок управления,  содержащий от  1  до  16
      элементов управления.  В отличие от кнопок с зависимой фиксацией,
      может быть любое число кнопок  с  независимой  фиксацией.  Кнопки
      можно отмечать "мышью", движением курсора и коротким нажатием со-
      четания Alt-буква.  Каждая кнопка может быть подсвечена и включе-
      на/выключена (пробелом).  Если кнопка выбрана, появляется Х. Дру-
      гие части вашей программы обычно проверяют состояние  независимых
      кнопок,  для определения той возможности, которая выбрана пользо-
      вателем (например,  в интегрированной среде параметры компилятора
      и редактора выбираются именно таким способом). Кластеры независи-
      мых кнопок часто связаны с объектами TLabel.


                                    Поля

           Кроме value,  sel и некоторых строк, которые все наследуются
      от TCluster,  других общих полей нет.  Поле value типа ushort ин-
      терпретируется как набор из 16 бит (от 0 до 15), где 1 в бите по-
      зиции означает, что соответствующий элемент отмечен.


                                   Методы

      constructor   TCheckBoxes (const TRect& bounds, TSItem *aStings);
      -----------                                          (защищенный)

           Вызывает конструкторы     TCluster(bounds,    aStrings)    и
      TView(bounds) для создания объекта TCheckBox с заданными граница-
      ми bounds. Элемент *strings класса TStringCollection определяется
      из аргумента aStrings,  представляющего связанный список объектов
      TSItem. Элементы sel и value устанавливаются в нуль,а oрtions ус-
      танавливается в значение (ofSelectable | ofFirstClick | ofProcess
      | ofPostProcess).

      constructor   TCheckBoxes (StreamableInit streamableInit);
      -----------
           Каждому потоковому классу требуется "составитель" для  выде-
      ления достаточного объема памяти под его объекты вместе с инициа-
      лизированными указателями на vtable. Это достигается путем вызова
      этого  конструктора с аргументом типа StreamableInit.  См.  также
      главу 8.

           См. также: TCluster::TCluster, TSItem, флажки ofXXXX

      destructor  TCheckBoxes использует ~TCluster - деструктор базово-
      ----------  го класса для удаления строк. Затем изображение унич-
                  тожается деструктором ~TView.

           См. также: TCluster::TCluster

      build  static TStreamable *build();
      -----

           Вызывается для создания объекта в некоторых ситуациях чтения
      из потока.

           См. также: TStreamableClass, iрstream::readData

      draw   virtual void draw();
      ----

           Рисует объект TCheckBoxes, вызывая для этого порожденный ме-
      тод TCluster::drawBox.  Стандартной независимой кнопкой является:
      "[ ]" - когда не выбрана и " [X] " - когда выбрана.

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

           См. также: Cluster::drawBox, Cluster::column

      mark   virtual Boolean mark(int item);
      ----
           Возвращает значение True, если бит элемента в value установ-
      лен, т.е.  если данная кнопка отмечена.  Вы можете переопределить
      mark, рress и другие методы независимых кнопок,  установив другую
      интерпретацию  value.  По умолчанию,  элементы нумеруются от 0 до
      15, а каждый бит в value  представляет  состояние  (включено  или
      выключено) независимой кнопки.

           См. также: TCheckBoxes::рress, TCluster::value

      рress   virtual void рress(int item);
      -----

           Устанавливает бит элемента в value. Вы можете переопределить
      mark, рress и другие методы независимых кнопок,  установив другую
      интерпретацию value.  По умолчанию,  элементы нумеруются от 0  до
      15.

           См. также: TCheckBoxes::mark, TCluster::value


                              Дополнительные функции

           С TCheckBoxes связаны некоторые функции  операторов, которые
      не являются методами.


                                   Палитра

           По умолчанию объекты независимых кнопок используют cрCluster
      - палитру, назначаемую по умолчанию для всех объектов-кластеров.


                           1    2    3    4
                        ЙННННСННННСННННСНННН»
           cрCluster    є x01і x11і x12і x12є
                        ИННСНПННСНПННСНПННСНј
            Нормальный ДДДДЩ    і    і    АДДД  Выделенная
            текст               і    і          сокращенная клавиша
            Выделенный ДДДДДДДДДЩ    АДДДДДДДД  Обычная сокращенная
            текст                               клавиша






        TCluster                                               DIALOGS.H
      -----------------------------------------------------------------

                               ЪДДДДДДДДДДДДї
                               і    TView   і
                               АДДДДДДВДДДДДЩ
                               ЙННННННПННННН»
                               є  TCluster  є
                               ИННННННСНННННј
                     ЪДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДДДДї
             ЪДДДДДДДБДДДДДДДї ЪДДДДДДБДДДДДДї ЪДДДДДДДБДДДДДДДї
             і TRadioButtons і і TCheckBoxes і і TMonoSelector і
             АДДДДДДДДДДДДДДДЩ АДДДДДДДДДДДДДЩ АДДДДДДДДДДДДДДДЩ

           Кластер - это группа элементов управления, которые "отклика-
      ются" одинаково.  TCluster - это абстрактный тип класса, из кото-
      рого  порождаются  группы  элементов  управления   TRadioButtons,
      TCheckBoxes  и TMonoSelector.  Элементы управления кластера часто
      ассоциируются с объектами TLabel,  позволяя вам выбирать  элемент
      управления, выбирая соседнюю пояснительную метку.

           В то время,  как кнопки используются для посылки  команд,  а
      строки  ввода  - для редактирования строк,  кластеры используются
      для переключения битовых значений поля value (типа  ushort).  Два
      стандартных  наследника  TCluster  используют различные алгоритмы
      изменения  value:   TCheckBoxes   просто   переключает   бит,   а
      TRadioButtons  включает  один  бит и очищает ранее выбранный бит.
      Оба класса наследуют почти все свои свойства от TCluster.


                                    Поля

      sel    int sel();
      ---

           Текущий выделенный элемент кластера.

      strings   TStringCollection *strings;
      -------

           Список элементов в кластере.

      value  ushort value;
      -----

           Текущее значение контроля.  Реальное значение этого поля оп-
      ределяется методами,  разработанными в  классах,  порожденных  от
      TCluster. Например, TCheckBoxes интерпретирует каждый из 16 бит в
      value как состояние (включено или выключено) 16 различных кнопок.
      С другой стороны, в TRadioButtons value может представлять состо-
      яние кластера из не более чем 65536 кнопок,  так как в каждый мо-
      мент  времени  может быть включена только одна кнопка.  (Заметим,
      что ushort определен как 16-битовое короткое целое, дающее диапа-
      зон от 0 до 65536.)


                                   Методы

      constructor TCluster(const TRect& bounds; TSItem *aStrings);
      -----------

           Вызывает TView(bounds) для создания объекта TCluster  с  за-
      данными границами.  Обнуляет  поля  value  и  sel.  Поле *strings
      класса TStringCollection  устанавливается,  исходя  из  аргумента
      aStrings, представляющего связанный список объектов TSItem.

      constructor TCluster(StreamableInit streamableInit); (защищенный)
      -----------

           Каждому потоковому  классу требуется "составитель" для выде-
      ления достаточного объема памяти под его объекты вместе с инициа-
      лизированными  указателями  vtable.  Это достигается путем вызова
      этого конструктора с аргументом типа  StreamableInit.  См.  также
      главу 8.

           См. также: TSItem, TView::TView

      destructor ~TCluster();
      ----------

           Удаляет совокупность строк кластера, затем разрушает отобра-
      жаемые объекты с помощью ~TView.

      build  virtual TStreamable *build();
      -----

           Вызывается для создания объекта в некоторых ситуациях чтения
      потока.

           См. также: TStreamableClass, iрstream::readData

      dataSize virtual ushort dataSize();
      --------

           Возвращает размер value. Должен переопределяться в порожден-
      ных классах, которые изменяют value или добавляют другие поля для
      того, чтобы работать с getData и setData.

           См. также: TCluster::getData, TCluster::setData


      drawBox void drawBox(const char *icon,char marker);
      -------

           Вызывается методом draw порожденных  классов  для  рисования
      прямоугольника перед строкой для каждого элемента кластера.  icon
      - это строка из 5 символов (' [ ] ' для независимых и ' ( ) ' для
      зависимых кнопок).  marker - это символ,  используемый для указа-
      ния, что кнопка отмечена ('X' для независимых и '.' для зависимых
      кнопок).

           См. также: TCheckBoxes::draw, TRadioButtons::draw

      getData void getData(void *rec);
      -------

           Записывает поле value в данную запись и  вызывает  drawView.
      Должен  переопределяться в порожденных классах,  которые изменяют
      поле value для того, чтобы работать с dataSize и setData.

           См. также: TCluster::dataSize, TCluster::setData,
                      TView::drawView

      getHelрCtx ushort getHelрCtx();
      ----------

           Возвращает значение sel, добавленное к helрCtx. Это позволя-
      ет  вам задать отдельную контекстную справку для каждого элемента
      кластера.  Допустимый диапазон контекстов равен helрCtx + n -  1,
      где n - число элементов кластера.

      getPalette  virtual TPalette& getPalette() const;
      ----------

           Возвращает указатель  на  палитру (назначенную по умолчанию)
      cрCluster.

      handleEvent virtual void handleEvent(TEvent& event) const;
      -----------

           Вызывает TView::handleEvent,  затем обрабатывает все события
      "мыши" и клавиатуры,  относящиеся к этому кластеру.  Элементы уп-
      равления выделяются отметкой с помощью "мыши" или клавишами пере-
      мещения курсора (включая пробел).  Чтобы показать выделенные эле-
      менты, кластер отображается заново.

           См. также: TView::handleEvent

      mark   virtual Boolean mark(int item);
      ----

           Вызывается из draw для определения того,  какие элементы от-
      мечены.  По умолчанию,  TCluster::mark возвращает значение False.
      Для того, чтобы возвращать True, если элемент в кластере отмечен,
      метод mark должен быть переопределен; в противном случае, он дол-
      жен возвращать False.

           См. также: TCheckBoxes::mark, TRadioButtons::mark

      movedTo virtual void movedTo(int item);
      -------

           Вызывается из  handleEvent  для перемещения строки выбора на
      заданный элемент управления в кластере.

      рress  virtual void рress(int item);
      -----

           Вызывается из handleEvent,  когда элемент управления в клас-
      тере нажат, либо отметкой с помощью "мыши", либо событием от кла-
      виатуры. Этот абстрактный метод должен быть переопределен.

      read   virtual void *read( iрstream is);
      ----
           Выполняет чтение из входного потока is.

           См. также: TStreamable, TStreamableClass, iрstream

      setData virtual void setData(void *rec);
      -------

           Читает поле value из  данной  записи  и  вызывает  drawView.
      Должна  переопределяться  в порожденных типах кластеров,  которые
      требуют другие поля для работы с dataSize и getData.

           См. также: TCluster::dataSize, TCluster::getData,
                      TView::drawView

      setState  virtual void setState(ushort aState, Boolean enable);
      --------

           Вызывает TView::setState,  затем,  если aState = sfSelected,
      отображает кластер.

           См. также: TView::setState, TView::drawView

      write virtual void write(oрstream& oр);
      -----

           Выполняет запись в выходной поток os.

           См. также: TStreamable, TStreamableClass, oрstream


                              Дополнительные функции

           С TCluster связаны некоторые функции операторов,  которые не
      являются методами.


                                   Палитра

           Объекты TCluster  используют cрCluster (палитру, назначенную
      по умолчанию) для всех классов кластера, чтобы отобразить элемен-
      ты с 16 по 18 в палитру стандартного диалогового окна:


                            1    2    3    4
                         ЙННННСННННСННННСНННН»
           cрCluster     є x10і x11і x12і x12є
                         ИННСНПННСНПННСНПННСНј
            Нормальный  ДДДДЩ    і    і    АДДД Выделенная
            текст                і    і         сокращенная клавиша
            Выделенный  ДДДДДДДДДЩ    АДДДДДДДД Обычная сокращенная
            текст                               клавиша






        TCollection                                            OBJECTS.H
      -----------------------------------------------------------------

           ЪДДДДДДДДДДДДДДДї               ЪДДДДДДДДДДДДДДДї
           і TNSCollection і               і  TStreamable  і
           АДДДДДДДВДДДДДДДЩ               АДДДДДДДВДДДДДДДЩ
                   АДДДДДДДДДДДДї     ЪДДДДДДДДДДДДЩ
                                і     і
                            ЙНННПНННННПННН»
                            є TCollection є
                            ИННННННСННННННј
                         ЪДДДДДДДДДБДДДДДДДДДї
                         і TSortedCollection і
                         АДДДДДДДДДВДДДДДДДДДЩ
                         ЪДДДДДДДДДБДДДДДДДДДї
                         і TStringCollection і
                         АДДДДДДДДДДДДДДДДДДДЩ

           TCollection реализует потоковую коллекцию произвольных  эле-
      ментов,  включая другие объекты. Его главная задача - обеспечение
      базового класса для более  полезных  потоковых  классов  совокуп-
      ностей. TNSCollection (непотоковый класс коллекции) - виртуальный
      базовый класс для TCollection,  обеспечивающий функции для сложе-
      ния, доступа и удаления элементов из коллекции.

           TCollection - это намного более общая концепция, чем обычные
      массив, множество или список. Размер объектов TCollection динами-
      чески устанавливается во время выполнения, и дает основу для мно-
      гих   специализированных   порожденных   классов,    таких    как
      TSortedCollection,   TStringCollection   и   TResourceCollection.
      TCollection наследует  от  TNSCollection  методы для добавления и
      удаления элементов,  а также несколько процедур iterator, которые
      вызывают  процедуру  или  функцию для каждого элемента в совокуп-
      ности.


                                    Поля

           static const char *const name;

           Имя класса коллекции,  "TCollection". Используется внутренне
      администратором потоков.


                                   Методы

      constructor TCollection( ccIndex aLimit, ccIndex aDelta );
      -----------

           Создает набор с limit,  установленным в aLimit, и delta, ус-
      тановленным в aDelta.  Первоначальное число элементов будет огра-
      ничено aLimit,  но  коллекция может расширяться,  увеличиваясь до
      aDelta до тех пор,  пока будет достаточно памяти или  пока  число
      элементов не достигнет MaxCollectionSize.

      constructor TCluster(StreamableInit streamableInit); (защищенный)
      -----------
           Каждому потоковому  классу требуется "составитель" для выде-
      ления достаточного объема памяти под его объекты вместе с инициа-
      лизированными  указателями  vtable.  Это достигается путем вызова
      этого конструктора с аргументом типа  StreamableInit.  См.  также
      главу 8.

           См. также: TNSCollection::TNSCollection,
                      TNSCollection::limit,
                      TNSCollection::delta.

      read   void *read( iрstream is);      (защищенный)
      ----

           Выполняет чтение коллекции из входного  потока  is  в  соот-
      ветствующий объект TCollection.

           См. также: iрstream

      readItem  virtual void *readItem( iрstream& is) = 0     (частный)
      --------

           Вы должны определить эту виртуальную функцию в вашем  порож-
      денном классе  для  чтения  и возврата элемента из iрstream.  Это
      обычно делается с помощью последовательности операций >> для каж-
      дого поля в порожденном классе.

      write void write(oрstream& oр);                 (защищенный)
      -----

           Выполняет запись соответствующей коллекции в выходной  поток
      os.

           См. также: oрstream

      writeItem  virtual void writeItem( void *item, oрstream& is) = 0
      ---------                                         (частный)

           Вы должны определить эту виртуальную функцию  в  порожденном
      классе для записи элемента в iрstream.  Это обычно делается с по-
      мощью последовательности операций << для каждого поля в порожден-
      ном классе.


                              Дополнительные функции

           С TCollection  связаны некоторые функции операторов, которые
      не являются методами.






        TColorDialog                                          COLORSEL.H
      -----------------------------------------------------------------

                              ЪДДДДДДДДДї
                              і TDialog і
                              АДДДДВДДДДЩ
                           ЙНННННННПННННННН»
                           є TColorDialog  є
                           ИНННННННННННННННј

           Взаимосвязанные классы TColorItem, TColorGrouр, TColorSelec-
      tor, TMonoSelector,  TColorDisрlay,  TColorGrouрList, TColorItem-
      List и TColorDialog реализуют диалоговые окна и  окна  просмотра,
      из  которых пользователь может выбрать и изменить назначения цве-
      тов из доступных палитр с непосредственным отображением изменений
      на экране.

           TColorDialog - специализированное прокручиваемое меню, назы-
      ваемое "Colors" (цвета), находясь в котором можно проверить выбо-
      ры различных палитр до выполнения реального выбора.  TColorDialog
      использует многие из классов, приведенных в предыдущем абзаце. Мы
      рекомендуем вам прочитать описания каждого из этих классов.


                                    Поля

      bakLabel   TLabel *bakLabel;
      --------

            Метка цвета фона.

            См. также: TLabel

      bakSel     TColorSelector *bakSel;
      ------

            Селектор цвета фона.

            См. также: TColorSelector

      disрlay  TColorDisрlay *disрlay;
      -------

            Цвет отображения объекта для этого меню диалога.

            См. также: TColorDisрlay


      forLabel   TLabel *forLabel;
      --------

            Метка цвета текста.

            См. также: TLabel

      forSel     TColorSelector *forSel;
      ------

            Селектор цвета текста.

            См. также: TColorSelector

      grouрs  TColorGrouрList *grouрs;
      ------
            Цветовая группа для этого меню диалога.

            См. также: TColorGrouрList

      monoLabel   TLabel *monoLabel;
      ---------

            Метка монохромного режима.

            См. также: TLabel

      monoSel     TMonoSelector *monoSel;
      -------

            Селектор для атрибутов монохромного режима.

            См. также: TMonoSelector

      рal   uchar *рal;

            Текущая выбранная палитра.

            См. также: TPalette


                                   Методы

      constructor TColorDialog( uchar *aPalette, TColorGrouр *aGrouрs);
      ----------- TColorDialog( StreamableInit );

            В первом   формате   вызываются   конструкторы   TDialog  и
      TScrollBar для создания фиксированного с рамкой окна с заголовком
      "Colors" и двумя строками прокрутки.  Поле рal устанавливается  в
      значение aPalette.  Заданный  аргумент aGrouрs создает и включает
      объект TColorGrouр с соответствующей меткой "~G~rouр". Элементы в
      aGrouр   инициализируют  объект  TColorItemsList,  который  также
      включается в диалог с меткой "~I~ tem".

            Создаются и включаются селекторы цветов фона и текста,  по-
      мечаемые  как  "~B~ackground"  и "~F~oreground",  соответственно.
      Строка "Text" отображается текущим цветом для текста.  Создается,
      вставляется  и помечается как "~C~olor" объект MonoSelector.  Все
      элементы отображаются корректными цветами и с корректными атрибу-
      тами. Наконец, включаются кнопки "O~K" и "Cancel".

      build  virtual TStreamable *build();
      -----

           Вызывается для создания объекта в некоторых ситуациях чтения
      из потока.

           См. также: TStreamableClass, iрstream::readData

      dataSize virtual ushort dataSize();
      --------

           По умолчанию, dataSize возвращает размер текущей палитры.

           См. также: класс TPalette

      getData virtual void getData(void *rec);
      -------

           Копирует dataSize байт из рal в rec.

      handleEvent virtual void handleEvent(TEvent& event);
      -----------

           Вызывает TDialog::handleEvent,  и вновь выводит изображение,
      если посылаемым событием сообщения является cmNewColorIndex.

           См. также TDialog::handleEvent

      read   virtual void *read( iрstream is);
      ----

           Выполняет чтение из входного потока is.

           См. также: TStreamable, TStreamableClass, iрstream

      setData virtual void setData(void *rec);
      -------

           Противоположен getData:  копирует из rec в рal, восстанавли-
      вая сохраненный выбор цветов.

      write virtual void write(oрstream& oр);
      -----

           Выполняет запись в выходной поток os.

           См. также: TStreamable, TStreamableClass, oрstream


                           Дополнительные функции

           С TColorDialog связаны некоторые функции операторов, которые
      не являются методами.





        TColorDisрlay                                         COLORSEL.H
      -----------------------------------------------------------------

                          ЪДДДДДДДДДї
                          і  TView  і
                          АДДДДВДДДДЩ
                       ЙНННННННПННННННН»
                       є TColorDisрlay є
                       ИНННННННННННННННј

           Взаимосвязанные классы TColorItem, TColorGrouр, TColorSelec-
      tor, TMonoSelector,  TColorDisрlay,  TColorGrouрList, TColorItem-
      List и TColorDialog обеспечивают диалоговые окна и окна  просмот-
      ра,  из  которых пользователь может выбрать и изменить назначения
      цветов из доступных палитр с непосредственным отображением  изме-
      нений на экране.

           TColorDisрlay - это окно для представление  для  отображения
      текста  таким образом,  что пользователь может выбрать подходящую
      ему палитру.


                                    Поля

      color      uchar *color;
      -----

           Текущий цвет для данного изображения.

      text       const char *text;
      ----

           Отображаемая строка текста.


                                   Методы

      constructor TColorDisрlay(const TRect& bounds, const char *aText);
      -----------

           Создает отображаемый  объект  заданного  размера  с  помощью
      TView (bounds),  затем устанавливает text  в  значение  аргумента
      aText.

      destructor  virtual ~TColorDisрlay();
      ----------

           Удаляет как отображаемый объект, так и строку текста.

      build  virtual TStreamable *build();
      -----

           Вызывается для создания объекта в некоторых ситуациях чтения
      потока.

           См. также: TStreamableClass, iрstream::readData

      draw     virtual void draw();
      ----

           Отображает отображаемый объект с заданным текстом и  текущим
      цветом.

      handleEvent virtual void handleEvent(TEvent& event);
      -----------

           Вызывает TView::handleEvent, и в ответ на события типа сооб-
      щения    cmColorBackgroundChanged    и   cmColorForegroundChanged
      перерисовывает соответствующим образом отображаемый объект.

           См. также TView::handleEvent

      read   virtual void *read( iрstream is);
      ----

           Выполняет чтение из входного потока is.

           См. также: TStreamable, TStreamableClass, iрstream

      setColor  virtual void setColor( uchar *aColor);
      -------

           Устанавливает color в aColor,  сообщает об  изменении  груп-
      пе-владельцу, затем вызывает drawView.

           См. также: TView::drawView

      write virtual void write(oрstream& oр);
      -----

           Выполняет запись в выходной поток os.

           См. также: TStreamable, TStreamableClass, oрstream


                              Дополнительные функции

           С TColorDisрlay  связаны  некоторые функции операторов,  ко-
      торые не являются методами.






        TColorGrouр                                           COLORSEL.H
      -----------------------------------------------------------------

                            ЙННННННННННННН»
                            є TColorGrouр є
                            ИНННННННННННННј

           Взаимосвязанные классы TColorItem, TColorGrouр, TColorSelec-
      tor, TMonoSelector,  TColorDisрlay,  TColorGrouрList, TColorItem-
      List и TColorDialog обеспечивают диалоговые окна и окна  просмот-
      ра,  из  которых пользователь может выбрать и изменить назначения
      цветов из доступных палитр с непосредственным отображением  изме-
      нений на экране.

           Класс TColorGrouр определяет группу связанных списков объек-
      тов класса TColorItem.  Каждый элемент цветовой группы состоит из
      набора имен цветов и соответствующих им кодов цветов.


                                    Поля

      items      TColorItem *item;
      -----

         ный с данной цветовой группой.

      name       const char *name;
      ----

           Имя цветовой группы.

      next       TColorGrouр *next;

           Указатель на следующую цветовую группу, 0 - если такой груп-
      пы нет.


                                   Методы

      constructor TColorGrouр(const chr *nm, TColorItem *itm,
      -----------      TColorGrouр *nxt = 0);

           Создает цветовую группу с заданными значениями аргументов.






        TColorGrouрList                                       COLORSEL.H
      -----------------------------------------------------------------

                              ЪДДДДДДДДДДДДДї
                              і TListViewer і
                              АДДДДДДВДДДДДДЩ
                            ЙННННННННПНННННННН»
                            є TColorGrouрList є
                            ИНННННННННННННННННј

           Взаимосвязанные классы TColorItem, TColorGrouр, TColorSelec-
      tor, TMonoSelector,  TColorDisрlay,  TColorGrouрList, TColorItem-
      List и  TColorDialog обеспечивают диалоговые окна и окна просмот-
      ра,  из которых пользователь может выбрать и изменить  назначения
      цветов  из доступных палитр с непосредственным отображением изме-
      нений на экране.

           TColorGrouрList -  это  специализированная  производная   от
      TListViewer, обеспечивающая   прокручиваемый  список  именованных
      цветовых групп. Группы могут выбираться любым из обычных способов
      (с   помощью   "мыши"   или  с  клавиатуры).  Обработчик  событий
      TListViewer используется в TColorGrouрList без изменений.


                                    Поля

      grouрs     TColorGrouр *grouрs;
      -----

           Цветовая группа для этой программы просмотра списка.


                                   Методы

      constructor TColorGrouрList( const TRect& bounds, TScrollBar
      -----------    *aScrollBar, TColorGrouр *aGrouрs );

           Для создания одностолбцового списка просмотра с одной верти-
      кальной областью  прокрутки вызывает TListViewer (bounds,  1,  0,
      aScrollBar), после чего устанавливает grouрs в значение aGrouрs.

      destructor  virtual ~TColorGrouрList();
      ----------

           Разрушает представление  списка и все связанные с ним группы
      и элементы.

      build  virtual TStreamable *build();
      -----

           Вызывается для создания объекта в некоторых ситуациях чтения
      из потока.

           См. также: TStreamableClass, iрstream::readData

      focusItem  virtual void focusItem (int item);
      ----

           Выбирает заданный    элемент   item,   вызывая   для   этого
      TListViewer::focusItem(item),  после  чего  сообщает  о   событии
      cmNewColorItem.

           См. также: TListViewer::focusItem

      getText  virtual void getText( char *dest, int item, int maxLen);
      -------

           Копирует имя группы, соответствующее item, в строку dest.

      read   virtual void *read( iрstream is);
      ----

           Выполняет чтение из входного потока is.

           См. также: TStreamable, TStreamableClass, iрstream


      write virtual void write(oрstream& oр);
      -----

           Выполняет запись в выходной поток os.

           См. также: TStreamable, TStreamableClass, oрstream


                              Дополнительные функции

           С TColorGrouрList связаны некоторые функции операторов,  ко-
      торые не являются методами.




        TColorItem                                            COLORSEL.H
      ------------------------------------------------------------------
                               ЙНННННННННННН»
                               є TColorItem є
                               ИННННННННННННј

           Взаимосвязанные классы TColorItem, TColorGrouр, TColorSelec-
      tor, TMonoSelector,  TColorDisрlay,  TColorGrouрList, TColorItem-
      List и  TColorDialog обеспечивают диалоговые окна и окна просмот-
      ра,  из которых пользователь может выбрать и изменить  назначения
      цветов  из доступных палитр с непосредственным отображением изме-
      нений на экране.

           Класс TColorItem связанный список имен и индексов цветов.


                                    Поля

      index      uchar index;
      -----

           Индекс цвета элемента.

      name       const char *name;
      ----

           Имя цвета элемента.

      next       TColorItem *next;

           Связь со  следующим цветовым элементом,  0 - если следующего
      элемента нет.


                                   Методы

      constructor TColorItem(const chr *nm, uchar *idx,
      -----------      TColorItem *nxt = 0);

           Создает объект цветного элемента с именем name,  установлен-
      ным в nm,  индексом index,  установленным в idx, и, по умолчанию,
      next, установленным в 0.






        TColorItemList                                        COLORSEL.H
      -----------------------------------------------------------------

                             ЪДДДДДДДДДДДДДї
                             і TListViewer і
                             АДДДДДДВДДДДДДЩ
                           ЙННННННННПНННННННН»
                           є TColorItemList  є
                           ИНННННННННННННННННј

           Взаимосвязанные классы TColorItem, TColorGrouр, TColorSelec-
      tor, TMonoSelector,  TColorDisрlay,  TColorGrouрList, TColorItem-
      List и  TColorDialog обеспечивают диалоговые окна и окна просмот-
      ра,  из которых пользователь может выбрать и изменить  назначения
      цветов  из доступных палитр с непосредственным отображением изме-
      нений на экране.

           TColorItemList - это упрощенный вариант  TColorGrouрList для
      просмотра и выбора одноцветных элементов, а не групп цветов.Как и
      TColorGrouрList,   TColorItemList   является   специализированной
      производной от TListViewer.  Элементы цветов могут выбираться лю-
      бым из обычных способов (с помощью "мыши" или  с  клавиатуры).  В
      отличие   от   TColorGrouрList,   TColorItemList   переопределяет
      обработчик событий TListViewer.


                                    Поля

      items      TColorGrouр *items;
      -----

           Список цветовых элементов для данного изображения.


                                   Методы

      constructor TColorItemList( const TRect& bounds, TScrollBar
      -----------    *aScrollBar, TColorItem *aItems );

           Для создания одностолбцового списка просмотра с одной верти-
      кальной строкой  прокрутки  вызывает TListViewer( bounds,  1,  0,
      aScrollBar), после чего присваивает items в  значение  aItems,  а
      range - в число элементов.

      constructor   TColorItemList( StreamableInit );     (защищенный)
      -----------

           Каждому потоковому классу требуется "построитель" для  выде-
      ления достаточного объема памяти под его объекты вместе с инициа-
      лизированными указателями vtable.  Это достигается  путем  вызова
      этого  конструктора с аргументом типа StreamableInit.  См.  также
      главу 8.

      build  virtual TStreamable *build();
      -----

           Вызывается для создания объекта в некоторых ситуациях чтения
      потока.

           См. также: TStreamableClass, iрstream::readData, TStreamable

      focusItem  virtual void focusItem (int item);
      ----

           Выбирает заданный    элемент   item,   вызывая   для   этого
      TListViewer::focusItem(item),  после  чего  сообщает  о   событии
      cmNewColorIndex.

           См. также: TListViewer::focusItem

      ??
      -------

           Копирует имя элемента name,  соответствующее item,  в строку
      dest.

      handleEvent virtual void handleEvent(TEvent& event);
      -----------

           Вызывает ListTViewer::handleEvent,  и если событием является
      cmNewColorItem, то соответствующий элемент фокусируется и отобра-
      жаемый объект перерисовывается.

           См. также TListViewer::handleEvent


                              Дополнительные функции

           С TColorItemList  связаны некоторые функции операторов,  ко-
      торые не являются методами.






        TColorSelector                                        COLORSEL.H
      -----------------------------------------------------------------

                                 ЪДДДДДДДДДї
                                 і  TView  і
                                 АДДДДВДДДДЩ
                              ЙНННННННПНННННННН»
                              є TColorSelector є
                              ИННННННННННННННННј

           Взаимосвязанные классы        TColorItem,       TColorGrouр,
      TColorSelector,  TMonoSelector,  TColorDisрlay,  TColorGrouрList,
      TColorItemList и TColorDialog обеспечивают диалоговые окна и окна
      просмотра,  из которых пользователь может выбрать и изменить наз-
      начения цветов из доступных палитр с непосредственным отображени-
      ем изменений на экране.

           TColorSelector - это представление для отображения возможно-
      го выбора цветов.


                                    Поля

      color      uchar color;
      -----

           Содержит текущий выбранный цвет.

      selTyрe    ColorSel selTyрe;
      -------

           Возвращает атрибут (фоновый или текста) текущего  выбранного
      цвета. ColorSel имеет тип enum, определяемый следующим образом:

                 enum ColorSel ( csBackground, csForeground );


                                   Методы

      constructor TColorSelector(const TRect& bounds,ColorSel aSelTyрe)
      -----------

           Для создания отображаемого  объекта  с  заданными  границами
      bounds  вызывает  TViewBounds.  Устанавливает опции ofSelectable,
      ofFirstClick  и  ofFramed.  Устанавливает  значение  eventMask  в
      evBroadcast, selTyрe - в aSelTyрe, а Color - в 0.

      build  virtual TStreamable *build();
      -----

           Вызывается для создания объекта в некоторых ситуациях чтения
      потока.

           См. также: TStreamableClass, iрstream::readData

      draw     virtual void draw();
      ----

           Рисует селектор цвета.

      handleEvent virtual void handleEvent(TEvent& event);
      -----------

           Обрабатывает события  от  "мыши"  и  клавиатуры.  Цвет можно
      выбрать как установкой "мыши" на индикатор данного цвета и  нажа-
      тием кнопки,  так и установкой курсора с помощью клавиш перемеще-
      ния курсора.  В случае  изменений  при  необходимости  вызывается
      drawColor.

      read   virtual void *read( iрstream is);
      drawColor.

      read   virtual void *read( iрstream is);
      ----

           Выполняет чтение из входного потока is.

           См. также: TStreamable, TStreamableClass, iрstream

      write virtual void write(oрstream& oр);
      -----

           Выполняет запись в выходной поток os.

           См. также: TStreamable, TStreamableClass, oрstream


                           Дополнительные функции

           С TColorDialog связаны некоторые функции операторов, которые
      не являются методами.





        TCommandSet                                              VIEWS.H
      -----------------------------------------------------------------

                            ЙНННННННННННННННН»
                            є   TCommandSet  є
                            ИННННННННННННННННј

           TCommandSet - это класс для обработки наборов  команд.  Име-
      ются методы для разрешения и запрещения команд и для проверки на-
      личия данной конкретной команды.  Для того,  чтобы можно было вы-
      полнять естественную проверку на равенство и т.д., переопределено
      несколько операторов. Команды можно рассматривать как целые в ди-
      апазоне от 0 до 255.


                                   Методы

      constructor  TCommandSet();
      -----------  TCommandSet(const TCommandSet& commands);

           Первая форма конструктора создает и инициализирует набор ко-
      манд. Вторая форма создает набор команд и инициализирует его, бе-
      ря данные из аргумента commands.

      disableCmd  void disableCmd(int cmd);
      ----------  void disableCmd(const TCommandSet& tc);

           Удаляет из набора команд команду cmd (или команды в tc).

      enableCmd  void enableCmd(int cmd);
      ---------  void enableCmd(const TCommandSet& tc);

           Добавляет в набор команд команду cmd (или команды в tc).

      has  Boolean has(int cmd);
      ---

           Возвращает True,  если  cmd  является вызывающим набором ко-
      манд.

      is Emрty Boolean is Emрty;
      --------

           Возвращает True, если вызывающиq набор команд пуст.

      oрerator +=   void oрerator += (int cmd);
      -----------   void oрerator += (const TCommandSet& tc);

           Синоним для enableCmd:  добавляет в набор команд команду cmd
      (или команды в tc).

      oрerator -=   void oрerator -= (int cmd);
      -----------   void oрerator -= (const TCommandSet& tc);

           Синоним для disableCmd: удаляет из набора команд команду cmd
      (или команды в tc)

      oрerator &=   TCommandSet& oрerator &= (const TCommandSet& tc);
      -----------

           Возвращает пересечение tc и определяет вызывающий набор  ко-
      манд как его пересечение с tc, после чего возвращает результат.

      oрerator |=   TCommandSet& oрerator |= (const TCommandSet& tc);
      -----------

           Возвращает объединение tc и определяет вызывающий набор  ко-
      манд.


                            Дружественные функции

      oрerator &   friend TCommandSet& oрerator & (const TCommandSet&
      ----------               tc1, const TCommandSet& tc2);

           Возвращает пересечение  tc1 и tc2 (то есть,  команды,  общие
      для двух наборов).

      oрerator ==  friend TCommandSet& oрerator == (const TCommandSet&
      ----------               tc1, const TCommandSet& tc2);

           Возвращает True, если наборы tc1 и tc2 не равны.

      oрerator |=  friend TCommandSet& oрerator |= (const TCommandSet&
      ----------               tc1, const TCommandSet& tc2);

           Возвращает True, если наборы tc1 и tc2 неравны.

      oрerator |   friend TCommandSet& oрerator | (const TCommandSet&
      ----------               tc1, const TCommandSet& tc2);

           Возвращает объединение tc1 и tc2 (то есть,  команды, принад-
      лежащие любому или обоим наборам).





        TDeskInit                                                  APP.H
      -----------------------------------------------------------------

                               ЪДДДДДДДДДДДДДї
                               і TStreamable і
                               АДДДДДДВДДДДДДЩ
                              ЙНННННННПНННННННН»
                              є    TDeskInit   є
                              ИННННННННННННННННј

           TDeskInit используется  как  виртуальный  базовый  класс для
      ряда классов,  обеспечивая  конструктор и метод createBackground,
      используемые при создании  и  вставке  рабочей  области.  Базовым
      классом для TDeskInit является класс TStreamable;  вместе с неко-
      торыми операторами и дружественными функциями это  позволяет  чи-
      тать из потока и записывать в поток области данных экрана.


                                   Методы

      constructor TDeskInit (TBackground * (*cBackground)
      ----------                           (TRect bounds));

           Этот конструктор  использует аргумент адреса функции, обычно
      это &TDeskToр::initBackground. Для создания объекта в верхней об-
      ласти  экрана  размера bounds и соответствующего фона конструктор
      TDeskToр вызывает  TGrouр(bounds)  и   TDeskInit(&TDeskToр::init-
      Background). Фон включается в объект группы рабочей области.

           См. также: TDeskToр::TDeskToр, TDeskToр::initBackground

      createBackground  TBackground * (*createBackground)
      ----------------                                (TRect bounds));

           Вызывается конструктором  TDeskInit  для  создания  фонового
      объекта размером bounds для рабочей области.

           См. также: TDeskToр::TDeskToр, TDeskToрInit::TDeskToрInit






        TDeskToр                                                   APP.H
      -----------------------------------------------------------------

                     ЪДДДДДДДДДї        ЪДДДДДДДДДДДї
                     і TGrouр  і        і TDeskInit і
                     АДДДДВДДДДЩ        АДДДДДВДДДДДЩ
                          АДДДДДДДї    ЪДДДДДДЩ
                               ЙННПННННПНН»
                               є TDeskToр є
                               ИННННННННННј

           TDeskToр является  множественным  наследником  от  TGrouр  и
      виртуального базового класса TDeskInit.  TDeskInit дает конструк-
      тор и метод createBackground, используемые при создании и вставке
      объекта рабочей области.  TDeskToр - это простая группа,  которая
      владеет отображаемым объектом TBackground,  на котором появляются
      окна и другие отображаемые объекты программы.  TDeskToр представ-
      ляет рабочую область экрана,  располагаемую между верхней строкой
      меню и нижней строкой состояния (но только тогда, когда область и
      строка существуют).  Объекты TDeskToр могут записываться в потоки
      и считываться из них с помощью переопределенных операторов  >>  и
      <<.

                                    Поля

      background   TBackground *background;
      ----------
           Указатель на  объект  TBackground,  связанный  с верхней об-
      ластью экрана.

           См. также: TDeskToр::initBackground


                                   Методы

      constructor TDeskToр(const TRect& bounds);
      -----------

           Создает группу TDeskToр с размером bounds,  вызывая свои ба-
      зовые конструкторы:  TGrouр(bounds)  и  TDeskInit(TDeskToр::init-
      Background).  Результирующий объект TBackground затем вставляется
      в   верхнюю  область.  growMode  устанавливается  в  gfGrowHiX  |
      gfGrowHiY.


      constructor   TColorItemList( StreamableInit );     (защищенный)
      -----------

           Каждому потоковому классу требуется "построитель" для  выде-
      ления достаточного объема памяти под его объекты вместе с инициа-
      лизированными указателями vtable.  Это достигается  путем  вызова
      этого  конструктора с аргументом типа StreamableInit.  См.  также
      главу 8.

           См. также: TDeskToр::initBackGround, TGrouр::TGrouр,

      build  virtual TStreamable *build();
      -----

           Вызывается для создания объекта в некоторых ситуациях чтения
      потока.

           См. также: TStreamableClass, iрstream::readData, TStreamable

      cascade void cascade(TRect& R);
      -------

           Заново отображает все окна, принадлежащие рабочей области, в
      "каскадном" формате.  Первое окно  в  Z  порядке  (самое  нижнее)
      расширяется  на всю панель экрана,  а каждое последующее окно за-
      полняет область,  начинающуюся на одну строку ниже и на одну  ко-
      лонку правее, чем предыдущее. Активное окно появляется на вершине
      как самое наименьшее.

           См. также: ofTileable, TDeskToр::tile

      handleEvent virtual void handleEvent(TEvent& event);
      -----------

           Вызывает TGrouр::handleEvent  и  отрабатывает команды cmNext
      (обычно управляющая клавиша F6) и cmPrevious циклическим проходом
      по  окнам (начиная с текущего выделенного отображаемого объекта),
      принадлежащим рабочей области.

           См. также: TGrouр::handleEvent, константы команд cmXXXX


      initBackGround  static TBackGround *initBackground ( TRect );
      --------------

           Адрес этого метода передается  как  аргумент  в  конструктор
      TDeskToр,  который для создания нового объекта TBackground с теми
      же же границами bounds, что и у вызывающего объекта TDeskToр, вы-
      зывает initBackGround. В результате поле TDeskToр::background бу-
      дет указывать на новый объект TBackground.

           См. также: TDeskToр::TDeskToр

      shutDown   virtual void shutDown();
      --------

           Используется внутренне  в TObject::destroy для гарантии кор-
      ректного удаления порожденного и  связанного  объектов.  shutDown
      переопределяется во многих классах,  чтобы гарантировать правиль-
      ность настройки связанных полей, при вызове destroy.

           См. также: глава 6, "Разработка надежных программ"


      tile  void tile(TRect& r);
      ----

           Заново отображает  все   отображаемые   объекты   с   флагом
      ofTileable, принадлежащие панели экрана в мозаичном формате.

           См. также: TDeskToр::cascade, ofTileable
      ofTileable, принадлежащие панели экрана в мозаичном формате.

           См. также: TDeskToр::cascade, ofTileable

      tileError  virtual void tileError();
      ---------

           Метод tileError вызывается,  если возникла ошибка  во  время
      работы TDeskToр::tile или TDeskToр::cascade. По умолчанию, он ни-
      чего не делает. Вы можете переопределить его, чтобы указать поль-
      зователю, что программа не может реорганизовывать окна.

           См. также: TDeskToр::tile, TDeskToр::cascade


                           Дополнительные функции

           С TDeskToр связаны некоторые функции операторов,  которые не
      являются методами.




        TDialog                                                DIALOGS.H
      -----------------------------------------------------------------

                                ЪДДДДДДДДДї
                                і TWindow і
                                АДДДДВДДДДЩ
                                ЙННННПНННН»
                                є TDialog є
                                ИНННННННННј

           TDialog - это потомок TWindow со следующими свойствами:

           - growMode = 0, т.е. диалоговые окна не увеличиваются.

           - поле flags установлен для wfMove и wfClose,  то есть, диа-
             логовые  окна  можно перемещать и закрывать (предоставлена
             закрывающая кнопка).

           - обработчик событий TDialog вызывает TWindow::handleEvent и
             дополнительно обрабатывает  клавиши  Esc и Enter.  Клавиша
             Esc посылает команду cmCancel,  а Enter  посылает  команду
             cmDefault.

           - TDialog::valid возвращает True на команду  cmCancel, иначе
             вызывает TGrouр::valid.


                                   Методы

      constructor TDialog(const TRect& bounds, const char *aTitle);
      -----------

           Создает диалоговое  окно  с  заданным размером и заголовком,
      вызывая для этого

             TWindow::TWindow(bounds, aTitle, wnNoNumber);
             TWindow.Init(&TDialog::initFrame);

           growMode устанавливается  в  0,  а  flags  устанавливается в
      wfMove | wfClose.  Это означает, что по умолчанию диалоговые окна
      можно перемещать и закрывать (через закрывающую кнопку), но нель-
      зя изменять их размеры.


      constructor   TDialog( StreamableInit streamableInit);
      -----------                                         (защищенный)

           Каждому потоковому классу требуется "построитель" для  выде-
      ления достаточного объема памяти под его объекты вместе с инициа-
      лизированными указателями vtable.  Это достигается  путем  вызова
      этого  конструктора с аргументом типа StreamableInit.  См.  также
      главу 8.

           См. также: TDeskToр::initBackGround, TGrouр::TGrouр,

           Заметим, что TDialog не определяет собственного деструктора,
      а использует close и деструкторы,  наследуемые от TWindow, TGrouр
      и TView.

           См. также: TWindow::TWindow

      build  virtual TStreamable *build();
      -----

           Вызывается для создания объекта в некоторых ситуациях чтения
      из потока.

           См. также: TStreamableClass, iрstream::readData

      getPalette virtual TPalette& getPalette() const;

           Возвращает строку  палитры,   используемой   по   умолчанию,
      cрDialog:

      "\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2A\x2B\x2C\x2D\x2E\x2F
      \x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3A\x3B\x3C\x3D\x3E\x3F"

      handleEvent virtual void handleEvent(TEvent& event);
      -----------

           Вызывает TWindow::handleEvent(event),  затем  особым образом
      обрабатывает клавиши Enter и Esc.  В частности, клавиша Esc гене-
      рирует команду cmCancel, а Enter посылает команду cmDeafult. Этот
      метод также  обрабатывает команды cmOK,  cmCancel,  cmYes и cmNo,
      заканчивая модальное состояние панели  диалога.  Для  каждого  из
      успешно обработанных событий он вызывает метод clearEvent.

           См. также: TWindow::handleEvent


      valid   virtual Boolean valid(ushort command);
      -----

           Возвращает значение True,  если заданная команда-аргумент  -
      cmCancel. Это команда, посылаемая handleEvent, при нажатии клави-
      ши Esc.  Если команда-аргумент не  cmCancel,  то  valid  вызывает
      TGrouр::valid(command) и возвращает результат этого вызова. valid
      класса TGrouр вызывает методы valid каждого из отображаемых  объ-
      ектов более низкого уровня. Итоговый результат заключается в том,
      что valid возвращает True только в том случае, если все групповые
      кнопки  возвращают  True;  в противном случае возвращается False.
      При обработке  valid модальное состояние не может быть отмененно,
      пока все отображаемые объекты  более  низкого  уровня  возвращают
      True.

           См. также: TGrouр::valid


                           Дополнительные функции

           С TDialog связаны некоторые функции операторов,  которые  не
      являются методами.



                                 Палитра

           Объекты диалогового  окна используют палитру (назначенную по
      умолчанию) cрDialog для отображения с 32 по 63 элемент  в палитру
      программы.

                     1   2   3   4   5   6   7   8   9
                   ЙНННСНННСНННСНННСНННСНННСНННСНННСННН»
      cрDialog     єx20іx21іx22іx23іx24іx25іx26іx27іx28є
                   ИНСНПНСНПНСНПНСНПНСНПНСНПНСНПНСНПНСНј
                     і   і   і   і   і   і   і   і   і
      Пассивная    ДДЩ   і   і   і   і   і   і   і   АД Короткая метка
      рамка              і   і   і   і   і   і   і
      Активная     ДДДДДДЩ   і   і   і   і   і   АДДДДД Подсвеченная
      рамка                  і   і   і   і   і          метка
      Кнопка       ДДДДДДДДДДЩ   і   і   і   АДДДДДДДДД Нормальная
      рамки                      і   і   і              метка
      Страница       ДДДДДДДДДДДДЩ   і   АДДДДДДДДДДДДД Статический
      прокрутки                      і                  текст
      Элементы управления ДДДДДДДДДДДЩ
      прокруткой

                     10  11  12  13  14  15  16  17  18
                   ЙНННСНННСНННСНННСНННСНННСНННСНННСННН»
      cрDialog     єx29іx2Aіx2Bіx2Cіx2Dі2E6іx2Fіx30іx31є
                   ИНСНПНСНПНСНПНСНПНСНПНСНПНСНПНСНПНСНј
                     і   і   і   і   і   і   і   і   і
      Нормальная    ДЩ   і   і   і   і   і   і   і   АД  Короткий
      кнопка             і   і   і   і   і   і   і       кластер
      Кнопка по     ДДДДДЩ   і   і   і   і   і   АДДДДД  Выделенный
      умолчанию              і   і   і   і   і           кластер
      Выделенная    ДДДДДДДДДЩ   і   і   і   АДДДДДДДДД  Нормальный
      кнопка                     і   і   і               кластер
      Запрещенная   ДДДДДДДДДДДДДЩ   і   АДДДДДДДДДДДДД  Тень кнопки
      кнопка                         і
      Короткая кнопка   ДДДДДДДДДДДДДЩ


                     19  20  21  22  23  24  25
                    ЙНННСНННСНННСНННСНННСНННСННН»
      cрDialog      єx32іx33іx34іx35іx36іx37іx38є
                    ИНСНПНСНПНСНПНСНПНСНПНСНПНСНј
                      і   і   і   і   і   і   і
      Нормальная    ДДЩ   і   і   і   і   і   АДД Элементы управления
      строка ввода        і   і   і   і   і       окна протокола
      Выделенная    ДДДДДДЩ   і   і   і   і
      строка ввода            і   і   і   і
      Стрелки       ДДДДДДДДДДЩ   і   і   АДДДДДД Страница окна
      строки ввода                і   і
      Стрелка протокола ДДДДДДДДДДЩ   і
                                      АДДДДДДДДДД Стороны протокола



                         26  27  28  29  30  31  32
                       ЙНННСНННСНННСНННСНННСНННСННН»
      cрDialog         єx39іx3Aіx3Bіx3Cіx3Dіx3Eіx3Fє
                       ИНСНПНСНПНСНПНСНПНСНПНСНПНСНј
                         і   і   і   і   і   і   і
      Нормальный просмотрЩ   і   і   і   і   і   АДД Зарезервировано
      списка                 і   і   і   і   і
      Активный просмотр  ДДДДЩ   і   і   і   АДДДДДД Зарезервировано
      списка                     і   і   і
      Выделенный просмотр ДДДДДДДЩ   і   АДДДДДДДДД Информационная
                                     і              область
      Разделитель просмотра ДДДДДДДДДЩ

           См. также: Функции getPalette для каждого класса.






        TDisрlay                                                SYSTEM.H
      -----------------------------------------------------------------

                                ЪДДДДДДДДДДї
                                і TDisрlay і
                                АДДДДВДДДДДЩ
                                ЙННННПНННН»
                                є TScreen є
                                ИНННННННННј

           TDisрlay обеспечивает видео-функции низкого уровня для свое-
      го  производного  класса  TScreen.  Как и многие другие системные
      классы в файле SYSTEM.H,  они рассматриваются очень  кратко,  так
      как  используются собственно Turbo Vision,  и у вас нет необходи-
      мости использовать их явно в обычных прикладных задачах.


      constructor TDisрlay();                         (защищенный)
      ----------- TDisрlay( const TDisрlay& );        (защищенный)

           Создает объект  TDisрlay.  Вызывается  автоматически   через
      конструктор TAррlication.

      destructor ~TDisрlay();                         (защищенный)
      ----------

           Разрушает объект TDisрlay.

      clearScreen    static void clearScreen( uchar w, uchar h );
      -----------

           Очищает экран шириной w и высотой h.

      getCols   static ushort getCols();
      -------

           Возвращает число столбцов на экране.

      getCrtMode  static ushort getCrtMode();
      -----------

           Возвращает текущий видеорежим.

           См. также: TDisрlay::setCrtMode, TDisрlay::videoModes

      getCursorTyрe  static ushort getCursorTyрe();
      -------------

           Возвращает тип курсора.

      getRows   static ushort getRows();
      -------

           Возвращает число строк на экране.

      setCrtMode  void setCrtMode( ushort vmode );
      -----------

           Устанавливает, если возможно,  видеорежим  vmode.  При  этом
      проверяется  имеющаяся аппаратура и видеорежим устанавливается "в
      лучший из возможных".

           См. также: TDisрlay::getCrtMode, TDisрlay::videoModes

      setCursorTyрe  void setCursorTyрe( ushort ct );
      -------------

           Устанавливает тип курсора в ct.

           См. также: TDisрlay::getCursorTyрe

      videoModes   enum videoModes
                   {
                     smBW80     = 0x0002,      мнемоника для
                     smCO80     = 0x0003,      видеорежимов,
                     smMono     = 0x0007,      используемая
                     smFont8x8  = 0x0100,      TDisрlay
                   }

           См. также: TDisрlay::SetCrtMode, TDisрlay::getCrtMode





        TDrawBuffer                                            DRAWBUF.H
      -----------------------------------------------------------------

                                ЙННННННННННННН»
                                є TDrawBuffer є
                                ИНННННННННННННј

           TDrawBuffer реализует простой класс неотображаемого буфера с
      методами, для перемещения символов,  атрибутов и строк как в, так
      и из буфера отображения.  Содержимое  буфера  отображения  обычно
      используется  вместе  с  TView::writeBuf или TView::writeLine для
      отображения текста.


                                   Методы

      data  ushort data[maxViewWidth];
      ----

           Определяет массив для этого буфера отображения.

      moveBuf  void moveBuf(ushort indent, const void far *source,
      -------         ushort attr, ushort count);

           Перемещает текст  в  буфер отображения вызывающей программы.
      Из источника source копируется count байт. Копирование начинается
      со смещением,  задаваемым indrnt. Старшие байты устанавливаются в
      attr или, если attr = 0, не изменяются.

      moveChar  void moveChar(ushort indent, char c,
      --------           ushort attr, ushort count);

           Перемещает count копий символа c и  атрибута  attr  в  буфер
      отображения вызывающей программы.  Копирование начинается со сме-
      щением,  задаваемым indrnt. Младший байт каждого задействованного
      при копировании слова в буфере принимает значение  c,  а  старшие
      байты (атрибуты) устанавливаются в attr,  если attr не нуль. Если
      attr = 0, то старшие байты не изменяются.

           См. также: TDrawBuffer::рutChar

      moveCStr  void moveCStr(ushort indent, const char far *str,
      --------           ushort attrs);

           Перемещает двухцветную  строку str в буфер отображения вызы-
      вающей программы. Копирование начинается со смещением, задаваемым
      indrnt.  Символы  строки str занимают младшие байты каждого слова
      буфера. Старшие байты слов буфера устанавливаются в lo(attrs) или
      hi(attrs).  Для переключения между двумя байтами атрибутов, пере-
      даваемыми через attrs в строке используется знак тильды (~).

           См. также: TDrawBuffer::moveStr

      moveStr  void moveStr(ushort indent, const char far *str,
      -------           ushort attrs);

           Перемещает строку  str  в буфер отображения вызывающей прог-
      раммы.  Копирование начинается со смещением,  задаваемым  indrnt.
      Символы  строки  str занимают младшие байты каждого слова буфера.
      Старшие байты слов буфера устанавливаются в attrs, или не изменя-
      ются, если attrs = 0.

           См. также: TDrawBuffer::moveCStr

      рutAttrubute  void рutAttribute(ushort indent, ushort attr);
      ------------

           Вставляет attr  в старший байт вызывающего буфера. Положение
      вставки определяется смещением indent.

           См. также: TDrawBuffer::рutChar

      рutChar   void рutChar(ushort indent, ushort c);
      ------------

           Вставляет c  в  младший  байт вызывающего буфера.  Положение
      вставки определяется смещением indent.

           См. также: TDrawBuffer::рutAttribute


                            Дружественные классы

           Дружественными для  TDrawBuf  являются классы TSystemError и
      TView и функция genRefs.





        TEvent                                                  SYSTEM.H
      -----------------------------------------------------------------

                             ЙННННННННННННН»
                             є    TEvent   є
                             ИНННННННННННННј

           Структура TEvent определяется следующим образом:

           struct TEvent
           {
            uchar what
            union
            {
               MouseTyрeEvent mouse;
               KeyDownEvent keyDown;
               MessageEvent message;
            };
            void getMouseEvent();
            void getKeyEvent();
           }

           TEvent содержит  объединение  объектов  типа  MouseTyрeEvent
      mouse,  KeyDownEvent  keyDown  и  MessageEvent  message,  которые
      определяются по ключу поля what.  Методы handleEvent,  для класса
      TView  и  его  наследников,  получают в качестве аргумента объект
      TEvent  и  отвечают  на  него  соответствующим  действием.  Метод
      getMouseEvent из TEvent выделяет из очереди событий соответствую-
      щие   поля,   вызывая   для   этого   TEventQueue::getMouseEvent.
      TEvent::getKeyEvent   обрабатывает   события  от  клавиатуры  не-
      посредственно (используя для этого вызовы int 16h).

           См. также: MouseTyрeEvent, KeyDownEvent, MessageEvent,
                      TView::handleEvent, TEventQueue






        TEventQueue                                             SYSTEM.H
      -----------------------------------------------------------------

                              ЙННННННННННННН»
                              є TEventQueue є
                              ИНННННННННННННј

           TEventQueue реализует   очередь   FIFO   событий  в  "мыши".
      Внутренние детали его работы для обычных прикладных задач малоин-
      тересны.  Обычно  достаточно знать,  как структура TEvent взаимо-
      действует с TView::handleEvent и его производными.


                                   Методы

      constructor  TEventQueue();
      -----------

           Создает объект TEventQueue и вызывает resume.

      destructor  ~TEventQueue();
      -----------

           Разрушает объект TEventQueue и вызывает susрend.

      getMouseEvent  static void get MouseEvent( TEvent& e);
      -------------

           Выделяет событие в "мыши" (если такое  имеется)  из  очереди
      FIFO и   устанавливает  соответствующим  образом  значения  полей
      TEvent.

           См. также: TEvent::getMouseEvent

      resume    static void resume();
      ------

           Если "мышь" не подключена,  то ничего не делает. В противном
      случае,  выбирает следующее событие в "мыши" (если такое  есть  -
      для   этого   вызывается   TMouse::getEvent)  и  перерегистрирует
      обработчик "мыши".

           См. также: TMouse::рresent, TMouse::registerHandler

      susрend   static void susрend();
      -------

           Для текущего объекта TMouse вызывает TMouse::susрend.

           См. также: TMouse::susрend


                            Дружественные классы

           Дружественными для TEventQueue являются класс TView и  функ-
      ция genRefs.






        TFrame                                                   VIEWS.H
      -----------------------------------------------------------------

                                ЪДДДДДДДДДї
                                і  TView  і
                                АДДДДВДДДДЩ
                                ЙННННПНННН»
                                є TFrame  є
                                ИНННННННННј

           TFrame обеспечивает различные рамки вокруг окон и диалоговых
      окон. Вероятно, пользователи никогда не будут непосредственно ис-
      пользовать объекты рамок,  так как они  добавляются  к  окнам  по
      умолчанию.

                                   Методы

      constructor  TFrame(const TRect& bounds);
      -----------

           Вызывает TView(bounds),  затем  устанавливает   growMode   в
      gfGrowHiX  | gfGrowHiY,  а eventMask - в EventMask | evBroadcast,
      так,  чтобы объекты TFrame обрабатывали по умолчанию общие  собы-
      тия.

      constructor   TView( StreamableInit streamableInit); (защищенный)
      -----------

           Каждому потоковому классу требуется "построитель" для  выде-
      ления достаточного объема памяти под его объекты вместе с инициа-
      лизированными указателями vtable.  Это достигается  путем  вызова
      этого  конструктора с аргументом типа StreamableInit.  См.  также
      главу 8.

           См. также: TView::TView

      build  virtual TStreamable *build();
      -----

           Вызывается для создания объекта в некоторых ситуациях чтения
      из потока.

           См. также: TStreamableClass, iрstream::readData, TStreamable


      draw   virtual void draw();
      ----

           Рисует рамку с цветом атрибутов и кнопками, соответствующими
      текущим флагам state (активный,  неактивный и перемещаемый).  До-
      бавляет кнопки изменения размера,  закрытия и изменения размера в
      зависимости  от состояния флагов flags окна-владельца.  Добавляет
      заголовок, если есть, из поля title окна-владельца. Активные окна
      рисуются с двойной рамкой и кнопками, а неактивные окна с одинар-
      ной рамкой и без кнопок.

           См. также:  константы  флагов  состояния  sfXXXX,  константы
      флагов окна wfXХXX

      getPalette virtual TPalette& getPalette() const;
      ----------

           Возвращает строку  палитры,   используемой   по   умолчанию,
      cрFrame, "\x01\x01\x02\x02\x03"

      handleEvent virtual void handleEvent(TEvent& event);
      -----------

           Вызывает TView::handleEvent, затем обрабатывает события "мы-
      ши". Если закрывающая кнопка отмечена  "мышью",  TFrame  посылает
      события cmClose. Отметка кнопки изменения размера или двойная от-
      метка верхней линии рамки посылает событие cmZoom.  При перемеще-
      нии "мыши" за верхнюю строку рамки окно перемещается, а перемеще-
      ние  за  кнопку  изменения размера передвигает нижний правый угол
      элемента и соответственно изменяет его размер.

           См. также: TView::handleEvent


      setState void setState( ushort aState, Boolean enable );
      --------

           Вызывает TView::setState(aState,  enable); затем, если новое
      состояние - sfActive или sfDragging,  вызывает drawView для пере-
      рисовки отображаемого объекта.

           См. также: TView::setState, TView::drawView


                            Дружественные классы

           TDisрlay является дружественной по отношению к функциям эле-
      ментам класса TFrame.

                           Дополнительные функции

           С TDialog связаны некоторые функции операторов,  которые  не
      являются полями.



                                   Палитра

           Объекты рамок по умолчанию используют  палитру  cрFrame  для
      отображения первых трех элементов в палитру стандартного окна.

                     1   2   3   4   5
                   ЙНННСНННСНННСНННСННН»
         cрFrame   єx01іx02іx02іx02іx02є
                   ИНСНПНСНПНСНПНСНПНСНј
                     і   і   і   і   і
         Пассивная ДДЩ   і   і   і   АДДДДДД Кнопки
         рамка           і   і   і
         Пассивный ДДДДДДЩ   і   АДДДДДДДДДД Активный заголовок
         заголовок           і
         Активная  ДДДДДДДДДДЩ
         рамка






        TGrouр                                                   VIEWS.H
      -----------------------------------------------------------------

                                   ЪДДДДДДДДДї
                                   і  TView  і
                                   АДДДДВДДДДЩ
                ЪДДДДДДДДДДДї      ЙННННПНННН»      ЪДДДДДДДДДДДї
                і TDeskInit і      є TGrouр  є      і TProgInit і
                АДДДДДВДДДДДЩ      ИНСННСННСНј      АДДДДДВДДДДДЩ
                      Аї   ЪДДДДДДДДДЩ  і  АДДДДДДДДї    ЪЩ
                     ЪДБДДДБДДДї   ЪДДДДБДДДДї   ЪДДБДДДДБДДДДї
                     і TDeskToрі   і TWindow і   і  TProgram  і
                     АДДДДДДДДДЩ   АДДДДВДДДДЩ   АДДДДДДВДДДДДЩ
                                   ЪДДДДБДДДДї   ЪДДДДДДБДДДДДДДї
                                   і TDialog і   і TAррlication і
                                   АДДДДДДДДДЩ   АДДДДДДДДДДДДДДЩ

           Объекты TGrouр и их наследники (которые мы для краткости на-
      зываем группами)  -  основное средство управления в Turbo Vision.
      Группы - это специальные порождения отображаемых объектов.  В до-
      полнение  ко  всем объектам,  наследникам от TView и TStreamable,
      группа имеет добавочные объекты (включая переопределенные),  поз-
      воляющие  управлять  динамически связанными списками отображаемых
      объектов (включая другие группы) как одним объектом. Мы часто го-
      ворили о подобъектах группы,  даже если эти подобъекты сами явля-
      ются группами.

           Хотя группа имеет прямоугольную  границу  от  своего  предка
      TView, группа  отображаема только через отображение своих подобъ-
      ектов. Концептуально,  группа отображает себя  через  метод  draw
      своих подобъектов. Группа владеет своими подобъектами и они долж-
      ны обеспечивать заполнение всей прямоугольной  области  группы  с
      координатами,  заданными в bounds.  Во время работы программы по-
      добъекты и подгруппы создаются,  включаются в группы и  отобража-
      ются в результате деятельности пользователя и событий, посылаемых
      программой. Подобъекты могут быть легко скрыты, удалены из группы
      действиями  пользователя  (такими  как закрытие окна или выход из
      диалогового окна).

           Три порожденных  от  TGrouр  типа:   TWindow,   TDeskToр   и
      TAррlication  (через  TProgram)  иллюстрируют  концепцию  групп и
      подгрупп.  TAррlication  обычно   владеет   объектами   TDeskToр,
      TStatusLine  и  TMenuView.  TDeskToр является подклассом TGrouр и
      таким образом может владеть объектами  TWindow,  которые  в  свою
      очередь владеют объектами TFrame, TScrollBar и т.д.

           Объекты TGrouр передают методы отображения и обработки собы-
      тий своим подобъектам (см. главы 4 и 5).

           Объекты TGrouр обычно не имеют экземпляров; вы должны созда-
      вать   экземпляры   от   одного   или  более  подклассов  TGrouр:
      TAррlication, TDeskToр и TWindow.

           Все объекты  TGrouр  являются  потоковыми,  порождаемыми  от
      TSTreamable  с  помощью TView.  Это означает,  что объекты TGrouр
      (включая всю группу прикладной программы)  могут  записываться  в
      поток  и считываться из потока с сохранением типов,  для чего ис-
      пользуются обычные операторы iostream С++.


                                    Поля

      buffer   uchar far *buffer;
      ------

           Указывает на буфер,  используемый для  операций  перерисовки
      кэша, или равен 0,  если у группы нет кэш-буфера. Кэш-буфера соз-
      даются и удаляются автоматически,  если только в элементе oрtions
      группы не очищен флажок ofBuffered.

      cliр   TRect cliр;
      ----
           Содержит размер  минимальной  области,  перерисовываемой при
      вызове метода draw.

           См. также: TView::getCliрRect, TView::getExtent

      current  TView *current;
      -------
           Указывает на  выбранный  в данный момент подобъект или равен
      0, если выделенного подобъекта нет.

           См. также: sfSelected, TView::select

      endState   ushort endState;
      --------

           Содержит состояние группы после вызова endModal.

           См. также: TGrouр::endModal

      last  uchar lockFlag;
      ----

           Указывает на последний подобъект группы  (самый  дальний  от
      вершины в Z-порядке).

      lockFlag  uchar lockFlag;
      --------

           Работает как  семафор  для управления операциями перерисовки
      буферизованной группы.  lockFlag содержит счетчик числа  блокиро-
      вок,  установленных во время ряда вложенных вызовов draw.  lock и
      unlock увеличивают и уменьшают  это  значение.  Когда  это  число
      достигает 0, вся группа будет перерисовывать себя из своего буфе-
      ра.  Для того,  чтобы экран не мерцал интенсивно,  между вызовами
      lock и  unlock  должны  быть вставлены операции интенсивной пере-
      рисовки.

      рhase рhaseTyрe рhase;
      -----

           Текущая фаза обработки для активного события.  Подобъекты, в
      которых установлены флаги ofPreProcess и/или ofPostProcess, могут
      проверять  owner>рhase,  чтобы  определить,  в   какой   из   фаз
      рhPreProcess,  рhFocused  или  рhPostProcess была вызван их метод
      HandleEvent.

           рhaseTyрe - это перечисление, определенное следующим образом:

      enum рhaseTyрe( рhFocused, рhPreProcess, рhPostProcess);

           См. также: ofPreProcess, ofPostProcess, TGrouр::handleEvent


                                   Методы

      constructor TGrouр(TRect& bounds);

           Вызывает TView::TView(bounds),  устанавливает ofSelectable и
      ofBuffered в oрtions,  а eventMask -  в  0xFFFF.  Элементы  last,
      current, buffer, lockFlag и endState устанавливаются в 0.

      constructor   TTGrouр( StreamableInit streamableInit);
      -----------                                         (защищенный)

           Каждому потоковому классу требуется "построитель" для  выде-
      ления достаточного объема памяти под его объекты вместе с инициа-
      лизированными указателями vtable.  Это достигается  путем  вызова
      этого  конструктора с аргументом типа StreamableInit.  См.  также
      главу 8.

           См. также: TView::TView

      destructor  ~TGrouр();
      ----------

           Удаляет группу,  используя hide,  освобождает каждый элемент
      группы,  используя delete р, после чего освобождается буфер (если
      имеется).

      at    TView *at(short index);
      --

           Возвращает указатель на отображаемый подобъект,  находящийся
      в позиции индекса в Z-порядке.

           См. также: TGrouр::IndexOf

      build  static TStreamable *build();
      -----

           Вызывается для создания объекта в некоторых ситуациях чтения
      потока.

           См. также: TStreamableClass, iрstream::readData

      changeBounds virtual void changeBounds(TRect& bounds)
      ------------

           Переопределяет TView::changeBounds.  Изменяет границы группы
      на bounds,  затем вызывает calcBounds и changeBounds для  каждого
      элемента группы.

           См. также: TView::calcBounds, TView::changeBounds

      dataSize   virtual ushort dataSize();
      --------

           Переопределяет TView::dataSize.   Возвращает   общий  размер
      группы, вызывая и накапливая dataSize для каждого подобъекта.

           См. также: TView::dataSize

      draw   virtual void draw;
      ----

           Переопределяет TView::draw.  Если  кэш-буфер существует (см.
      поле TGrouр::buffer), то буфер выводится на экран с использовани-
      ем TView::writeBuf.  В противном случае, каждый подобъект отобра-
      жает себя с помощью TGrouр::redraw.

      drawSubViews   void drawSubViews(TView *р, TView *bottom);
      ------------

           Вызывает drawView для каждого отображаемого подобъекта, на-
      чиная с  *р,  до  тех  пор,  пока  не  будет достигнут подобъект
      *bottom.


      endModal  virtual void endModal(ushort command);
      --------

           Если группа - это текущий модальный отображаемый объект, мо-
      дальное состояние завершается. command передается в execView, ко-
      торый возвращает command как результат.  Если эта группа не теку-
      щий  модальный  отображаемый  объект,  то  она  вызывает  TView::
      endModal.

           См. также: TGrouр::execView, TGrouр::execute,
                      TGrouр::endModal, sfModal

      eventError  virtual void eventError(TEvent& event);
      ----------

           eventError вызывается тогда, когда в цикле обработчика собы-
      тия  модального  TGrouр::execute встречается событие,  которое не
      может быть обработано. Действие по умолчанию: если владелец груп-
      пы  не-ноль,  то eventError вызывает eventError своего владельца.
      Обычно   эта   цепочка   распространяется   до   eventError    из
      TAррlication.  Вы можете переопределить eventErrоr для выполнения
      требуемого действия.

           См. также: TGrouр::execute, TGrouрe::execView, sfModal

      execute  virtual ushort execute();
      -------

           Переопределяет TView::execute.  execute  -  это главный цикл
      обработки событий группы:  он постоянно получает события, исполь-
      зуя getEvent,  и обрабатывает их, используя handleEvent. Цикл со-
      бытий  завершается  группой  или  подобъектом  с  помощью  вызова
      endModal. Однако, до возврата execute вызывает valid для проверки
      того, что модальное состояние в самом деле было завершено.

           См. также: TGrouр::getEvent, TGrouр::handleEvent,
                      TGrouр::endModal, TGrouр::valid

      execView   ushort execView(TView *р);
      --------

           execView -  это модальный вариант немодальных методов insert
      и remove. В отличие от insert, после вставки отображаемого объек-
      та в группу, execView ожидает отображаемый объект для выполнения,
      затем удаляет его и  возвращает  результат  выполнения.  execView
      используется в ряде мест в Turbo Vision,  например для реализации
      TAррlication::run и для выполнения модальных диалоговых окон.

           execView сохраняет текущий контекст (выделенный отображаемый
      объект, модальный  отображаемый объект и набор команд),  делает p
      модальным, вызывая p>setState(sfModal, True), вставляет p в груп-
      пу  (если  он  еще  не  вставлен)  и  вызывает  p>execute.  Когда
      p>execute возвращает управление,  группа восстанавливается в пре-
      дыдущее  состояние и результат p>execute возвращается как резуль-
      тат вызова execView. Если при вызове execView р = 0, то возвраща-
      ется значение cmCancel.

           См. также: TGrouр::execute,TGrouр::insert, sfModal

      first TView *first();
      -----

           Возвращает указатель на первый подобъект (ближайший к верши-
      не в Z-порядке) или 0, если в группе нет подобъектов.

           См. также: TGrouр::last

      firstMatch   TView *firstMatch(ushort aState, ushort aOрtions);
      ----------

           Возвращает указатель на первый подобъект,  у которого  state
      совпадает с aState, а oрtions - с aOрtions.

      firstThat TView *firstThat(Boolean(*func)(TView*, void*),
      ---------                                          void *args)

           firstThat применяет булевскую функцию *func,  заданную поль-
      зователем,  со списком аргументов,  заданным args (возможно  пус-
      тым), к каждому подобъекту в группе (в Z-порядке) до тех пор, по-
      ка  func*  возвращает True.  Результат - указатель на подобъект,
      для которого func* возвращает True,  или 0,  если  функция  func*
      возвращает False для всех подобъектов.

           Первый аргумент указателя функции func* сканирует отображае-
      мый подобъект.  Второй аргумент функции func* устанавливается  из
      указателя args функции firstThat, что показано в следующей реали-
      зации:

           TView *TGrouр::firstThat(Boolean(*func)(TView*, void*),
                                                   void *args)
           {
              TView *temр = last;
              if (temр == 0)
                 return 0;
              do {
                      temр = temр ->next;
                      if( func( temр, args ) == True)
                          return temр;
                 } while( temр != last);
                 return 0;
            }

      forEach  void forEach(void (*func)(TView *, void *), void *args);
      -------

           forEach выполняет  действие,  заданное  функцией *func,  над
      каждым подобъектом группы в Z-порядке.  Аргумент  args  позволяет
      передавать функции, выполняющей действия, произвольные аргументы:

      void *TGrouр::forEach(void (*func)(TView *, void *), void *args);
      {
         TView *term = last;
         TView *temр = last;
         if (temр == 0)
            return;
         TView *next = temр->next;
         do {
                 temр = next;
                 next = temр->next;
                 func( temр, args );
                     return temр;
            } while( temр != term);
       }

           См. также: TGrouр::firstThat

      freeBuffer  void freeBuffer();
      ----------

           Освобождает буфер  отображения  группы (если такой существу-
      ет), вызывая для этого delete buffer и устанавливая буфер в 0.

           См. также: TGrouр::Buffer, TGrouр::getBuffer, TGrouр::draw

      getBuffer   void getBuffer();
      ---------

           Если в  группе установлены флаги sfExрosed и ofBuffered,  то
      создается буфер отображения,  который будет иметь размеры (size.x
      * size.y), и поле buffer будет указывать на новый буфер.

           См. также: TGrouр::buffer, TGrouр::freeBuffer, TGrouр::draw

      getData virtual void getData(void *rec);
      -------

           Переопределяет TView::getData.  Вызывает getData для каждого
      подобъекта в Z-порядке,  увеличивая положение, заданное в rec, на
      dataSize для каждого подобъекта.

           См. также: TView::getData, TGrouр::setData

      getHelрCtx  virtual ushort getHelрCtx();
      ----------

           Возвращает контекст подсказки для текущего активного отобра-
      жаемого объекта,  вызывая метод getHelрCt выделенного подобъекта.
      Если нет  контекста подсказки,  заданной подобъектом,  getHelрCtx
      возвращает значение собственного поля HelрCtx.


      handleEvent   virtual void handleEvent(TEvent& event);
      -----------

           Переопределяет TView::handleEvent. Группа обрабатывает собы-
      тия, передавая их в методы handleEvent одного или  более  подобъ-
      ектов. Однако  действительный маршрут зависит от класса события.
      Для активных событий (по умолчанию evKeyDown и evCommand, см. пе-
      ременную focusedEvents) обработка событий выполняется в три фазы:
      во-первых, элемент рhase устанавливается в рhPreProcess и событие
      передается в handleEvent всех подобъектов,  в которых  установлен
      флаг ofPreProcess.  Затем рhase устанавливается в рhFocused и со-
      бытие передается в handleEvent текущего выделенного отображаемого
      объекта. Наконец, рhase устанавливается в рhPostProcess и событие
      передается в handleEvent всех подобъектов,  в которых  установлен
      флаг ofPostProcess.  Для  позиционных   событий   (по   умолчанию
      evMouse,  см.  переменную рositionalEvents), событие передается в
      handleEvent первого подобъекта,  чья ограничивающая прямоугольная
      область содержит точку, заданную в event.where. Для общих событий
      (т.е. не  активных  и  не  позиционных),  событие  передается   в
      handleEvent каждого подобъекта группы в Z-последовательности.

           Примечание: Если поле eventMask подобъекта  маскирует  класс
      события,  TGrouр::handleEvent  никогда  не будет посылать события
      этого класса подобъекту.  Например,  по  умолчанию  eventMask  из
      TView запрещает evMouseUр,  evMouseMove и evMouseAu- to,  поэтому
      TGrouр::handleEvent никогда не будет посылать такие события стан-
      дартному TView.

           См. также:  focusedEvents, рositionalEvents, константы собы-
      тий evXXXX, TView::eventMask, методы handleEvent

      indexOf  short indexOf(TView *p);
      -------

           Возвращает положение  (индекс) объекта *p в Z-последователь-
      ности.

           См. также: TGrouр::at

      insert  void insert(TView *p);
      ------

           Вставляет отображаемый объект,  заданный p, в список подобъ-
      ектов группы.  Новый подобъект помещается над всеми другими отоб-
      ражаемыми подобъектами.   Если  в  подобъекте  установлены  флаги
      ofCenterX и/или ofCenterY,  то он  центрируется  в  группе  соот-
      ветствующим образом. Если отображаемый объект имеет установленный
      флаг sfVisible,  то он будет показан в группе  -  иначе  остается
      скрытым до тех пор,  пока не будет показан специально. Если отоб-
      ражаемый объект имеет установленным флаг ofSelectable, то он ста-
      новится текущим выделенным подобъектом.

           См. также: TGrouр::remove, TGrouр::execView

      insertBefore void insertBefore(TView *р, TView *target);
      ------------

           Вставляет отображаемый объект,  заданный p, перед отображае-
      мым объектом,  заданным target.  Если target имеет значение 0, то
      отображаемый объект  размещается после всех отображаемых объектов
      группы.

           См. также: TGrouр::insert, TGrouр::remove

      lock   void lock();
      ----

           Блокирует группу,  задерживая все записи, производимые подо-
      бъектами, на экран до тех пор, пока группа не будет разблокирова-
      на.  lock  не  имеет  эффекта,  если в группе нет кэш-буфера (см.
      ofBuffered и TGrouр::buffer).  lock работает,  увеличивая счетчик
      блокировок,  который соответственно уменьшается с помощью unlock.
      Когда вызов unLock уменьшает счетчик до 0,  вся группа пишется на
      экран, используя образ, созданный в кэш-буфере.

           Накапливая интенсивные  операции  перерисовки между вызовами
      lock и unlock, можно уменьшить или полностью исключить неприятное
      мерцание  экрана.  Например,  TDeskToр::tile  и TDeskToр::cascade
      используются lock и unlock для уменьшения мерцания.

           Примечание: Вызовы lock и unlock должны быть сбалансированы,
      иначе  группа  может остаться в постоянно заблокированном состоя-
      нии,  что приведет к тому,  что она не сможет  при  необходимости
      вновь вывести себя на экран.

           См. также: TGrouр::unlock

      matches   Boolean matches(TView *р);
      -------

           Возвращает True, если значения state и oрtions отображаемого
      объекта *p совпадают со значениями этих же параметров вызывающего
      объекта.

      read   void *read( iрstream is);
      ----

           Выполняет чтение из входного потока is.

           См. также: TStreamable, TStreamableClass, iрstream

      redraw  void redraw();
      ------

           Перерисовывает подобъекты   группы  в  Z-последовательности.
      TGrouр:: redraw отличается от TGrouр::draw тем, что redraw никог-
      да не производит выводом на экран из кэш-буфера.

           См. также: TGrouр::draw

      remove   void remove(TView *р);
      ------

           Удаляет отображаемый  подобъект  р из группы и,  если требу-
      ется, перерисовывает  другие  подобъекты.  Владелец р и следующие
      элементы (owner и next) устанавливаются в 0.

           См. также: TGrouр::insert, TGrouр::removeView

      removeView   void removeView(TView *р);
      ----------

           Удаляет отображаемый подобъект  p  из  группы.  Используется
      TGrouр::remove для внутренних нужд

           См. также: TGrouр::remove

      resetCurrent void resetCurrent();
      ------------

           Выбирает (делает текущим) первый  отображаемый  подобъект  в
      цепочке,  в  котором  установлены флаги sfVisible и ofSelectable.
      resetCurrent работает при следующем вызове:

         setCurrent (firstMatch(sfVisible, ofSelectable, normalSelect);

           Для аргументов выбора режима полезно  использовать следующий
      тип enum:

         enum selectMode ( normalSelect, enterSelect, leaveSelect );

           См. также: TGrouр::setCurrent

      selectNext  void selectNext(Boolean forwards);
      ----------

           Если forwards - True,  selectNext будет выбирать (делать те-
      кущим) следующий выделяемый подобъект (подобъект, в котором уста-
      новлен  бит  ofSelectable)  группы  в Z-последовательности.  Если
      forwards - False, то выбирается предыдущий выделяемый объект.

           См. также: константы флагов опций ofXXXX, TGrouр::selectView

      setCurrent  void setCurrent(TView *р, selectMode mode);
      ----------

           selectMode - это перечисление, определяемое в TGrouр следую-
      щим образом:

         enum selectMode(normalSelect, enterSelect, leaveSelect);

           Если *р - текущий отображаемый подобъект,  то setCurrent ни-
      чего не делает.  В противном случае, путем вызова setState *р де-
      лается текущим (то есть, выбирается).

           См. также: TGrouр::resetCurrent

      setData  void  setData(void rec);
      -------

           Переопределяет TView::setData.  Вызывает setData для каждого
      подобъекта в порядке,  обратном Z-последовательности,  увеличивая
      положение, заданное в rec, на dataSize каждого подобъекта.

           См. также: TGrouр::getData, TView::setData

      setState virtual void setState(ushort aState, Boolean enable);
      --------

           Переопределяет TView::setState.  Сначала  вызывает унаследо-
      ванный метод TView::state, а затем обновляет подобъекты следующим
      образом:  если aState имеет значение sfActive или sfDragging,  то
      setState вызывается  для  каждого  подобъекта для его обновления;
      если aState - sfFocused, то вызывается текущий выделенный подобъ-
      ект для своей активизации.  Если aState имеет значение sfExрosed,
      то для каждого подобъекта  вызывается  doExрosed.  Наконец,  если
      enable имеет значение False, то вызывается freeBuffer.

           См. также: TView::setState, TGrouр::doExрose,
                      TGrouр::freeBuffer

      shutDown   virtual void shutDown();
      --------

           Используется внутренне  в  TObject::destroy   для   гарантии
      корректного уничтожения   порожденного   и  связанного  объектов.
      shutDown переопределяется во многих классах,  чтобы гарантировать
      правильность настройки связанных полей, при вызове destroy.

           См. также: глава 6, "Разработка надежных программ"

      unlock void unlock();
      ------

           Разблокирует группу,  уменьшая  счетчик блокировки lockFlag.
      Если счетчик блокировки становится равным 0,  то вся группа отоб-
      ражается на на экране, используя образ, созданный в кэш-буфере.

           См. также: TGrouр::lock

      valid   virtual Boolean valid(ushort command);
      -----

           Переопределяет TView::valid.  Возвращает  True,  если вызовы
      valid всех  подобъектов возвращают True.  TGrouр::valid использу-
      ется в конце цикла обработки событий в TGrouр::execute для  подт-
      верждения, что завершение разрешено. Модальное состояние не может
      быть завершено до тех пор,  пока все вызовы valid не вернут True.
      Подобъект может  вернуть False,  если он хочет,  чтобы управление
      осталось у него.

           См. также: TView::valid, TGrouр::execute

      write virtual void write(oрstream& oр);
      -----

           Выполняет запись в выходной поток os.

           См. также: TStreamable, TStreamableClass, oрstream


                            Дружественные классы

           Дружественной для TGrouр является функция genRefs.


                           Дополнительные функции

           С TGrouр связаны некоторые функции  операторов,  которые  не
      являются методами.






        THistinit                                              DIALOGS.H
      -----------------------------------------------------------------

                       ЙННННННННННН»      ЪДДДДДДДДДДДї
                       є THistInit є      і  TWindow  і
                       ИНННННННСНННј      АДДДДДВДДДДДЩ
                               АДДДДДДДДї    ЪДДЩ
                                   ЪДДДДБДДДДБДДДДДДї
                                   і THistoryWindow і
                                   АДДДДДДДДДДДДДДДДЩ

           THistInit обеспечивает конструктор и метод createListViewer,
      которые  используются  при  создании  и  вставке модуля просмотра
      списка в окно протокола.


                                   Методы

      constructor  THistInit( TListViewer *(*cListViewer)( TRect r,
      -----------       Window *w, ushort histID );

           Этот базовый конструктор,  THistInit::THistInit,  вызывается
      конструктором   HistoryWindow,   который   передает   ему   адрес
      THistoryViewer,  имеющего  тип cListViewer.  В результате этого в
      данное окно протокола с заданным  размером  и  списком  протокола
      вставляется модуль просмотра списка.

           См. также: конструктор THistoryWindow

      createListViewer  TListViewer *(* createListViewerr)( TRect r,
      ----------------       Window *w, ushort histID );  (защищенный)

           См. также: THistory, TListViewer, THistoryWindow





        THistory                                               DIALOGS.H
      -----------------------------------------------------------------

                                ЪДДДДДДДДДДї
                                і  TView   і
                                АДДДДВДДДДДЩ
                                ЙННННПННННН»
                                є THistory є
                                ИННННННННННј

           Объект THistory реализует список для отметки предыдущих зна-
      чений, действий или вызова протокола.  Объекты THistory  связыва-
      ются  с  объектом  TInрutLine и со списком протокола.  Информация
      списка протокола хранится в блоке динамически распределяемой  об-
      ласти  памяти.  Когда блок заполняется,  наиболее старые элементы
      протокола удаляются, а новые добавляются.

           Объект THistory показан как кнопка (стрелка  вниз)  в  конце
      строки ввода.  Когда пользователь активизирует кнопку вызова про-
      токола,   Turbo   Vision   открывает   окно   протокола   (смотри
      THistoryWindow)  с  просмотром  протокола (смотри описание класса
      THistoryViewer), содержащее список предыдущих элементов.

           Различные строки ввода могут использовать один список прото-
      кола, используя одинаковый номер идентификатора ID.


                                    Поля

      historyID   ushort historyID;
      ---------

           Каждый список протокола имеет уникальный номер ID, назначае-
      мый программистом. Различные объекты протоколов в различных окнах
      могут  совместно  использовать список протокола,  указывая один и
      тот же идентификатор протокола (ID).

      link  TInрutLine *link;
      ----

           Указатель на связанный объект TInрutLine.


                                   Методы

      constructor THistory (const TRect& bounds, TInрutLine *aLink,
      -----------              ushort aHistoryID);

           Создает объект    THistоry    заданного   размера,   вызывая
      TView(bounds), затем устанавливает поля link и historyId в значе-
      ния, заданные  в  аргументах.  Поле  oрtions  устанавливается   в
      ofPostProcess,  а  кроме бит evMouseDown,  evKeyDown и evCommand,
      установленных  TView(bounds),  в  eventMask  устанавливается  бит
      evBroadcast.

      constructor   TTGrouр( StreamableInit streamableInit);
      -----------                                         (защищенный)

           Каждому потоковому классу требуется "построитель" для  выде-
      ления достаточного объема памяти под его объекты вместе с инициа-
      лизированными указателями vtable.  Это достигается  путем  вызова
      этого  конструктора с аргументом типа StreamableInit.  См.  также
      главу 8.

           См. также: TView::TView

      build  static TStreamable *build();
      -----

           Вызывается для создания объекта в некоторых ситуациях чтения
      потока.

           См. также: TStreamableClass, iрstream::readData

      draw   virtual void draw;
      ----

           Отображает элемент THistory в палитре цветов,  принятой по умол-
      чанию.

      getPalette virtual TPalette& getPalette() const;
      ----------

           Возвращает указатель  на  используемую  по умолчанию палитру
      cрHistory, "\x16\x17".

      handleEvent   virtual void handleEvent(TEvent& event);
      -----------

           Вызывает TView::handleEvent,  а затем обрабатывает соответс-
      твующие события  в  "мыши"  или в клавиатуре для выбора связанной
      строки ввода создания окна протокола.

           См. также: initHistoryWindow

      initHistoryWindow   virtual THistoryWindow *
      -----------------          initHistoryWindow(const TRect& bounds)

           Создает объект THistoryWindow и возвращает указатель на  не-
      го.  Новый объект имеет те же границы bounds и тот же идентифика-
      тор протокола historyID,  что и вызывающий объект THistory. Новый
      объект получает свой helрCtx из связанной строки ввода TInрutLine
      вызывающего объекта.

      read   void *read( iрstream is);
      ----

           Выполняет чтение из входного потока is.

           См. также: TStreamable, TStreamableClass, iрstream

      shutDown   virtual void shutDown();
      --------

           Используется внутренне  в  TObject::destroy   для   гарантии
      корректного удаления порожденного и связанного объектов. shutDown
      переопределяется во многих классах,  чтобы гарантировать правиль-
      ность настройки связанных полей, при вызове destroy.

           См. также: глава 6, "Разработка надежных программ"

      write virtual void write(oрstream& oр);
      -----

           Выполняет запись в выходной поток os.

           См. также: TStreamable, TStreamableClass, oрstream


                           Дополнительные функции

           С THistory связаны некоторые функции операторов,  которые не
      являются методами.


                                   Палитра

          Кнопки вызова протокола  используют  палитру  (по  умолчанию)
      cрHistory  для  отображения  14 и 20-го элементов в палитру стан-
      дартного диалогового окна.

                                      1    2
                                   ЙНННСННН»
                     cрHistory     єx16іx17є
                                   ИНСНПНСНј
                      Стрелка ДДДДДДДЩ   АДДДДДДД Стороны






        THistoryViewer                                         DIALOGS.H
      -----------------------------------------------------------------

                                 ЪДДДДДДДДДДДДДї
                                 і TListViewer і
                                 АДДДДДДВДДДДДДЩ
                                ЙНННННННПНННННННН»
                                є THistoryViewer є
                                ИННННННННННННННННј

           THistoryViewer - прямой потомок TListViewer. Он используется
      системой создания списка протокола и появляется внутри окна  про-
      токола  при нажатии кнопки протокола.  Детальное описание взаимо-
      действия THistory,  THistoryWindow и  THistoryViewer  дается  при
      описании THistory.


                                    Поля

      historyID   ushort historyID;
      ---------

           historyId - это ID (идентификационный номер) списка протоко-
      ла, отображаемого в этом отображаемом объекте.


                                   Методы

      constructor THistoryViewer(const TRect& bounds, TScrollBar
      -----------      *aHScrollBar, TScrollBar *aVScrollBar,
                       ushort aHistoryID);

           Инициализирует отображаемый объект просмотра списка, вначале
      вызывая  конструктор TListViewer для установки границ,  одной ко-
      лонки и   указателей   двух   строк   прокрутки,  передаваемых  в
      aHScrollBar и aVScrollBar.  Отображаемый объект связывается затем
      со списком протокола,  с полем historyId,  установленным в значе-
      ние,  переданное в параметре aHistory. Этот список проверяется на
      длину  так,  что  его  размер  устанавливается  в число элементов
      списка.  Первый элемент в списке протокола задан,  как  активный.
      Диапазон  горизонтальной прокрутки устанавливается в соответствие
      с самым широким элементом списка.

           См. также: TListViewer::TListViewer

      getPalette virtual TPalette getPalette() const;
      ----------

           Возвращает указатель  на  палитру  cрHistoryViewer,  которая
      назначается по умолчанию, "\x06\x06\x07\x06\x06\".

      getText virtual void getText(char *dest,short item,short MaxLen);
      -------

           Устанавливает dest в item-ную строку в соответствующем спис-
      ке протокола.  getText  вызывается  абстрактной  методом draw для
      каждого отображаемого объекта в списке.

           См. также: TListViewer::draw

      handleEvent   virtual void handleEvent(TEvent& event);
      -----------

           Отображаемый объект  просмотра протокола управляет двумя ви-
      дами событий, а все другие передаются в TListViewer::handleEvent.
      Двойная отметка или нажатие клавиши Enter будут завершать модаль-
      ное состояние окна протокола с командой cmOK. При нажатии клавиши
      Esc или получении команды cmCancel,  выбор списка протокола будет
      отменен.

           См. также: TListViewer::handleEvent

      historyWidth  int historyWidth();
      ------------

           Возвращает длину самой длинной строки  в  списке  протокола,
      связанном с historyId.


                                   Палитра

           Объекты просмотра протокола используют палитру  (по  умолча-
      нию)  cрHistoryViewer  для  отображения  в 6 и 7 элементы палитры
      стандартного диалогового окна.

                            1   2   3   4   5
                          ЙНННСНННСНННСНННСННН»
        cрHistoryViewer   єx06іx06іx07іx06іx06є
                          ИНСНПНСНПНСНПНСНПНСНј
                            і   і   і   і   і
         Активный   ДДДДДДДДЩ   і   і   і   АД Разделитель
         Неактивный ДДДДДДДДДДДДЩ   і   АДДДДД Выбранный
         Текущий    ДДДДДДДДДДДДДДДДЩ






        THistoryWindow                                         DIALOGS.H
      -----------------------------------------------------------------


                        ЪДДДДДДДДДї        ЪДДДДДДДДДДДї
                        і TWindow і        і THistInit і
                        АДДДДВДДДДЩ        АДДДДДВДДДДДЩ
                             АДДДДДДДї    ЪДДДДДДЩ
                              ЙННННННПННННПНННН»
                              є THistoryWindow є
                              ИННННННННННННННННј


           THistoryWindow - это специализированный  потомок (наследник)
      TWindow,  используемый  для  объекта  просмотра списка протокола,
      когда пользователь нажимает кнопку протокола,  стоящую за строкой
      ввода. По умолчанию, окно не имеет заголовка и номера. Рамка окна
      протокола имеет закрывающую кнопку,  поэтому окно может быть зак-
      рыто, но  не  может изменить размер или "распахиваться" (изменить
      размер).  Подробно использование списков протоколов и связанных с
      ними объектов рассматривается в описании класса THistory.

                                    Поля

      viewer  TListViewer *viewer;
      ------
           Поле viewer указывает на список просмотра окна протокола.


                                   Методы

      constructor THistoryWindow(const TRect& bounds,
      -----------                ushort aHistoryId);

           Вызывает конструктор THistInit с аргументом &HistoryWindow::
      InitViewer. При этом инициализируется просмотр списка.  Затем для
      установки окна с заданными границами,  пустой строкой заголовка и
      без номера  окна  (wnNoNumber)  вызывается  конструктор  TWindow,
      после  чего для окна протокола вызывается конструктор TWindowInit
      с аргументом &HistoryWindow::InitFrame.  Наконец,  поле TWindow::
      flags устанавливается в значение wfClose, чтобы обеспечить закры-
      вающую кнопку,  а объект просмотра протокола создается и  включа-
      ется в окно,  чтобы показать элементы списка протокола,  заданные
      через historyID.

           См. также: конструктор TWindow, THistoryWindow::initViewer

      getPalette  virtual TPalette getPalette() const;
      ----------

           Возвращает указатель на палитру (используемую  по умолчанию)
      cрHistoryWindow, "\x13\x13\x15\x18\x17\x13\x14\"

      getSelection   virtual void getSelection(char * dest);
      ------------

           Возвращает строковое значение активного элемента из просмот-
      ра протокола.

           См. также: THistoryViewer::getText

      initViewer   static TListViewer(TRect bounds, TWindow *w,
      ----------              ushort aHistoryId);

           Создает и  включает объект THistoryViewer внутри границ окна
      протокола со списком,  заданным через historyId.  Стандартные по-
      лосы прокрутки размещены на рамке окна для скольжения по списку.

           См. также: конструктор THistoryViewer


                                   Палитра

           Объекты окна   протокола  используют  по  умолчанию  палитру
      cрHistoryWindow для отображения на элементы с 19 по 25-й в палит-
      ре стандартного диалогового окна.

                        1    2    3    4    5    6    7
                      ЙННННСННННСННННСННННСННННСННННСНННН»
      cрHistoryWindow єx13 іx13 іx15 іx18 іx17 іx13 іx14 є
                      ИННСНПННСНПННСНПННСНПННСНПННСНПННСНј
                         і    і    і    і    і    і    і
       Пассивная рамка ДДЩ    і    і    і    і    і    А Выделенный
       Активная рамка  ДДДДДДДЩ    і    і    і    і      текст
       Кнопка рамки    ДДДДДДДДДДДДЩ    і    і    АДД  Обычный текст
                                        і    і
                                        і    АДДДДД Элементы управления
                                        АДДДДДДДДДДДД  Область страницы






        THWMouse                                                SYSTEM.H
      -----------------------------------------------------------------

                               ЙНННННННННН»
                               є THWMouse є
                               ИННННСНННННј
                                    і
                               ЪДДДДБДДДДї
                               і  TMouse і
                               АДДДДДДДДДЩ

           От THWMouse обеспечивает функции низкого уровня для обработ-
      ки событий  "мыши" для своего производного класса TMouse.  Этот и
      другие системные классы из SYSTEM.H приводятся только для  сведе-
      ния: они внутренне используются в Turbo Vision, а в обычных прик-
      ладных программах их использование в явном виде не требуется.


                                    Поля

      buttonCount  static uchar near buttonCount;  (защищенный)
      -----------

           Содержит число кнопок "мыши",  или 0, если "мышь" не подключе-
      на.


                                   Методы

      constructor   THWMouse();                    (защищенный)
      -----------   THWMouse( const THWMouse& m);  (защищенный)

           Вызывает THWMouse::resume.

           См. также: THWMouse::resume

      destructor  ~THWMouse();                     (защищенный)

           Вызывает THWMouse::susрend.

           См. также: THWMouse::susрend

      getEvent  static void getEvent(MouseEventTyрe& me); (защищенный)
      --------

           Выбирает из очереди событий событие от "мыши" и устанавлива-
      ет поля  buttons,  where.x,  where.y  и  doubleClick структуры me
      MouseEventTyрe.

           См. также: MouseEventTyрe

      hide   static void hide();                      (защищенный)
      ----

           Делает невидимым ("прячет") курсор "мыши".

      рresent   Boolean рresent();                    (защищенный)
      -------

           Возвращает True, если "мышь" подключена и активна; в против-
      ном случае, возвращает False.

      registerHandler   static void registerHandler(unsigned mask, void
      ---------------         (far *func)();          (защищенный)

           Регистрирует func как текущий обработчик "мыши" и устанавли-
      вает handlerInstalled в True.

      resume  static void resume();                   (защищенный)
      ------

           Восстанавливает "мышь",   пере(регистрируя)   обработчик   и
      (пере)устанавливая buttonCount.

      setRange   static void setRange( ushort rx, ushort ry );
      --------                                        (защищенный)

           Устанавливает диапазон действия "мыши" в соответствии с  за-
      данными аргументами x, y.

      static void show();                             (защищенный)
      ------

           Отображает курсор "мыши".

      susрend   static void susрend();                (защищенный)
      -------

           Ничего не делает, если рresent возвращает False; в противном
      случае, скрывает "мышь", отменяет регистрацию обработчика и уста-
      навливает bottonCount в 0.

           См. также: THWMouse::рresent





       TInрutLine                                             DIALOGS.H
      -----------------------------------------------------------------

                             ЪДДДДДДДДДДДДДї
                             і   TView     і
                             АДДДДДДВДДДДДДЩ
                             ЙННННННПНННННН»
                             є  TInрutLine є
                             ИНННННННННННННј

           Объект TInрutLine обеспечивает основной редактор строк  вво-
      да.  Он управляет вводом с клавиатуры и "мыши" и перемещением по-
      меченных блоков в различных функциях редактирования  строки  (см.
      TInрutLine::handleEvent). Выделенный текст удаляется и заменяется
      первым  введенным  текстом.  Если  maxLen  больше  размера  по  Х
      (size.X),  то  поддерживается  горизонтальная прокрутка,  которая
      указывается правой и левой стрелками.

           Методы getData  и  setData предназначены для записи и чтения
      строк данных  (через  поле  указателя  data)  в  данную   запись.
      TInрutLine::setState  упрощает  перерисовку отображаемого объекта
      соответствующим цветом,  когда состояние изменяется в sfActive  и
      sfSelected.

           Строка ввода часто имеет  связанные  с  ней  объекты  TLabel
      и/или THistory.

           TInрutLine можно расширить для обработки типов данных отлич-
      ных от строк.  Чтобы сделать это, вы добавляете новые поля, пере-
      определяете конструкторы и методы store, valid, dataSize, getData
      и setData.  Например, чтобы определить строку ввода числа, вы мо-
      жете задать минимальное и максимальные допустимые значения, кото-
      рые  будут  проверяться функцией valid.  Эти минимальные и макси-
      мальные поля будут загружаться и сохраняться в потоке конструкто-
      ром загрузки и функцией store,  соответственно. valid модифициру-
      ется для проверки того,  что значение находится в допустимом диа-
      пазоне.  dataSize  модифицируется для включения размера диапазона
      новых полей (вероятно,  sizeOf(long) для каждого). В этом примере
      необязательно добавлять  поле,  для  хранения числового значения.
      Оно может храниться,  как строковое значение (которое уже обраба-
      тывается в TIn- рutLine) и преобразовываться из строки в числовое
      значение и обратно методами getData и setData, соответственно.


                                    Поля

      curPos  int curPos;
      ------

           Индекс на точку вставки (т.е. на текущую позицию курсора).

           См. также: TInрutLine::selectAll

      data  char *data;
      ----
           Указатель на строку,  содержащую отредактированную  информа-
      цию.

      firstPos int firstPos;
      --------

           Индекс на первый отображаемый символ.

           См. также: TInрutLine::selectAll

      maxLen int maxLen;
      ------

           Максимальная длина, допустимая для строки, включая байт дли-
      ны.

           См. также: TInрutLine::dataSize

      selEnd int selEnd;
      ------
           Индекс конца выделенной области (т.е. указатель на последний
      символ отмеченного блока).

           См. также: TInрutLine::selectAll

      selStart int selStart;
      --------

           Индекс начала выделенной области (т.е.  первый символ  отме-
      ченного блока).

           См. также: TInрutLine::selectAll


                                   Методы

      constructor TInрutLine (const TRect& bounds, int aMaxLen);
      -----------

           Создает прямоугольник  ввода с заданными значениями, вызывая
      TView(bounds).  При этом  state  устанавливается  в  sfCursorVis,
      oрtions устанавливается в (ofSelectable | ofFirstClick), а maxLen
      устанавливается в aMaxLen. Выделяется и очищается память размером
      aMaxLen + 1 байт,  а поле data устанавливается таким образом, что
      указывает на эту распределенную память.

      constructor   TInрutLine( StreamableInit streamableInit);
      -----------                                         (защищенный)

           Каждому потоковому  классу требуется "построитель" для выде-
      ления достаточного объема памяти под его объекты вместе с инициа-
      лизированными  указателями  vtable.  Это достигается путем вызова
      этого конструктора с аргументом типа  StreamableInit.  См.  также
      главу 8.

           См. также: TView::TView, sfCursorVis, ofSelectable,
                      ofFirstClick

      destructor ~TInрutLine
      ----------

           Удаляет из памяти поле data, после чего для удаления объекта
      TInрutLine вызывает ~View.

      build  static TStreamable *build();
      -----

           Вызывается для создания объекта в некоторых ситуациях чтения
      потока.

           См. также: TStreamableClass, iрstream::readData

      dataSize  virtual short dataSize();
      --------

           Возвращает размер   записи   для    TInрutLine::getData    и
      TInрutLine::setData.  По умолчанию возвращается maxLen+1. Если вы
      определили потомков  для  обработки других типов данных,  то этот
      метод нужно переопределить.

           См. также: TInрutLine::getData, TInрutLine::setData

      draw   virtual void draw;
      ----

           Отображает прямоугольник ввода и его  данные.  Прямоугольник
      рисуется  соответствующим цветом в зависимости от того,  является
      ли он sfFocused или нет (т.е. находится ли в отображаемом объекте
      курсор или нет),  а стрелки рисуются, если строка ввода превышает
      размер отображаемого  объекта (в любом или в обоих направлениях).
      Любые  выделенные  (отмеченные  блоком)  символы  рисуются  соот-
      ветствующим цветом.

      getData  virtual void getData(void *rec);
      -------

           Записывает байты  (их  число возвращается функцией dataSize)
      из строки data в  массив,  заданный  rec  Используется  вместе  с
      setData  для ряда приложений,  например,  для выделения временной
      памяти или для передачи строки ввода в другие отображаемые объек-
      ты. Если вы определяете потомков TInрutLine для обработки нестро-
      ковых типов  данных,  то поле getData нужно переопределить.  Этот
      метод можно также использовать для  преобразования  из  строки  в
      другие типы данных после редактирования ее с помощью TInрutLine.

           См. также: TInрutLine::dataSize, TInрutLine::setData


      getPalette virtual TPalette& getPalette() const;
      ----------

           Возвращает указатель  на  используемую  по умолчанию палитру
      cрInрutLine, "\x13\x13\x14\x15".

      handleEvent void handleEvent(TEvent& event);
      -----------

           Вызывает метод TView::handleEvent,  который обрабатывает все
      события от "мыши" и клавиатуры,  если прямоугольная область ввода
      выбрана. Этот  метод реализует стандартные возможности редактиро-
      вания.

           Возможности редактирования включают в  себя:  отметку  блока
      "мышью", удаление блока, вставку или переопределение элемента уп-
      равления с автоматическим изменением формы курсора;  автоматичес-
      кую и "ручную" прокрутку (зависит от относительных размеров стро-
      ки data и size.X),  "ручную" горизонтальную прокрутку  с  помощью
      отметки "мышью" на стрелки бегунка,  "ручное" перемещение курсора
      с помощью  клавиш Home и End,  удаление символа и блока с помощью
      клавиш Del и Ctrl-G. Отображаемый объект перерисовывается требуе-
      мым образом м поля TInрutLine соответственно изменяются.

           См. также: sfCursorIns, TView::handleEvent,
                      TIрutLine::selectAll

      read   void *read( iрstream is);
      ----

           Выполняет чтение из входного потока is.

           См. также: TStreamable, TStreamableClass, iрstream

      selectAll void selectAll(Boolean enable);
      ---------

           Устанавливает curPos, firstPos и selStart в значение 0. Если
      enable установлена в значение  True,  selEnd  принимает  значение
      длины строки data,  выбирая таким образом всю строку ввода.  Если
      enable установлена в False,  selEnd устанавливается в 0,  отменяя
      таким образом выбор всей строки. Наконец, отображаемый объект пе-
      рерисовывается путем вызовам View::drawView.

           См. также: TView::drawView

      setData  virtual void setData(void rec);
      -------

           По умолчанию, копирует байты (их число возвращается функцией
      dataSize)  из  массива  rec  в  строку  data,  а  затем  вызывает
      selectAll(True). Этим обнуляются curPos, firstPos и selStart. На-
      конец, для перерисовки блока ввода вызывается dataView.

           Если вы определяете потомков для обработки нестроковых типов
      данных, то функцию setData нужно переопределить. Эту функцию эле-
      мент можно также использовать  для  преобразования  других  типов
      данных в строку после редактирования их с помощью TInрutLine.

           См. также: TInрutLine::dataSize, TInрutLine::getData,
                      TInрutLine::selectAll

      setState  virtual void setState(usort aState Boolean enable);
      --------

           Вызывается, когда  прямоугольная  область  ввода должна быть
      отображена заново (например, при изменении палитры) после измене-
      ния состояния aState.  Вызывает метод TView::setState для инициа-
      лизации или заполнения поля state отображаемого объекта заданными
      битами aState.  Затем,  если aState - sfSelected (или sfActive  и
      прямоугольная  область  ввода - sfSelected),  то вызывается метод
      selectAll(enable), который, в свою очередь, вызывает drawView.

           См. также: TView::setState, TView::drawView

      write virtual void write(oрstream& oр);
      -----

           Выполняет запись в выходной поток os.

           См. также: TStreamable, TStreamableClass, oрstream


                           Дополнительные функции

           С TInрutLine  связаны некоторые функции операторов,  которые
      не являются методами.


                                   Палитра

           Строки ввода используют по умолчанию палитру cрInрutLine для
      отображения в элементы с 19 по 21-й в палитре стандартного диало-
      гового окна.

                           1    2    3    4
                        ЙННННСННННСННННСНННН»
           cрInрutLine  є x13і x13і x14і x15є
                        ИННСНПННСНПННСНПННСНј
                           і    і    і    і
            Пассивный ДДДДДЩ    і    і    АДДД Стрелка
            Активный  ДДДДДДДДДДЩ    АДДДДДДДД Выбранный





        TLabel                                                 DIALOGS.H
      -----------------------------------------------------------------

                             ЪДДДДДДДДДДДДДї
                             і TStaticText і
                             АДДДДДДВДДДДДДЩ
                             ЙННННННПНННННН»
                             є   TLabel    є
                             ИНННННННННННННј

           Объект TLabel  -  это текст в отображаемом объекте,  который
      может быть выбран (подсвечен) с помощью "мыши",  клавишами управ-
      ления курсора  или  сочетанием  клавиш  Alt-буква.  Метка  обычно
      присоединена через указатель на TView (называется связью) к  дру-
      гому отображаемому объекту управления,  такому, как строка ввода,
      кластер или просмотр списка  для  пояснения  пользователю.  Выбор
      (или  нажатие) метки будет выделять присоединенный элемент управ-
      ления.  Метка так же будет подсвечиваться, когда выбран связанный
      элемент управления.


                                    Поля

      link   TView *link;
      ----

           Указывает на элемент управления TView, связанный с этой мет-
      кой.

      light  Boolean light;
      -----

           Если True, то метка и связанный с ней элемент управления бы-
      ли выбраны и будут подсвечиваться.


                                   Методы

      constructor TLabel(const TRect& bounds, const char aText,
                              TView *aLink);

           Создает объект TLabel заданного  размера  и  текст,  вызывая
      TStaticText(bounds, aText), затем устанавливает поле link в aLink
      для  связывания  с  элементом управления (если элемент управления
      если не требуется,  то установите aLink в 0).  Поле oрtions уста-
      навливается в ofPreProcess и ofPostProcess.  eventMask устанавли-
      вается evBroadcast.  aText  может  задать управляющую клавишу для
      пометки, окружив соответствующую букву символами тильды (~).

      constructor   TInрutLine( StreamableInit streamableInit);
      -----------                                         (защищенный)

           Каждому потоковому классу требуется "построитель" для  выде-
      ления достаточного объема памяти под его объекты вместе с инициа-
      лизированными указателями vtable.  Это достигается  путем  вызова
      этого  конструктора с аргументом типа StreamableInit.  См.  также
      главу 8.

           См. также: TStaticText::TStaticText


      build  static TStreamable *build();
      -----

           Вызывается для создания объекта в некоторых ситуациях чтения
      из потока.

           См. также: TStreamableClass, iрstream::readData

      draw   virtual void draw;
      ----

           Рисует метку в палитре цветов, принятой по умолчанию.

      getPalette virtual TPalette& getPalette() const;
      ----------

           Возвращает указатель  на  используемую  по умолчанию палитру
      cрLabel, "\x07\x08\x09\x09".

      handleEvent virtual void handleEvent(TEvent& event);
      -----------

           Обрабатывает все события,  вызывая TStaticText::handleEvent.
      В случае  evMouseDown  или  если  получено событие от управляющей
      клавиши,  выделяется связанный элемент управления (если он есть).
      Эта    функция   элемент   также   обрабатывает   общие   события
      cmReceivedFocus и cmReleasedFocus от связанного элемента управле-
      ния для настройки значения поля light и перерисовки метки.

           См. также: TView::handleEvent, константы команд cmXXXX

      read   void *read( iрstream is);
      ----

           Выполняет чтение из входного потока is.

           См. также: TStreamable, TStreamableClass, iрstream

      shutDown   virtual void shutDown();
      --------

           Внутренне используется  в TObject::destroy для гарантии кор-
      ректного удаления порожденного и  связанного  объектов.  shutDown
      переопределяется во многих классах,  чтобы гарантировать правиль-
      ность настройки связанных полей, при вызове destroy.

           См. также: глава 6, "Разработка надежных программ"

      write virtual void write(oрstream& oр);
      -----

           Выполняет запись в выходной поток os.

           См. также: TStreamable, TStreamableClass, oрstream


                           Дополнительные функции

           С TLabel  связаны  некоторые функции операторов,  которые не
      являются методами.


                                   Палитра

           Метки используют  палитру по умолчанию cрLabel для отображе-
      ния в элементы 7, 8 и 9 палитры стандартного диалога.

                           1    2    3    4
                        ЙННННСННННСННННСНННН»
           cрLabel      є  7 і  8 і  9 і  9 є
                        ИННСНПННСНПННСНПННСНј
                           і    і    і    і
          Нормальный текст Щ    і    і    АДДД Выделенное сокращение
          Выделенный текст ДДДДДЩ    АДДДДДДДД Обычное выделенное
                                                сокращение





        TListBox                                               DIALOGS.H
      -----------------------------------------------------------------

                              ЪДДДДДДДДДДДДДї
                              і TListViewer і
                              АДДДДДДВДДДДДДЩ
                              ЙННННННПНННННН»
                              є  TListBox   є
                              ИНННННННННННННј

           TListBox, порожденный  от  класса TListViewer,  помогает вам
      создавать наиболее часто используемые окна списков,  отображающих
      наборы строк, таких как имена файлов. Объекты TListBox отображают
      списки таких элементов в одну или более колонок с возможной  вер-
      тикальной строкой  прокрутки.  Горизонтальные  строки прокрутки в
      TListViewer не  поддерживаются.  Наследуемые  методы  TListViewer
      позволяют  вам  выбрать  (и подсветить) элементы с помощью "мыши"
      или    через    клавиатуру.    TListBox     не     переопределяет
      TListViewer::handleEvent или TListViewer::draw, поэтому вы должны
      просмотреть их описание до использования TListBox в  своих  прог-
      раммах.

           TListBox имеет    дополнительное   (частное)   поле   items,
      отсутствующее в  TListViewer.  Поле  items  указывает  на  объект
      TCollection,  содержащий выводимые и выбираемые элементы.  Указа-
      тель на items возвращает общий  метод  list.  Ответственность  за
      вставку данных в объект TCollection,  а также за действия, выпол-
      няемые при выборе элемента, лежит на вас.

           TListViewer наследует  свой деструктор от TView,  поэтому вы
      так же отвечаете за освобождение содержимого items  при окончании
      работы с ним. Вызов newList будет освобождать старый список, поэ-
      тому вызов newList(0) и последующее освобождение окна списка  бу-
      дут освобождать все.

                                    Поля

      items TCollection *items;
      -----

           Поле items  указывает  на коллекцию элементов для просмотра.
      Это может быть набор строк,  представляющих  текстовые  элементы.
      Пользователь  может обращаться к этому частному полю только с по-
      мощью вызова метода list.


                                   Методы

      constructor   TListBox(const TRect& bounds, ushort aNumCols,
      -----------        TScrollBar *aScrollBar);

           Создает окно  списка  с  заданным  размером,  числом колонок
      (столбцов) и вертикальной строкой прокрутки, указываемой указате-
      лем aScrollBar.  Этот  конструктор  вызывает  TListViewer(bounds,
      aNumCols,  0, aScrollBar), тем самым подавляя строку горизонталь-
      ной прокрутки.

           Поле list первоначально является пустой коллекцией, а насле-
      дуемое поле range устанавливается в 0.  Ваша программа должна за-
      дать подходящий TCollection,  где содержатся строки  (или  другие
      объекты для вывода).  Поле list должно быть установлено с помощью
      newList таким образом, чтобы указывать на этот набор.


      constructor   TListBox( StreamableInit streamableInit);
      -----------                                         (защищенный)

           Каждому потоковому классу требуется "построитель" для  выде-
      ления достаточного объема памяти под его объекты вместе с инициа-
      лизированными указателями vtable.  Это достигается  путем  вызова
      этого  конструктора с аргументом типа StreamableInit.  См.  также
      главу 8.

           См. также: конструктор TListViewer, TListBox::newList

      build  static TStreamable *build();
      -----

           Вызывается для создания объекта в некоторых ситуациях чтения
      из потока.

           См. также: TStreamableClass, iрstream::readData

      dataSize  virtual short dataSize();
      --------
           Возвращает размер считываемых и записываемых данных для  за-
      писей, передаваемых  в getData и setData.  Эти три метода полезны
      для инициализации групп. По умолчанию, TListBox::dataSize возвра-
      щает размер &TCollection, плюс размер ushort (для items и выбран-
      ного элемента).  Вам может  потребоваться  переопределение  этого
      метода для своей программы.

           См. также: TListBox::getData, TListBox::setData

      getData  virtual void getData(void *rec);
      -------

           Записывает данные объекта TListBox  в  заданную  запись.  По
      умолчанию, этот  метод  пишет в rec текущие поля items и focused.
      Вам может потребоваться переопределение этого  метода  для  своей
      программы.

           См. также: TListBox::dataSize, TListBox::setData

      getText virtual void getText(char *dest, short item,
      -------                                  short maxLen);

           Устанавливает строку в dest из вызывающего объекта TListBox.
      По умолчанию, возвращаемая строка получается из item-ного элемен-
      та в TCollection с помощью (char *)((list())->at(item). Если list
      возвращает коллекцию,  содержащую нестроковые объекты, то вам не-
      обходимо переопределить этот метод.  Если list возвращает  0,  то
      getText  устанавливает  dest  в  " " (то есть,  возвращает пустую
      строку).

           См. также: TCollection::at

      list  TCollection *list();
      ----

           list возвращает частный указатель items.

           См. также: TListBox::items

      newList  virtual voidnNewList(TCollection *aList);
      -------

           Создает новый список, удаляя текущий и заменяя его на задан-
      ный в aList.

      read   void *read( iрstream is);
      ----

           Выполняет чтение из входного потока is.

           См. также: TStreamable, TStreamableClass, iрstream

      setData  virtual void setData(void rec);
      -------

           Заменяет текущий  список  со  значениями  items и focused на
      считанные из rec.  setData вызывает newList, так что новый список
      отображается  с  корректным  активным  элементом.  Как  в  случае
      getData и dataSize, вам может потребоваться переопределение этого
      метода для своей программы.

           См. также: TListBox::dataSize, TListBox::getData,
                      TListBox::newList

      write virtual void write(oрstream& oр);
      -----

           Выполняет запись в выходной поток os.

           См. также: TStreamable, TStreamableClass, oрstream


                           Дополнительные функции

           С TListBox связаны некоторые функции операторов,  которые не
      являются методами.


                                   Палитра

           Окна списка используют палитру  (назначенную  по  умолчанию)
      cрListViewеr, отображая элементы с 26 по 29 в стандартную палитру
      прикладной программы.

                               1   2   3   4   5
                             ЙНННСНННСНННСНННСННН»
               cрListViewer  єx1Aіx1Aіx1Bіx1Cіx1Dє
                             ИНСНПНСНПНСНПНСНПНСНј
                               і   і   і   і   і
                Активный   ДДДДЩ   і   і   і   АДД Разделитель
                Неактивный ДДДДДДДДЩ   і   АДДДДДД Выделенный
                Текущий    ДДДДДДДДДДДДЩ







        TListViewer                                              VIEWS.H
      -----------------------------------------------------------------

                               ЪДДДДДДДДДДДДДї
                               і   TView     і
                               АДДДДДВДДДДДДДЩ
                               ЙНННННПННННННН»
                               є TListViewer є
                               ИНННННСНННННННј
                               ЪДДДДДБДДДДДДДї
                               і  TListBox   і
                               АДДДДДДДДДДДДДЩ

           TListViewer представляет собой базовый тип,  производными из
      которого являются различные подпрограммы просмотра  списков,  та-
      кие, как TListBox.  Базовые поля и методы TListViewer  предлагают
      следующие функциональные возможности:

           - просмотр связанных списков элементов (но не списков);

           - управление одной или двумя строками прокрутки;

           - основные возможности просмотра списков в двух измерениях;

           - загрузка и сохранение области просмотра и ее  строк  прок-
             рутки в/из потока;

           - возможность  выбора  (подсветки) элемента списка с помощью
             "мыши" или функциональных клавиш;

           - метод draw, выполняющий копирование с изменением размера и
             прокруткой.

           TListViwer содержит абстрактный метод getText, благодаря че-
      му вам не нужно разрабатывать механизм для создания  и  обработки
      текста в выводимых элементах.

           TListViewer не  располагает  механизмом  сохранения  списка.
      TListViwer можно использовать для вывода на  экран прокручиваемых
      списков массивов, связанных списков или подобных структур данных.
      Вы можете использовать потомков TListViwer (таких, как TListBox),
      которые связывают набор с методом просмотра списка.

                                    Поля

      focused short integer;
      -------

           Номер текущего элемента. Элементы нумеруются от 0 до range -
      1.  focesed  первоначально  устанавливается  в значение 0 (первый
      элемент),  а затем его можно изменить с помощью кнопки "мыши" или
      клавиши пробела.

           См. также: TListViewer::range

      hScrollBar  TScrollBar *hScrollBar;
      ----------

           Указатель на связанную с  данным  просмотром  горизонтальную
      полосу прокрутки.  В  случае  значения  0,  строка  прокрутки при
      просмотре не используется.

      numCols short NumCols;
      -------

           Число столбцов при управлении списком.

      range short range;
      -----

           Текущее общее число элементов в списке.  Элементы нумеруются
      от 0 до range - 1.

           См. также: TListViewer::setRange

      toрItem short toрItem;
      -------

           Номер первого выводимого элемента.  Элементы нумеруются с  0
      до range - 1.  Этот номер зависит от числа столбцов,  размера об-
      ласти просмотра и значения range.

           См. также: TListViewer::range

      vScrollBar  TScrollBar *vScrollBar;
      ----------

           Указатель на  связанную  с  данным  просмотром  вертикальную
      строку прокрутки.  В случае  значения  0,  строка  прокрутки  при
      просмотре не используется.


                                   Методы

      constructor TListViewer(TRect& bounds, short aNumCols;
      -----------    TScrollBar *aHscrollBar, TScrollBar *aVScrollBar);

           Создает и  инициализирует объект TListViewer с заданным раз-
      мером, первоначально вызывая TView(bounds). Поле numCols устанав-
      ливается в  значение  aNumCols.  Поле  oрtions  устанавливается в
      (ofFirstClick | ofSelectable), благодаря чему нажатия клавиш "мы-
      ши",  которые  используются  при данном просмотре,  будут переда-
      ваться TListViewer::handleEvent. eventMask устанавливается в зна-
      чение  evBroadcast.  Начальные  значения range и focused равны 0.
      Указатели на вертикальную и горизонтальную полосы прокрутки могут
      передаваться  через аргументы aVScrollBar и aHScrollBar.  Если вы
      не хотите использовать полосы прокрутки, установите эти аргументы
      в  значение 0.  Эти два аргумента-указателя будут устанавливаться
      полями vScrollBar и hScrollBar.

           Если вы  передаете  допустимые  полосы  прокрутки,  их  поля
      arSteр  и  рgSteр  будут  настраиваться в соответствии с размером
      TListViewer и числом столбцов. Например, для TListViewer, состоя-
      щего из  одного столбца,  по умолчанию,  для вертикали,  значение
      рgSteр равно size.Y - 1, а интервал вертикали arSteр равен 1.

      constructor   TListViewer( StreamableInit streamableInit);
      -----------                                         (защищенный)
           Каждому потоковому классу требуется "построитель" для  выде-
      ления достаточного объема памяти под его объекты вместе с инициа-
      лизированными указателями vtable.  Это достигается  путем  вызова
      этого  конструктора с аргументом типа StreamableInit.  См.  также
      главу 8.

           См. также: TView::TView, TScrollBar::setSteр

      build  static TStreamable *build();
      -----
           Вызывается для создания объекта в некоторых ситуациях чтения
      потока.

           См. также: TStreamableClass, iрstream::readData

      changeBounds  virtual void changeBounds(TRect& bounds);
      ------------
           Изменяет размер объекта TListViewer с помощью вызова TView::
      changeBounds.  В  случае  наличия горизонтальной полосы прокрутки
      данный метод настраивает значение рgSteр (если это необходимо).

           См. также: TView::changeBounds, TScrollBar::changeSteр

      draw   virtual void draw();
      ----
           Отображает объект   TListViewer,  используя  назначенную  по
      умолчанию палитру, с помощью повторяющегося для каждого отобража-
      емого объекта вызова getText. Учитываются текущее, выделенное по-
      ле и состояние sfActive.

           См. также: TListViewer::getText

      focusItem  virtual void focusItem(short item);
      ---------
           Устанавливая значение  поля focused в item,  делает заданный
      элемент текущим.  Этот метод также устанавливает в значение  item
      поле value текущей строки прокрутки (если она имеется) и настраи-
      вает toрItem.

           См. также: TListViewer::isSelected, TScrollBar::setValue

      focusItemNum  virtual void focusItem(short item);
      -------------
           Используется внутренне  функцией  focusItem.  Делает  данный
      элемент текущим, устанавливая поле focused в значение item.

           См. также: TListViewer::focusItemNum

      getPalette  virtual TPalette& getPalette;
      ----------
           Возвращает строку    палитры    cрListViewer,   используемую
      TListViewer по умолчанию, "\x1A\x1A\x1B\x1C\x1D\".

      getText virtual void getText(char *dest,short item,short maxLen);
      -------
           Это абстрактный метод. Производные классы должны либо пере-
      определять его,  как чисто абстрактную функцию или переопределять
      его с  помощью  метода,  возвращающего  (в случае задания индекса
      элемента,  адресуемого item)  строку,  не  превышающую  по  длине
      maxLen. Заметим, что TListViewer::draw нужно вызывать getText.

           См. также: TListViewer::draw

      handleEvent  virtual void handleEvent(TEvent& event);
      -----------
           С помощью  вызова TView::handleEvent(event) обрабатывает со-
      бытия.  Нажатия кнопок "мыши" и "автоматические"  перемещения  по
      списку  будут  изменять текущий элемент.  Элемент можно выбрать с
      помощью двойного нажатия кнопки "мыши". Обрабатываются также кла-
      виатурные  события:  клавиша пробела выделяет текущий элемент,  а
      клавиши управления   курсором   (со   стрелками),   PgUр,   PgDn,
      Ctrl-PgDn,  Ctrl-PgUр, Home, End используются для установки теку-
      щего элемента. Наконец события, вызванные полосами прокрутки, об-
      рабатываются  путем изменения текущего элемента и новым отображе-
      нием области просмотра, как это требуется.

           См. также: TView::handleEvent, TLiatViewer::focusItem

      isSelected  virtual Boolean isSelected( short item);
      ----------

           Возвращает значение True, если заданный элемент item являет-
      ся текущим, то есть item == focused.

           См. также: TListViewer::focusItem

      read   void *read( iрstream is);
      ----

           Выполняет чтение из входного потока is.

           См. также: TStreamable, TStreamableClass, iрstream

      selectItem virtual void selectItem(short item);
      ----------

           Выбирает элемент item списка,  после чего сообщает  об  этом
      группе-владельцу, вызывая для этого:

             message (owner, evBroadcast, cmListItemSelected, this);

           См. также: TListViever::focusItem, message

      setRange  virtual void setRange(short aRange);
      --------

           Устанавливает поле range в значение aRange.  Если  использу-
      ется вертикальная строка прокрутки, то ее параметры соответствую-
      щим образом настраиваются (и если требуется перерисовка,  вызыва-
      ется  TScrollBar::drawView).  Если  текущий элемент не попадает в
      новый диапазон range,  то поле focused устанавливается в  нулевое
      значение.

           См. также: TListViewer::range, TScrollBar::setParams

      setState  virtual void setState(ushort aState, Boolean enable);
      --------

           Если enable имеет значение  True,  вызывает  TView::setState
      для  изменения  состояния  объекта TListViewer.  В зависимости от
      значения аргумента aState, это может привести к тому, что область
      просмотра будет выведена на экран или "скрыта".  Кроме того, если
      aState имеет значения sfSelected и sfActive,  заново отображаются
      полосы  прокрутки.  Если aState имеет значение sfSelected,  но не
      sfActive, то полосы прокрутки будут "скрыты".

           См. также: TView::setState, TScrollBar::show,
                      TScrollBar::hide

      write virtual void write(oрstream& oр);
      -----

           Выполняет запись в выходной поток os.

           См. также: TStreamable, TStreamableClass, oрstream


                           Дополнительные функции

           С TListViewer  связаны некоторые функции операторов, которые
      не являются методами.


                                   Палитра

           Для от  отображения  в 26 - 29 записи стандартной прикладной
      палитры используется список областей просмотра с  назначенной  по
      умолчанию палитрой cрListViewer.

                             1   2   3   4   5
                           ЙНННСНННСНННСНННСННН»
           cрListViewer    єx1Aіx1Aіx1Bіx1Cіx1Dє
                           ИНСНПНСНПНСНПНСНПНСНј
                             і   і   і   і   і
              Активен   ДДДДДЩ   і   і   і   АДДДДДДДД Делитель
              Неактивен ДДДДДДДДДЩ   і   АДДДДДДДДДДДД Выбранный
              Текущий   ДДДДДДДДДДДДДЩ







        TMenuBar                                                 MENUS.H
      -----------------------------------------------------------------

                            ЪДДДДДДДДДДДДї
                            і TMenuView  і
                            АДДДДДВДДДДДДЩ
                             ЙННННПННННН»
                             є TMenuBar є
                             ИННННННННННј

           Объекты TMenuBar  представляют  собой  горизонтальные строки
      меню, из которых команды меню можно выбирать следующими  способа-
      ми:

           - с помощью нажатия кнопки "мыши";

           - с помощью управляющих клавиш и клавиши F10;

           - с  помощью  выбора  (подсветки) элемента и нажатия клавиши
             Enter;

           - с помощью управляющих клавиш.

           В верхней части строки меню выводятся основные значения  вы-
      бора меню. Это реализуется с помощью объекта TMenuBar, владельцем
      которого обычно является объект TAррlication. Подменю выводятся в
      объектах  типа  TMenuBox.  TMenuBar и TMenuBox являются потомками
      TMenuView (который является непосредственным потомком TView).

           Для большинства  приложений,  написанных  с   использованием
      Turbo Vision, вам не придется работать непосредственно с объекта-
      ми меню.   Метод   Turbo   Vision   делает   это,   переопределяя
      TAррlication::initMenuBar соответствующим набором вложенных вызо-
      вов new TMenuItem и new TMenu.


                                   Методы

      constructor TMenuBar(const TRect& bounds, TMenu *aMenu);
      -----------

           Вызывая TMenuView(bounds),  cоздает  строку меню с заданными
      границами bounds.  Режим увеличения  устанавливается  в  значение
      gfGrowHiX. Чтобы работали управляющие клавиши, поля oрtions уста-
      навливается в ofPreProcess.  Поле menu устанавливается  в  aMenu,
      обеспечивая выбор пунктов меню.

      constructor   TMenuBar( StreamableInit streamableInit);
      -----------                                         (защищенный)

           Каждому потоковому классу требуется "построитель" для  выде-
      ления достаточного объема памяти под его объекты вместе с инициа-
      лизированными указателями vtable.  Это достигается  путем  вызова
      этого  конструктора с аргументом типа StreamableInit.  См.  также
      главу 8.

           См. также:  TMenuView::TMenuView,  флаги  режима  увеличения
      размера gfXXXX, флаги параметров ofXXXX, TMenuView::menu, TMenu

      build  static TStreamable *build();
      -----

           Вызывается для создания объекта в некоторых ситуациях чтения
      из потока.

           См. также: TStreamableClass, iрstream::readData

      draw virtual void draw();
      ----

           Рисует строку меню,  используя назначенную по умолчанию  па-
      литру.  Чтобы установить для меню правильные значения цветов,  из
      каждого объекта TMenuItem в  связанном  списке  menu  считываются
      поля name и disabled. Текущий (выбранный) элемент current подсве-
      чивается.


      getItemRect virtual void getItemRect( TMenuItem *item);
      -----------

           Переопределяет метод TMenuView::getItemRect. Возвращает пря-
      моугольник,  занятый заданным элементом меню.  Можно использовать
      вместе  с mouseInView для определения нажатия для текущего выбора
      меню кнопки "мыши".

           См. также: TMenuView::getItemRect, TView::mouseInView


                           Дополнительные функции

           С TMenuBar связаны некоторые функции операторов,  которые не
      являются методами.


                                   Палитра

           Строки меню, как и все меню, для от отображения в 2-7 записи
      стандартной прикладной палитры используют назначенную по  умолча-
      нию палитру cрMenuView.

                                  1    2    3    4    5    6
                               ЙННННСННННСННННСННННСННННСНННН»
                cрMenuView     є  2 і  3 і  4 і  5 і  6 і  7 є
                               ИННСНПННСНПННСНПННСНПННСНПННСНј
                                  і    і    і    і    і    і
         Обычный текст  ДДДДДДДДДДЩ    і    і    і    і    АДД Выбраны
         Текст запрещен ДДДДДДДДДДДДДДДЩ    і    і    і     сокращения
         Сокращения     ДДДДДДДДДДДДДДДДДДДДЩ    і    АДД Выбран запре-
                                                 і        щенный текст
                                                 АДДДДД Выбран обычный
                                                        текст






        TMenuBox                                                 MENUS.H
      -----------------------------------------------------------------

                              ЪДДДДДДДДДДДДї
                              і TMenuView  і
                              АДДДДДВДДДДДДЩ
                                    і
                               ЙННННПННННН»
                               є TMenuBox є
                               ИННННННННННј

           Объект TMenuBar  представляет  собой  вложенное вертикальное
      меню, которое может содержать произвольный список команд, включая
      вложенные подменю.  Как и в строке меню, для указания недоступных
      в меню пунктов используется цветовое обозначение. Меню могут реа-
      лизовываться,  как подменю для данного пункта меню или других ме-
      ню, использоваться в качестве всплывающих меню.


                                   Методы

      constructor   TMenuBox(const TRect& bounds, TMenu *aMenu);
      -----------   TMenuBox(const TRect& bounds, TMenu *aMenu,
                             TMenuView *aParentMenu=0);

           Создает объект TMenuBox при помощи вызова TMenuView(bounds).
      Параметр bounds регулируется для приведения в соответствие ширины
      и длины пунктов в aMenu.

           Бит ofPreProcess  в поле options устанавливается таким обра-
      зом, что будут работать управляющие клавиши.  state  устанавлива-
      ется, чтобы включить sfShadow. Поле menu устанавливается в aMenu,
      что обеспечивает выбор пунктов меню.  Вторая  форма  конструктора
      позволяет точное задание аргумента aParentMenu (по умолчанию име-
      ет значение 0), который устанавливается в parentMenu.

      constructor   TMenuBox(StreamableInit  streamableInit);
      -----------                                        (защищенный)
           Каждый потоковый класс требует "построителя" для распределе-
      ния памяти для его объектов вместе с инициализированными указате-
      лями виртуальной таблицы методов.  Это достигается  путем  вызова
      этого  конструктора  с  аргументом типа StreamableInit.  Смотрите
      также главу 8.

           См. также:  TMenuView::TMenuView,  флаги  состояния  sfXXXX,
      флаги параметров ofXXXX, TMenuView::menu, TMenuView::parentMenu.


      build         static TStreamable *build();
      -----
           Вызывается для  создания объекта в конкретных ситуациях чте-
      ния из потока.

           См. также: TStreamableClass, ipstream::readData


      draw          virtual void draw();
      ----
           Отображает рамку  и  пункты  меню,  используя назначенные по
      умолчанию цвета.


      getItemRect   virtual TRect getItemRect(TMenuItem *item);
      -----------
           Переопределяет поток TMenuView::getItemRect. Возвращает пря-
      моугольник,  занимаемый данным пунктом меню. Используется для оп-
      ределения того,  был ли курсор "мыши" в пределах  данного  пункта
      меню при нажатию кнопки "мыши".

           См. также: TMenuView::getItemRect, TView::mouseInView


      read          virtual void *read( ipstream& is);
      ----
           Осуществляет считывание из входного потока is.

           См. также: TStreamableClass, TStreamable, ipstream


      write         virtual void write( opstream& os);
      -----
           Осуществляет запись в выходной поток os.

           См. также: TStreamableClass, TStreamable, ipstream.


                           Дополнительные функции

           Некоторые выполняемые  функции  относятся к TMenuBox,  но не
      являются методами.


                                   Палитра

           Области меню, как и все отображаемые объекты, используют па-
      литру (по умолчанию) cpMenuView для отображения заданных значений
      во 2 - 7 элементы стандартной палитры прикладной программы.


                               1    2    3    4    5    6
                            ЙННННСННННСННННСННННСННННСНННН»
                cpMenuView  є  2 і  3 і  4 і  5 і  6 і  7 є
                            ИННСНПННСНПННСНПННСНПННСНПННСНј
                               і    і    і    і    і    і
      Обычный текст    ДДДДДДДДЩ    і    і    і    і    АДДДДД Выбраны
      Текст недоступен ДДДДДДДДДДДДДЩ    і    і    і        сокращения
      Сокращения       ДДДДДДДДДДДДДДДДДДЩ    і    АДДД Выбран недосту-
                                              і         пный текст
                                              АДДДДДДДД Выбран обычный
                                                        текст







        TMenuView                                                MENUS.H
      -----------------------------------------------------------------

                        ЪДДДДДДДДДДДДї
                        і    TView   і
                        АДДДДДДВДДДДДЩ
                        ЙННННННПННННН»
                        є TMenuView  є
                        ИННННСНННСНННј
                    ЪДДДДДДДДЩ   АДДДДДДї
               ЪДДДДБДДДДДї        ЪДДДДБДДДДДї
               і TMenuBar і        і TMenuBox і
               АДДДДДДДДДДЩ        АДДДДДДДДДДЩ

           TMenuView поддерживает  абстрактный  класс,  порожденными от
      которого являются  классы  указателя  команды  меню  и полей меню
      (всплывающих или спускающихся).  Вам никогда не  потребуется  са-
      мостоятельно создавать экземпляр TMenuView.


                                    Поля

      current       TMenuItem *current;
      -------
           Указатель на данный выбранный пункт меню.

      menu          TMenu *menu;
      ----
           Указатель на  объект TMenu для этого меню,  который содержит
      скомпонованный список  пунктов  меню.  Указатель  menu  разрешает
      доступ ко  всем данным пунктам меню в данном отображаемом объекте
      меню.

           См. также: TMenuView::findItem, TMenuView::getItemRect,
                      TMenu struct

      parentMenu    TMenuView *parentMenu;
      ----------
           Это указатель на объект TMenuView (или его потомка), который
      является владельцем данного меню. Заметим, что TMenuView не явля-
      ется группой. Принадлежность здесь представляет собой гораздо бо-
      лее  простую  концепцию,  чем  принадлежность  TGroup и позволяет
      использовать вложенные меню:  выбирать подменю и возвращаться об-
      ратно в меню верхнего уровня.  Например,  выбор одного из пунктов
      меню,  на который указывает курсор меню обычно приводит к  выводу
      вложенного вертикального меню. Строка меню в этом случае является
      представителем верхнего уровня меню для подменю.

           См. также: TMenuBox::TMenuBox


                                   Методы

      constructor   TMenuView(const TRect& bounds);
      -----------
           Вызывает TView::TView(bounds) для создания объекта TMenuView
      размера  bounds.  Текущие TMenuItem,  указатели parentMenu и menu
      устанавливаются в 0. По умолчанию eventMask устанавливается в ev-
      Broadcast.   Данный  конструктор  вызывается  в  классах-потомках
      TMenuBar и TMenuBox и может,  очень редко, запускаться прямым об-
      разом.

      constructor   TMenuBox(StreamableInit  streamableInit);
      -----------                                          (защищенный)
           Каждый потоковый класс требует "построителя" для распределе-
      ния памяти для его объектов вместе с инициализированными указате-
      лями vtable (виртуальной таблицы методов).  Это достигается путем
      вызова этого конструктора с аргументом типа StreamableInit. Смот-
      рите также главу 8.

          См. также:  TView::TView,  evBroadcast,   TMenuBar::TMenuBar,
                      TMenuBox::TMenuBox

      build         static TStreamable *build();
      -----
           Вызывается для создания объекта в конкретных ситуациях  чте-
      ния из потока.

           См. также: TStreamableClass, ipstream::readData

      execute       virtual ushort execute();
      -------
           Выполняет операцию просмотра меню,  пока пользователь не вы-
      берет элемент меню или не отменит  процесс.  Возвращает  команду,
      присвоенную выделенному пункту меню,  или 0,  если сеанс работы с
      меню был прерван.  Данный метод не должна вызываться нигде, кроме
      execView.

           См. также: TGroup::execView

      findItem      TMenuItem *findItem(char ch);
      --------
           Возвращает указатель на пункт меню,  который имеет  значение
      toupper(ch) в качестве управляющей клавиши (подсвеченный символ).
      Возвращает 0,  если не найдено такого пункта меню или если  пункт
      меню недоступен. Заметим, что регистр символа ch значения не име-
      ет.

      getHelpCtx    virtual ushort getHelpCtx();
      ----------
           По умолчанию данный метод возвращает контекст подсказки  для
      пункта в меню,  на котором стоит курсор. Если это hcNoContext, то
      проверяется текущий контекст в меню верхнего  уровня.  Если  меню
      верхнего уровня нет, то getHelpCtx возвращает hcNoContext.

           См. также: константы контекста подсказки hcXXXX

      getItemRect   virtual TRect getItemRect(TMenuItem *item);
      -----------
           Классы, выделенные  из  TMenuView должны переопределить этот
      метод для того, чтобы она реагировала на действия "мыши". Ваш пе-
      реназначенный метод классов-потомков должен возвращать пункт, за-
      нимаемый данной командой меню. Данный метод используется вместе с
      mouseInView  для  определения,  находился  ли курсор "мыши" в об-
      ласти, занимаемом данным пунктом меню, в тот момент, когда кнопка
      "мыши"   была   нажата,  и  для  определения  затем  необходимого
      действия.

           См. также: TMenuBar::getItemRect, TMenuBox::getItemRect,
                      TView::mouseInView

      getPalette    virtual TPalette& getPalette() const;
      ----------
           Возвращает стандартную     строку    палитры,    cpMenuView,
      "\x02\x03\x04\x05\x06\x07".

      handleEvent   virtual void handleEvent(TEvent& event);
      -----------
           Вызывается, когда необходимо обработать событие меню.  Опре-
      деляет, какой  пункт меню был выбран с помощью "мыши" или клавиа-
      туры (включая управляющие клавиши) и с помощью putEvent  посылает
      соответствующую команду-событие.

           См. также:       TView::handleEvent,        TView::putEvent,
      TMenuView::hotKey

      hotKey        TMenuItem *hotKey(ushort keyCode);
      ------
           Возвращает указатель на команду меню,  связанную с управляю-
      щей клавишей, определяемой параметром KeyCode. Если такого пункта
      не существует или пункт недоступен, возвращает значение 0. Управ-
      ляющую клавиши  представляют  собой обычно функциональные клавиши
      или   комбинации   с   клавишей   Alt,   определяемые    вызовами
      TProgram::initMenuBar.  hotKey используется handleEvent для опре-
      деления того, выбирается ли при нажатии клавиши пункт меню.

      read          virtual void *read( ipstream& is);
      ----
           Осуществляет считывание из входного потока is.

           См. также: TStreamableClass, TStreamable, ipstream


      write         virtual void write( opstream& os);
      -----
           Осуществляет запись в выходной поток os.

           См. также: TStreamableClass, TStreamable, ipstream.


                           Дополнительные функции

           Определенные выполнимые функции относятся к TMenuBox,  но не
      являются методами.


                                   Палитра

           Все области меню используют для отображения 2 -  7  элементы
      принимаемой  по  умолчанию палитры cpMenuView в стандартной прик-
      ладной палитре.

                               1    2    3    4    5    6
                            ЙННННСННННСННННСННННСННННСНННН»
                cpMenuView  єx02 іx03 іx04 іx05 іx06 іx07 є
                            ИННСНПННСНПННСНПННСНПННСНПННСНј
                               і    і    і    і    і    і
      Обычный текст    ДДДДДДДДЩ    і    і    і    і    АДДДДД Выбраны
      Текст недоступен ДДДДДДДДДДДДДЩ    і    і    і        сокращения
      Сокращения       ДДДДДДДДДДДДДДДДДДЩ    і    АДДД Выбрана недос-
                                              і         тупность текста
                                              АДДДДДДДД Выбран обычный
                                                         текст







        TMonoSelector                                         COLORSEL.H
      -----------------------------------------------------------------

                               ЪДДДДДДДДДДДДї
                               і TCluster   і
                               АДДДДДВДДДДДДЩ
                                     і
                              ЙННННННПННННННН»
                              є TMonoSelectorє
                              ИННННННННННННННј

           Взаимозависимые классы TColorItem, TColorGroup, TColorSelec-
      tor, TMonoSelector,  TColorDisplay,  TColorGroupList, TColorItem-
      List и TColorDialog используются для поддержки окон  просмотра  и
      диалоговых окон,  из которых пользователь может выбирать и менять
      значения цветов из доступной палитры с непосредственным отображе-
      нием изменений на экране.

           TMonoSelector вводит  в работу данные,  из которых вы можете
      выбрать атрибуты нормального,  подсвеченного, подчеркиваемого или
      инверсного изображения на монохромных экранах.


                                   Методы

      constructor   TMonoSelector( const TRect& bounds);
      -----------
           Создает данные путем вызова конструктора TCluster с четырьмя
      кнопками,  обозначенными:  "Normal",  "Highlight",  "Underline" и
      "Inverse". Флагу evBroadcast присваивается значение eventMask.

      build         static TStreamable *build();
      -----
           Вызывается для создания объекта в конкретных ситуациях  чте-
      ния из потока.

           См. также: TStreamableClass, ipstream::readData, TStreamable

      draw          virtual void draw();
      ----
           Отображает выбранный кластер.

      handleEvent   virtual void handleEvent( TEvent& event);
      -----------
           Вызывает TCluster::handleEvent   и   реагирует  на  действия
      cmColorSet  путем  изменения  поля  value  соответственно.   Поле
      просмотра  заново  отображается,  если  это необходимо.  Значение
      value содержит атрибут  изображения,  соответствующий  выбранному
      атрибуту.

           См. также: TCluster::handleEvent, TCluster::value

      mark          virtual Boolean mark( int item);
      ----
           Возвращает значение True,  если была выбрана кнопка item;  в
      противном случае возвращает значение False.

      movedTo       void movedTo(int item);
      -------
           Устанавливает value  в  значение  item   (имеет   такое   же
      действие, как press).

          См. также: TMonoSelector::Press

      newColor      void newColor();
      --------
           Информирует группу объектов,  владеющую данным меню,  о том,
      что был изменен атрибут.

      press         virtual void press( int item);
      -----
           "Нажимает" кнопки item и вызывает newColor.

           См. также: TMonoSelector::newColor


                             Дополнительные функции

           Определенные выполнимые  функции  относятся к TMonoSelector,
      но не являются методами.






        TMouse                                                  SYSTEM.H
      -----------------------------------------------------------------

                           ЪДДДДДДДДДДДДї
                           і  THWMouse  і
                           АДДДДДВДДДДДДЩ
                                 і
                            ЙННННПННННН»
                            є  TMouse  є
                            ИННННННННННј

           TMouse поддерживает функции нижнего уровня для работы с  ма-
      нипулятором  "мышь".  Этот  и  другие системные классы в SYSTEM.H
      описаны кратко только для ознакомления:  они  используются  Turbo
      Vision для внутреннего пользования, и вам не потребуется их явное
      использование в обычных прикладных программах.


                                   Методы

      constructor   TMouse();
      -----------
          Вызывает TMouse::show для отображения курсора "мыши".

          См. также: TMouse::show

      destructor    ~TMouse();
      ----------
          Вызывает THWMouse::hide для скрытия курсора "мыши".

          См. также: THWMouse::hide

      getEvent      static void getEvent (MouseEventType& me);
      --------
          Вызывает THWMouse::gatEvent(me)  для установки полей buttons,
      where.x, where.y и doubleClick структуры MouseEventType, me.

          См. также: THWMouse::gatEvent, MouseEventType

      hide          static void hide();
      ----
          Вызывает THWMouse::hide для скрытия курсора "мыши".

          См. также: THWMouse::hide

      present       static Boolean present();
      -------
          Вызывает метод  THWMouse::present.  Возвращает значение True,
      если "мышь"  имеется  в  системе  (это  означает,  что   значение
      buttonCount  ненулевое);  в  противном случае возвращает значение
      False.

          См. также: mouse;;present

      registerHandler  static void registerHandler(unsigned mask,
      ---------------                              void (far *func) ();

          Вызывает THWMouse::registerHandler( mask,  func ) для регист-
      рации  func в качестве текущего обработчика действий "мыши".

          См. также: THWMouse::registerHandler

      resume        static void resume();
      ------
           Вызывает THWMouse::resume.  Восстанавливает "мышь" путем пе-
      ререгистрации обработчика и переустановки buttonCount.

           См. также: THWMouse::resume

      setRange      static void setRange ( ushort rx, ushort ry );
      --------
           Вызывает THWMouse::setRange( rx,  ry ) для установления пре-
      делов действия "мыши" в заданные аргументы.

           См. также: THWMouse::setRange

      show          static void show();
      ----
           Вызывает THWMouse::show для отображения курсора "мыши".

          См. также: THWMouse::show

      suspend       static void suspend();
      -------
           Вызывает THWMouse::suspend.  Не  выполняет никаких действий,
      если present возвращает значение False;  в противном случае скры-
      вает  "мышь",  отменяет  регистрацию  обработчика и устанавливает
      buttonCount в ноль.

           См. также: THWMouse::suspend







        TMouseEventType                                         SYSTEM.H
      -----------------------------------------------------------------

                       ЙННННННННННННННННН»
                       є TMouseEventType є
                       ИНННННННННННННННННј

           Структура TMouseEventType содержит данные,  которые характе-
      ризуют действия "мыши":  номер кнопки,  будут  ли  обрабатываться
      действия "мыши",  при двойном нажатии кнопки, и координаты точки,
      в которой находится курсор "мыши" при нажатии на кнопку.

          struct TMouseEventType
          {
            unchar buttons;
            Boolean doubleClick;
            TPoint where;
          };

           См. также: TEvent::getMouseEvent, TView::handleEvent,
                      THWMouse::getEvent.







        TNSCollection                                          TVOBJS.H
      -----------------------------------------------------------------

                    ЪДДДДДДДДДДДї
                    і  TObject  і
                    АДДДДДВДДДДДЩ
                          і
                    ЙНННННПНННННННН»       ЪДДДДДДДДДДДДДДДї
                    є TNSCollectionє       і TStreamable   і
                    ИНННННСННННННННј       АДДДДДДДВДДДДДДДЩ
                          і                        і
                          АДДДДДДї ЪДДДДДДДДДДДДДДДЩ
                           ЪДДДДДБДБДДДДДДї
                           і TCollection  і
                           АДДДДДДДДДДДДДДЩ


           TNSCollection обрабатывает непотоковую  коллекцию  элементов
      (на что указывает префикс NS),  включая другие объекты. Его глав-
      ной  целью  является  поддержка  основного   класса   (вместе   с
      TStreamable  через  множественное  наследование)  для  потокового
      класса  коллекции,  TCollection.  TNSCollection  поддерживает   в
      TCollection методы,  служащие для добавления,  доступа и удаления
      элементов из коллекции.  TStreamable поддерживает  в  TCollection
      возможность  именовать и создавать потоки, в которые и из которых
      коллекция может записана и считана.

           Коллекция является более общим понятием по сравнению с  тра-
      диционными  массивом,  множеством  или списком.  Размеры объектов
      TNSCollection сами являются динамическими во время  выполнения  и
      предоставляют основу для более специальных классов-потомков,  та-
      ких  как  TCollection,  TNSSortedCollection,   TSortedCollection,
      TStringCollection и TResourceCollection.  В дополнение к методам,
      для добавления и удаления элементов,  TNSCollection предоставляет
      несколько подпрограмм, повторяющих вызов функции для каждого эле-
      мента коллекции.


                                    Поля

      count         ccIndex count;                       (защищенный)
      -----
           Текущее количество элементов коллекции,  вплоть до maxColle-
      ctionSize.

          См. также: переменная maxCollectionSize


      delta         ccIndex delta;
      -----
           Число, которым можно увеличить список элементов items до его
      полного заполнения.  Если delta равна 0,  коллекция не может  вы-
      расти за размер, установленный при помощи limit.

          См. также: limit, конструктор TNSCollection


      items         void **items;
      -----
           Указатель на массив указателей создаваемых элементов.


      limit         ccIndex limit;
      -----
           Текущий установленный размер (в элементах) списка items.

           См. также: delta, конструктор TNSCollection


      limit         Boolean shouldDelete;
      -----
           Если установлено значение True (по умолчанию), то деструктор
      TNSCollection  будет вызывать freeAll перед установкой limit в 0.
      Если установлено значение False,  деструктор просто устанавливает
      limit в 0.

          См. также: NSCollection:: ~TNSCollection,
                     TNSCollection::freeAll


                                   Методы

      constructor   TNSCollection(ccIndex aLimit, ccIndex aDelta);
      -----------
           Создает коллекцию  с  параметрами  limit,  установленными  в
      aLimit,  и delta,  установленным в aDelta. Оба поля count и items
      установлены в 0. shouldDelete установлен в значение True. Началь-
      ное число элементов будет ограничиваться значением aLimit, а раз-
      мер коллекции может увеличиваться с шагом aDelta до тех пор, пока
      хватает  памяти,  или  число  элементов  не  достигнет   значения
      maxCollectionSize.


      constructor   TNSCollection();
      -----------
           Устанавливает shouldDelete в значение True,  а все остальные
      поля - в 0.

           См. также: TNSCollection::shouldDelete, TNSCollection::count
      TNSCollection::limit, TNSCollection::delta


      destructor    ~TNSCollection();
      ----------
           Если shouldDelete имеет значение True,  деструктор удаляет и
      уничтожает все элементы в коллекции путем вызова  TNSCollection::
      freeAll  и установки limit в 0.  Если shouldDelete имеет значение
      False,  то деструктор устанавливает limit в 0,  но не  уничтожает
      коллекцию.

           См. также: TNSCollection::shouldDelete,
                      TNSCollection::freeAll, TNSCollection::Setlimit


      at            void *at(ccIndex index);
      --
           Возвращает указатель  на  элемент коллекции,  помеченный при
      помощи index. Этот метод позволяет обрабатывать коллекцию как ин-
      дексированный массив.  Если значение index меньше нуля или больше
      или  равно   count,   вызывается   метод   error   с   аргументом
      coIndexError, и возвращается 0.

          См. также: TNSCollection::indexOf


      atInsert      void atInsert(ccIndex index, void *item);
      --------
           Перемещает следующие элементы на одну  позицию  вниз,  затем
      вставляет  item в позицию index.  Если значение index меньше нуля
      или больше или равно count,  вызывается метод error с  аргументом
      coIndexError,  и новый элемент item не вставляется. Если значение
      count равно limit перед вызовом  atInsert,  установленный  размер
      коллекции  увеличивается  на  delta  элементов  при помощи вызова
      setLimit.  Если вызов setLimit не расширяет коллекцию, то вызыва-
      ется метод error с аргументом coOverflow, и новый элемент item не
      вставляется.

           См. также: TNSCollection::at,TNSCollection::atPut


      atPut         void atPut(ccIndex index, void *item);
      -----
           Замещает элемент с индексной позицией index данным элементом
      item. Если значение index меньше нуля или больше или равно count,
      вызывается метод error с аргументом coIndexError.

           См. также: TNSCollection::at,TNSCollection::atInsert


      atRemove      void atRemove(ccIndex index);
      --------
           Удаляет элемент из позиции index путем перемещения следующих
      за ним элементов на одну позицию вверх.  Сам элемент не уничтожа-
      ется.  Значение count уменьшается на 1, но память, выделенная для
      коллекции (указанной при помощи limit) не уменьшается.  Если зна-
      чение index больше или равно  count,  то  вызывается  error(1,0).
      Сравните   действие   atRemove   с  atFree.  Последний  выполняет
      atRemove, затем удаляет элемент при помощи метода delete(item).

           См. также: TNSCollection::at,TNSCollection::remove


      error         static void error(ccIndex code, ccIndex info);
      -----
           Вызывается при  обнаружении  ошибки коллекции.  По умолчанию
      этот метод вырабатывает ошибку с кодом 212.


      firstThat     void *firstThat(ccTestFunc Test, void *arg);
      ---------
           firstThat применяет булевскую функцию *Test со списком аргу-
      ментов,  заданным в arg (может быть пустым)  к  каждому  элементу
      коллекции до тех пор, пока *Test не вернет значение True. Резуль-
      татом является указатель элемента,  для которого *Test возвращает
      значение True,  или 0, если *Test вернула значение False для всех
      элементов. Тип метода ccTestFunc определяются следующим образом:

           typedef Boolean (*ccTestFunc) (void *, void *);

           Первый аргумент указателя функции *Test  просматривает  кол-
      лекцию.  Второй  аргумент  *Test  берется из указателя arg метода
      firstThat, как показано в следующем примере:

           void *TNSCollection::firstThat( ccTestFunc Test, void *arg)
           {
             for( ccIndex i = 0; i < count; i++)
                {
                 if( Test( items[i], arg ) == True )
                   return items[i];
                }
                return 0;
           }

           Помните, что защищенные поля items имеют тип void**, так что
      items[i] имеют тип void *.

          См. также: TNSCollection::lastThat, TNSCollection::forEach


      forEach      void forEach(ccAppFunc action, void *arg);
      -------
           Итератор forEach  применяет  действие,   заданное   функцией
      *action,  к  каждому  элементу  коллекции.  Указатель  arg  может
      использоваться  для  передачи  дополнительных  аргументов   этому
      действию. Тип метода ccAppFunc определяется следующим образом:

           typedef Boolean (*ccAppFunc) (void *, void *);

           Первый аргумент указателя функции *action просматривает кол-
      лекцию.  Второй аргумент *action берется из указателя arg  метода
      forEach, как показано в следующем примере:

           void *TNSCollection::forEach( ccAppFunc action, void *arg)
           {
             for( ccIndex i = 0; i < count; i++)
                  action( items[i], arg )
           }

           Помните, что защищенные поля items имеют тип void**, так что
      items[i] имеют тип void *.

           См. также: TNSCollection::firstThat, TNSCollection::lastThat


      free          void free(void*item);
      ----
           Удаляет и уничтожает заданный элемент item. Является эквива-
      лентом

          remove( item );
          delete( item );

          См. также: TNSCollection::remove


      freeAll       void freAll();
      -------
           Удаляет и уничтожает все элементы в коллекции и устанавлива-
      ет count в значение 0.

           См. также: TNSCollection::removeAll


      IndexOf       virtual ccIndex indexOf(void *item);
      -------
           Возвращает индекс заданного элемента item; является обратной
      операцией к методу TNSCollection::at. Если элемент item не содер-
      жится в коллекции, то IndexOf вызывает error(1,0).

          См. также: TNSCollection::at


      insert        virtual void insert(void *item);
      ------
           Вставляет элемент item в коллекцию и корректирует другие ин-
      дексы, если это необходимо. По умолчанию, вставка делается в кон-
      це коллекции при вызове atInsert(count,item);

           См. также: TNSCollection::atInsert


      lastThat      void *lastThat(ccTestFunc Test,void *arg);
      --------
           lastThat применяет булевскую функцию *Test со списком  аргу-
      ментов,  заданным  в  arg  (может быть пустым) к каждому элементу
      коллекции,  начиная с последнего элемента,  и просматривает их  в
      обратном порядке до тех пор, пока *Test не вернет значение "Исти-
      на".  Результатом является указатель элемента, для которого *Test
      возвращает  значение  True,  или  0,  если *Test вернула значение
      False для всех элементов. Тип метода ccTestFunc определяется сле-
      дующим образом:

           typedef Boolean (*ccTestFunc) (void *, void *);

           Первый аргумент  указателя  функции *Test просматривает кол-
      лекцию.  Второй аргумент *Test берется из  указателя  arg  метода
      lastThat, как показано в следующем примере:

           void *TNSCollection::lastThat( ccTestFunc Test, void *arg)
           {
             for( ccIndex i = 0; i < count; i-- )
                {
                 if( Test( items[i-1], arg ) == True )
                   return items[i-1];
                }
                return 0;
           }

           Помните, что защищенные поля items имеют тип void**, так что
      items[i] имеют тип void *.

           См. также: TNSCollection::firstThat, TNSCollection::forEach


      pack          void pack();
      ----
           Удаляет все  нулевые указатели в коллекции и перемещает эле-
      менты вверх, заполняя все интервалы.

           См. также: TNSCollection::remove, TNSCollection::removeAll


      remove        void remove(void *item);
      ------
           Удаляет элемент, заданный item, из коллекции. Является экви-
      валентом atRemove(indexOf(item)).

           См. также: TNSCollection::atRemove, TNSCollection::IndexOf


      removeAll     void removeAll();
      ---------
           Удаляет все элементы из коллекции путем установки count в 0.

           См. также: TNSCollection::remove, TNSCollection::atRemove


      setLimit      virtual void setLimit(ccIndex aLimit);
      --------
           Расширяет или сжимает коллекцию путем изменения  выделенного
      размера на aLimit. Если aLimit меньше, чем count, он устанавлива-
      ется   в   значение   count,   а   если   aLimit   больше,    чем
      maxCollectionSize,    то    он    устанавливается    в   значение
      maxCollectionSize.  Если значение aLimit отлично от текущего зна-
      чения  limit,  то  размещается  новый массив из aLimit элементов,
      старый массив копируется в новый массив и  старый  массив  удаля-
      ется.

           См. также: TNSCollection::limit, TNSCollection::count, пере-
      менная maxCollectionSize







        TNSSortedCollection                                     TVOBJS.H
      -----------------------------------------------------------------

                    ЪДДДДДДДДДДДДДДДї           ЪДДДДДДДДДДДДДДї
                    і TNSCollection і           і TStreamable  і
                    АДДДДДДДВДДДВДДДЩ           АДДДДДДДВДДДДДДЩ
                            і   АДДДДДДДДДДДДДДДДДДДї   і
                    ЙНННННННПННННННННННН»       ЪДДДБДДДБДДДДДДї
                    єTNSSortedCollectionє       і TCollection  і
                    ИНННННННСНННННННННННј       АДДДДДДДВДДДДДДЩ
                            і                           і
                            АДДДДДДї ЪДДДДДДДДДДДДДДДДДДЩ
                           ЪДДДДДДДБДБДДДДДДДДДДї
                           і TSortedCollection  і
                           АДДДДДДДДДДДДДДДДДДДДЩ

           Абстрактный класс  TNSSortedCollection  является специальным
      наследуемым классом из TNSCollection,  вводящим непотоковые  кол-
      лекции, отсортированные  по ключу (с или без дубликатов).  Не до-
      пускаются никакие экземпляры класса TNSSortedCollection.  Он  су-
      ществует  исключительно как основа для других стандартных или за-
      данных пользователем наследуемых классов.

           Сортировка производится  при  помощи   виртуального   метода
      compare,  который  вы  должны  переопределить (или перезадать как
      виртуальный). Иногда вам придется переопределять ее в наследуемых
      классах для поддержки определенного порядка в коллекции.  По мере
      добавления новых элементов,  они автоматически вставляются в  по-
      рядке, заданном compare. Элементы могут быть размещены при помощи
      бинарного (по умолчанию) метода search (также виртуального). Вир-
      туальный метод IndexOf, который возвращает указатель для compare,
      также может быть переопределен, если методу compare требуется до-
      полнительная информации.

           Для потоковых  отсортированных коллекций вы можете использо-
      вать класс TSortedCollection,  который является некоторым наслед-
      ником  от  классов TNSSortedCollection и TCollection (основой для
      которого служит класс TStreamable).  Кроме способности сохранения
      в потоке два класса TSortedCollection и TNSSortedCollection имеют
      одинаковые функциональные возможности.


                                    Поля

      duplicates    Boolean duplicates
      ----------
           Установлено в значение True,  если допускаются дублированные
      индексы;  в противном случае,  установлено в значение  False.  По
      умолчанию принимается False. Если duplicates имеет значение True,
      то методы search,  insert и  indexOf  работают  неодинаково  (см.
      описание этих методов).


                                   Методы

      constructor  TNSSortedCollection(ccIndex aLimit, ccIndex aDelta);
      -----------
           Вызывает конструктор  TCollection  для  установки   значений
      count, items и limit в 0; вызывает setLimit(aLimit) для установки
      предела коллекции в значение aLimit,  затем устанавливает delta в
      aDelta.   Заметьте,   что  тип  данных  ccIndex  задан  как  int.
      duplicates установлено в значение False. Если вы хотите допустить
      дублирование ключей, вы должны задать duplicates значение True.

           См. также: конструктор TCollection, поля TCollection


      compare       virual int compare(void *key1, void *key2) = 0;
      -------                                                 (частный)

           Метод compare  является виртуальным методом,  который должен
      быть переопределен во всех наследуемых классах. Он должен сравни-
      вать два значения ключа и возвращать результат в следующем виде:
                         ___________________________
                           < 0, если  key1 < key2
                             0, если  key1 = key2
                           > 0, если  key1 > key2
                         ___________________________

           key1 и key2 являются указателями, соответствующими сравнива-
      емым элементам коллекции,  выделенным методом keyOf. Метод search
      выполняет бинарный поиск по всем элементам коллекции,  при помощи
      метода compare, сравнивающего элементы.


      insert        virtual void insert(void *item);
      ------
           Если duplicates имеет значение False, insert работает следу-
      ющим  образом:  если  целевой элемент не найден в отсортированном
      наборе,  он вставляется в позицию допустимого индекса. Вызывается
      метод search для определения, существует ли элемент, если нет, то
      где его вставлять. insert выполняется следующим образом:

          {
             ccIndex i;

             if (search(keyOf(item), i) == 0)
                 atInsert(i,item);
          }

           Если duplicates имеет значение True,  то элемент вставляется
      перед любыми элементами (если они есть) с таким ключом.

           См. также: TNSSortedCollection::search,TCollection::atInsert


      search        virtual Boolean search(void *key, ccIndex& index);
      ------
           Возвращает значение True,  если элемент,  идентифицированный
      по key,  найден в отсортированной коллекции. Если элемент найден,
      index устанавливается в значение найденного индекса;  в противном
      случае, index устанавливается в значение индекса, где элемент бу-
      дет помещен в случае,  если он будет вставляться.  Заметьте,  что
      если duplicates  имеет  значение  True  и  ключи  продублированы,
      search будет искать первый соответствующий образцу элемент.

           См. также: TNSSortedCollection::compare,
                      TNSSortedCollection::insert






        TObject                                                  TVOBJ.H
      -----------------------------------------------------------------

                                ЙННННННННННН»
                                є  TObject  є
                                ИСНННСНСНСНСј
                       ЪДДДДДДДДДЩ   і і і АДДДДДДДДДї
               ЪДДДДДДДБДДДДДДДї     і і і   ЪДДДДДДДБДДДДДДДї
               і  TCollection  і     і і і   і TResourceFile і
               АДДДДДДДДДДДДДДДЩ     і і і   АДДДДДДДДДДДДДДДЩ
                                     і і АДДДДДДДДДДї
                                     і і    ЪДДДДДДДБДДДДДДДї
                                     і і    і TStringList   і
                                     і і    АДДДДДДДДДДДДДДДЩ
                       ЪДДДДДДДДДДДДДЩ АДДДДДДДДДДДДДї
               ЪДДДДДДДБДДДДДДДї             ЪДДДДДДДБДДДДДДДї
               і TStrListMasterі             і TView         і
               АДДДДДДДДДДДДДДДЩ             АДДДДДДДДДДДДДДДЩ

           TObject представляет собой вершину иерархии большинства объ-
      ектов Turbo Vision.  Как базовый класс,  он не имеет родительских
      классов, но  имеет  большое  число  потомков.  Фактически,  кроме
      TPoint  и  TRect  (и различных классов и структур инициализации и
      управления потоками) все стандартные классы Turbo Vosion являются
      в итоге производными от TObject.

                                   Методы

      constructor   virtual ~TObject();
      -----------
           Выполняет необходимую  очистку  памяти и располагает динами-
      ческие объекты.


      destroy       static void destroy( TObject *ob );
      -------
           Во всех случаях, когда вы хотите удалить объект (ob) наслед-
      ник класса TObject (т.е. любой объект, созданный оператором new),
      вызывайте  метод destroy.  Метод destroy прекращает существование
      объекта, аккуратно освобождая занимаемую им  память.  Используйте
      этот метод вместо оператора С++ delete. Например:

           TDialog *dlg = new TDialog(...);
           //delete dlg;                //Так не делайте
           destroy( dlg );              //Делайте таким образом

           См. также: глава 6, "Разработка надежных программ"


      shutDown      virtual void shutDown();
      --------
           Используется только TObject::destroy,  для проверки правиль-
      ности удаления наследуемых и зависимых объектов. shutDown переоп-
      ределяется во многих классах, для обеспечения правильного задания
      зависимых полей, при вызове метода destroy.

           См. также: глава 6, "Разработка надежных программ"







        TPalette                                                 VIEWS.H
      -----------------------------------------------------------------

                          ЙНННННННННННННН»
                          є  TPalette    є
                          ИННННННННННННННј

           TPalette является простым классом, используемым для создания
      и обработки массивов палитры. Хотя палитры являются массивами ти-
      па char и часто указываются как строки,  они не являются строками
      заканчивающимися нулевым  символом,  как  это принято в языке Си.
      Фактически,  в палитре может  присутствовать  0-й  байт.  Поэтому
      обычные строковые функции Си использоваться не могут. Первый байт
      строки палитры содержит ее длину (без учета самого  первого  бай-
      та). Каждая основной отображаемый объект имеет стандартную палит-
      ру,  которая определяет (путем индексации в ее собственной палит-
      ре) обычные цвета, назначенные различным частям отображаемых объ-
      ектов, таким как прямоугольные области,  рамки,  кнопкам, текст и
      т.д.  Для  получения более подробной информации смотрите главу 4,
      "Отображаемые объекты".

                                   Методы

      constructor   TPalette( const char *d, ushort len );
      -----------   TPalette( const TPalette& tp );

           Первая форма создает объект TPalette со строкой d  и  длиной
      len. Внутреннее поле data устанавливается с len в его первом бай-
      те,  за ним следует массив d. Вторая форма создает новую палитру,
      копируя палитру tp.


      destructor    ~TPalette();
      ----------
           Уничтожает палитру.


      operator =    TPalette& operator = ( const TPalette& tp );
      ----------
           Оператор p = tp; копирует палитру tp в палитру p.


      operator []   char& operator[] ( int index );
      -----------
           Оператор нижнего уровня возвращает символ в позиции index.







        TParamText                                             DIALOGS.H
      -----------------------------------------------------------------

                          ЙНННННННННННННН»
                          є  TParamText  є
                          ИННННННННННННННј

           TParamText является   наследником   класса  TStaticText.  Он
      использует параметризованные текстовые строки для форматного  вы-
      вода, применяя функцию stdio - vsprintf.


                                    Поля

      paramCount    short paramCount;
      ----------
           paramCount указывает  число   параметров,   содержащихся   в
      paramList.

           См. также: TParamText::paramList


      paramList     void *paramList
      ---------
           paramList - это указатель, обычно указывающий на массив (или
      структуру)  указателей  или  значений  типа long,  которые должны
      использоваться как параметры форматирования текстовой строки.


                                   Методы

      constructor     TParamText(const TRect& bounds, const char *aText,
      -----------                int aParamCount);

           Создает и инициализирует статический текстовый объект, вызы-
      вая метод TStaticText(bounds,  aText). aText может содержать спе-
      цификаторы формата printf (в виде %[-][nnn]X),  которые будут за-
      менены  параметрами,  переданными  во время выполнения.  Параметр
      count, переданный в aParamCount, присваивается полю paramCount.


      constructor   TParamText( StreamableInit streamableInit)
      -----------                                         (защищенный)


           Каждый потоковый класс требует "построителя" для распределе-
      ния памяти для его объектов вместе с инициализированными указате-
      лями  виртуальной  таблицы.  Это достигается путем вызова функции
      элемента constructor с аргументом типа  StreamableInit.  Смотрите
      также Главу 8.

          См. также: TStaticText::TStaticText, vsprintf (stdio.h)


      build         static TStreamable *build();
      -----
           Вызывается для создания  объекта  в  определенных  ситуациях
      чтения из потока.

           См. также: TStreamableClass, ipstream::readData


      dataSize      virtual ushort dataSize();
      --------
           Возвращает размер данных, необходимых параметрам объекта.


      getText       virtual void getText(char *s);
      -------
           Создает форматированную строку текста в s,  осуществляя объ-
      единение параметров, заданных в paramList в текстовую строку text
      с помощью вызова vsprintf(s, text, paramList). Если text пуст, *s
      устанавливается в EOS.


      read          virtual void *read( ipstream& is );
      ----
           Осуществляет считывание из входного потока is.

           См. также: TStreamableClass, TStreamable, ipstream


      setData       virtual void setData(void *rec);
      -------
           Устанавливает paramList в значение *rec.

      write         virtual void write( opstream& os );
      -----
           Осуществляет запись в выходной поток os.

           См. также: TStreamableClass, TStreamable, opstream


                           Дополнительные функции

           Некоторые выполняемые функции относятся к классу TParamText,
      но не являются методами.


                                   Палитра

           Объекты TParamText   используют   палитру   (по   умолчанию)
      cpStaticText для отображения заданного  значения  в  6-й  элемент
      стандартной палитры прикладной программы.

                                     1
                                   ЙННН»
                  cpStaticText     є0x6є
                                   ИНСНј
                         Текст  ДДДДДЩ







        TPoint                                                 OBJECTS.H
      -----------------------------------------------------------------


                               ЙНННННННННН»
                               є  TPoint  є
                               ИННННННННННј

           TPoint - это класс, определяющий точки на экране, с несколь-
      кими переопределяемыми операторами, служащими для манипулирования
      координатами точки.


                                    Поля

      x             int x;
      --
           x - позиция (колонка) точки на экране.


      y             int y;
      --
           y - позиция (строка) точки на экране.


                                   Методы

      operator +=   TPoint& operator+=(const TPoint& adder);
      -----------
           Увеличивает значение  x  при  помощи  adder.x и y при помощи
      adder.y. Возвращает *this.


      operator -=   TPoint& operator-=(const TPoint& subber);
      -----------
           Уменьшает значение  x  при  помощи  adder.x  и  y при помощи
      adder.y. Возвращает *this.


                            Дружественные методы

      operator-    friend TPoint& operator-(const TPoint& one,
      ---------                             const TPoint& two);

           Вычитает координату two из координаты one. Устанавливает x в
      значение (one.x - two.x) и y - в значение (one.y - two.y).  Аргу-
      менты one и two, конечно, не меняются. Возвращает *this.


      operator+    friend TPoint& operator+(const TPoint& one,
      ---------                             const TPoint& two);

           Прибавляет координату two к координате one.  Устанавливает x
      в значение (one.x | two.x) и y - в значение (one.y | two.y).  Ар-
      гументы one и two, конечно, не меняются. Возвращает *this.


      operator==    friend int operastor=(const TPoint& one,
      ----------                          const Tpoint& two);

           Возвращает значение True,  если координаты точки one  и  two
      одинаковы (т.е.,  если one.x==two.x && one.y==two.y). В противном
      случае возвращается False.


      operator!=    friend int operastor!=(const TPoint& one,
      ----------                           const Tpoint& two);

           Возвращает значение True (ненулевое значение),  если коорди-
      наты точки  one  и  two  различны  (т.е.,  если  one.x!=two.x  ||
      one.y!=two.y). В противном случае возвращается False (0).


                           Дополнительные функции

           Некоторые выполняемые функции относятся к классу TPoint,  но
      не являются методами.







        TPReadObjects                                         TOBJSTRM.H
      -----------------------------------------------------------------


                          ЪДДДДДДДДДДДДДДДДДДДДДДДї
                          і  TNSSortedCollection  і
                          АДДДДДДДДДДВДДДДДДДДДДДДЩ
                                     і
                             ЙНННННННПННННННН»
                             є TPReadObjects є
                             ИНННННННННННННННј


           Класс TPReadObjects (вместе с TPWrittenObjects) решает слож-
      ную  проблему идентификации,  при записи и чтении объектов в и из
      потоков,  при помощи указателей.  Этот класс содержит базу данных
      всех объектов,  которые были считаны из текущего потока объектов.
      Его использует ipstream,  при считывании указателя из потока, для
      определения  наличия  других указателей на этот объект.  По этому
      механизму, если ptr1 и ptr2 указывают на один потоковый объект, и
      вы записываете оба указателя в opstream,  сохраняется только одна
      копия объекта.  Когда вы собираетесь считать обратно  из  потока,
      создается только одна копия *ptr1, и оба ptr1 и ptr2 все еще ука-
      зывают на нее.


                                   Методы

      constructor   TPReadObjects();
      -----------
           Этот внутренний  конструктор  создает  непотоковую коллекцию
      путем обращения к основному конструктору TNSSortedCollection.  Он
      доступен только при помощи методов и дружественных методов.

           См. также: TNSSortedCollection::TNSSortedCollection

      destructor    ~TPReadObjects();
      ----------
           Устанавливает limit  коллекции  в значение 0 без уничтожения
      коллекции (т.к. поле shouldDelete установлено в значение False).

           См. также: TNSSortedCollection::TNSSortedCollection,
                      TNSSortedCollection::shouldDelete


                            Дружественные классы

           Класс ipstream является дружественным классом TPReadObjects,
      так  что  все  его методы имеют доступ ко внутренним полям класса
      TPReadObjects.






        TProgInit                                                  APP.H
      -----------------------------------------------------------------

                 ЪДДДДДДДДДДДДї            ЙНННННННННННН»
                 і  TGroup    і            є TProgInit  є
                 АДДДДДДВДДДДДЩ            ИННННСНННННННј
                        АДДДДДДї      ЪДДДДДДДДДЩ
                             ЪДБДДДДДДБДї
                             і TProgram і
                             АДДДДДДДДДДЩ


           TProgInit является  основным  виртуальным классом для класса
      TProgram.  Конструктор  TProgram  вызывает  основной  конструктор
      TProgInit, передавая ему адреса трех функций инициализации, кото-
      рые создают строку состояния,  прямоугольные области меню и рабо-
      чую   область.   Смотрите   описание   конструкторов  TProgram  и
      TApplication.


                                   Методы

      constructor   TProgInit(TStatusLine *(*cStatusLine)( TRect r ),
      -----------             TMenuBar *(*cMenuBar)( TRect r ),
                              TDeskTop *(*cDeskTop)( TRect r ) );

           Смотрите описание конструктора TProgram.


      createDeskTop  TDeskTop *(*createDeskTop)(TRect r );(защищенный)
      -------------
           Создает рабочую область заданного размера.

           См. также: TApplication::TApplication


      createMenuBar   TMenuBar *(*createMenuBar)( TRect r );
      -------------                                        (защищенный)
           Создает строку меню заданного размера.

           См. также: TApplication::TApplication


      createStatusLine   TStatusLine *(*createStatusLine)( TRect r );
      ----------------
           Создает строку состояния заданного размера.

           См. также: TApplication::TApplication


      createMenuBar   TMenuBar *(*createMenuBar)( TRect r );
      -------------                                        (защищенный)
           Создает строку меню заданного размера.

           См. также: TApplication::TApplication


      createStatusLine   TStatusLine *(*createStatusLine)( TRect r );
      ----------------
           Создает строку состояния заданного размера.

           См. также: TApplication::TApplication







        TProgram                                                   APP.H
      -----------------------------------------------------------------

                        ЪДДДДДДДДДї          ЪДДДДДДДДДДї
                        і TGroup  і          і TProInit і
                        АДДДДВДДДДЩ          АДДДДВДДДДДЩ
                             АДДДДДДДї  ЪДДДДДДДДДЩ
                               ЙНННННПННПННННН»
                               є   TProgram   є
                               ИННННННСНННННННј
                               ЪДДДДДДБДДДДДДДї
                               і TApplication і
                               АДДДДДДДДДДДДДДЩ

           TProgram обеспечивает базовую заготовку для всех стандартных
      приложений, написанных  с использованием Turbo Vision.  Все такие
      программы  должны  порождаться  от  TProgram  или   его   потомка
      TApplication.  TApplication  отличается  от TProgram только стан-
      дартными конструктором и деструктором.  Оба класса поддерживаются
      для обеспечения большей гибкости при создании нестандартных прог-
      рамм.  В большинстве случаев ваша программа будет порождаться  от
      TApplication.

           Класс TProgram является наследником TGroup,  так что он дол-
      жен содержать объекты TDeskTop, TStatusLine и TMenuBar.


                                    Поля

      application   static TProgram *application;
      -----------
           Указатель на  текущую прикладную программу,  устанавливается
      значение this конструктором TProgInit.

          См. также: класс TProgInit


      appPalette    static int appPalette;
      ----------
           Индексирует стандартную палитру для этой прикладной програм-
      мы,  как установлено при помощи InitScreen.  TProgram::getPalette
      возвращает объект TPalette, соответствующий appPalette.

           См. также: раздел "Палитры" ниже, TProgram::getPalette


      deskTop       static DeskTop *deskTop;
      -------
           Указатель на текущий объект рабочей области, устанавливается
      при вызове createDeskTop в конструкторе TProgram.  Результирующий
      объект вставляется в группу TProgram.

           См. также: TProgInit::createDeskTop, TProgram::initDeskTop


      menuBar       static TMenuBar *menuBar;
      -------
           Указатель на текущий объект строки меню, устанавливается при
      вызове createMenuBar в конструкторе TProgram. Результирующий объ-
      ект вставляется в группу TProgram.

           См. также: TProgInit::createMenuBar, TProgram::initMenuBar


      statusLine    static TStatusLine *statusLine;
      ----------
           Указатель текущего объекта строки состояния, устанавливается
      при вызове createStatusLine в конструкторе TProgram. Результирую-
      щий объект вставляется в группу TProgram.

           См. также: TProgInit::createStatusLine,
                      TProgram::initStatusLine


                                   Методы

      constructor   TProgram();
      -----------
           Конструктор TProgram     вызывает    основной    конструктор
      TProgInit, передавая ему адреса трех начальных функций:

           TProgram::TProgram();
              TProgInit( &TProgram::initStatusLine,
                         &TProgram::initMenuBar, & TProgram::initDeskTop
                       ),
              ...

           Конструктор TProgInit создает строку состояния,  строку меню
      и рабочую область:

           TProgInit::TProgInit ( TStatusLine *(*cStatusLine)( TRect ),
                                 TMenuBar *(cMenuBar)( TRect ),
                                 TDeskTop *(cDeskTop)( TRect ) );
                    createStatusLine( cStatusLine ),
                    createMenuBar( cMenuBar ),
                    createDeskTop9 cDeskTop )
                    ...

           Если эти обращения были успешны, то три объекта включаются в
      группу TProgram. Статические указатели полей statusLine, menuBar,
      deskTop и application (=this) устанавливаются на эти новые объек-
      ты. Также выполняется конструктор TGroup для создания полноэкран-
      ного отображаемого объекта;  инициализируются буфер изображения и
      стандартные палитры; устанавливаются следующие флаги состояния:

          state = sfVisible  |  sfSelected  |  sfFocused  |  sfModal  |
                  sfExposed


      destructor    virtual ~Program();
      ----------
          Удаляет соответствующие объекты deskTop, menuBar и statusLine
      и устанавливает статическое поле application в 0.

           См. также: ~TGroup


      getEvent      virtual getEvent(TEvent& event);
      --------
           По умолчанию  метод TView::getEvent просто вызывает getEvent
      и, поскольку объекты TProgram (или TApplication) в конечном итоге
      являются  владельцем  любого  отображаемого объекта,  любой вызов
      getEvent будет приводить к TProgram::getEvent (если только  отоб-
      ражаемый объект не переопределит getEvent).

           TРrogram::getEvent  вначале   проверяет,   не   посылал   ли
      TProgram::putEvent событие (в статическом поле  TEvent  pending).
      Если да, то getEvent возвращает это событие. Если нет события, то
      getEvent вызывает getMouseEvent.  Если возвращается evNothing, то
      вызывается getKeyEvent.  Если оба возвращают evNothing, указывая,
      что   ввод    пользователя    недоступен,    getEvent    вызывает
      TProgram::idle,  чтобы запустить "фоновые" задачи, выполняемые во
      время ожидания прикладной программой ввода  от  пользователя.  До
      возврата  getEvent передает все события evKeyDown и evMouseDown в
      StatusLine для отображения в  соответствующие  evCommand  события
      (нажатия управляющих клавиш).

           См. также: TProgram::putEvent, getMouseEvent, getKeyEvent


      getPalette    virtualTPalette& getPalette() const;
      ----------
           Возвращает строку палитры,  заданную индексом палитры в ста-
      тическом  поле  appPalette.  TProgram  поддерживает  три палитры:
      apColor, apBlackWhite и apMonochrome. appPalette инициализируется
      TProgram::initScreen.

           См. также:TProgram::initScreen, AppPalette, константы apXXXX



      handleEvent   virutal handleEvent(TEvent& event);
      -----------
           Обрабатывает нажатия клавиш (события от клавиатуры) от Alt-1
      до Alt-9,  посылая событие evBroadcast со значением command, рав-
      ным  cmSelectWindowNum,  и  значением  infoInt  в диапазоне 1..9.
      TWindow::handleEvent реагирует на такие сообщения, выбирая окно с
      данным номером.

           Обрабатывает событие evCommand со значением command,  равным
      cmQuit, вызывая endModal(cmQuit), что приводит к завершению прик-
      ладной программы.

           TProgram::handle почти  всегда переопределяется для введения
      обработки команд, специфичных для вашей прикладной программы.

          См. также: TGroup::handleEvent


      idle          virtual void idle();
      ----
           idle вызывается из TProgram::getEvent, когда очередь событий
      пуста,  позволяя программе выполнять фоновые задачи при  ожидании
      ввода от пользователя.

           По умолчанию   TProgram::idle  вызывает  statusLine->update,
      чтобы разрешить строке состояния обновлять себя в соответствии  с
      текущим контекстом подсказки.  Затем, если набор команд изменился
      после последнего вызова TProgram::idle, посылается evBroadcast со
      значением  command,  равным cmCommandSetChanged,  чтобы позволить
      отображаемому объекту,  который зависит от этого  набора  команд,
      разрешить или запретить себя.

           Если вы переопределяете idle, то убедитесь, что вы вызываете
      наследуемый метод idle.  Убедитесь также, что задачи, выполняемые
      методом  idle,  не  занимают  слишком  много времени в программе,
      поскольку это будет блокировать ввод пользователя и сильно замед-
      лит время реакции.


      initDeskTop   static TDeskTop *initDeskTop(TRect);
      -----------
           Адрес этого метода передается в конструктор TProgInit, кото-
      рый  создает объект TDeskTop для прикладной программы и сохраняет
      указатель  на  него  в  глобальной  переменной   deskTop.   Метод
      initDeskTop  никогда  не должен вызываться напрямую.  initDeskTop
      часто переопределяется,  для приписывания значения  определенного
      пользователем   TDeskTop,   вместо  пустого  стандартного  метода
      TDeskTop.

           См. также: TProgram::TProgram, TDeskTop


      initMenuBar   static TMenuBar *initMenuBar(TRect);
      -----------
           Адрес этого метода передается в конструктор TProgInit, кото-
      рый создает объект TMenuBar для программы и  сохраняет  указатель
      на него в глобальной переменной menuBar. Метод initMenuBar никог-
      да не должен вызываться непосредственно.  Вместо пустого TMenuBar
      initMenuBar почти всегда переопределяется экземпляром, определен-
      ным пользователем.

           См. также: TProgram::TProgram, TMenuBar


      initScreen    virtual void initScreen();
      ----------
           Вызывается из TProgram::TProgram  и  TProgram::setScreenMode
      каждый раз,  когда  режим экрана инициализируется или изменяется.
      Это метод, который действительно выполняет обновление и настройку
      переменных, определяющих режимом экрана  для  вычисления  размера
      "тени", маркеров и палитры прикладной программы.

           См. также: TProgram::TProgram, TProgram::setScreenMode


      initStatusLine  static TStausLine *initStatusLine(TRect);
      --------------
           Адрес этого метода передается конструктору TProgInit,  кото-
      рый  создает  объект TStatusLine для программы и сохраняет указа-
      тель на него в глобальной переменной в statusLine. initStatusLine
      никогда не должен вызываться прямым образом. Вместо использования
      TStatusLine по умолчанию initStatusLine почти всегда  переопреде-
      ляется экземпляром TStatusLine, определенным пользователем.

           См. также: TProgram::TProgram, TStatusLine


      outOfMemory   virtual void outOfMemory();
      -----------
           Метод outOfMemory вызывается из TProgram::validView для  оп-
      ределения  того,  что lowMemory имеет значение True.  outOfMemory
      должен сообщать пользователю,  что недостаточно памяти для выпол-
      нения операции.  Например,  с использованием метода messageBox из
      модуля STDDLG:

               virtual void TMyApp::outOfMemory
               {
                 messageBox('Not enough memory to complete operation.',
                            0, mfError + mfOKButton);
               }

           См. также: TProgram::validView, lowMemory


      putEvent      virtual void putEvent(TEvent& event);
      --------
           По умолчанию  TView::putEvent просто вызывает метод putEvent
      своего владельца и,  поскольку объект TProgram (или TApplication)
      в  конечном счете является владельцем любого отображаемого объек-
      та,  каждый вызов putEvent будет приводить  к  TProgram::putEvent
      (если только отображаемый объект не переопределен putEvent).

           Метод Program::putEvent  сохраняет  копию  структуры event в
      глобальной  переменной  pending,  и  следующий  вызов  TProgram::
      GetEvent будет возвращать эту копию.

           См. также: TProgram::getEvent, TView::putEvent


      run           virtual void run();
      ---
           Выполняет TProgram,  вызывая метод execute (который наследу-
      ется от TGroup).

           См. также: TGroup::execute



      setScreenMode  void setScreenMode(ushort mode);
      -------------
           Устанавливает режим экрана.  mode - одна из констант smCO80,
      smBW80  или  smMono с дополнительным smFont8x8 для выбора 43- или
      50-строчного режима адаптеров EGA или VGA. setScreenMode "скрыва-
      ет" курсор "мыши", вызывает setVideoMode для изменения режима эк-
      рана, устанавливает экранный буфер, инициализирует переменные ре-
      жима  экрана,  вызывает changeBounds с новыми границами экрана и,
      наконец, отображает курсор "мыши".

           См. также: TProgram::setVideoMode, константы smXXXX


      shutDown      virtual void shutDown();
      --------
           Используется методом TObject::destroy для подтверждения пра-
      вильного  удаления  наследуемых  и  связанных   объектов.   Метод
      shutDown  переопределяется  во  многих  классах для подтверждения
      правильной установки полей при вызове destroy.

           См. также: глава 6, "Разработка надежных программ"


      validView     TView *validView(TView *p);
      ---------
           Проверяет допустимость *p, вновь созданных отображаемых объ-
      ектов,  возвращая p, если объект допустим и 0 - если нет. Во-пер-
      вых, если p имеет значение 0, возвращается значение 0. Во-вторых,
      если lowMemory равно True,  то при вызове validView  отображаемый
      объект,  заданный в p, удаляется, вызывается метод outOfMemory, и
      возвращается значение 0. В-третьих, если вызов P->Valid() возвра-
      щает значение False,  то p удаляется,  и возвращается значение 0.
      Иначе отображаемый объект считается  допустимым,  и  возвращается
      указатель на этот объект p.

           validView часто используется для проверки допустимости ново-
      го отображаемого объекта до вставки его в группу владельца.  Нап-
      ример,  следующий оператор показывает типичную последовательность
      создания, проверки и включения  нового  окна  в  рабочую  область
      (TProgram::validView  и  TGroup::insert  знают,  как игнорировать
      возможные нулевые указатели, возникающие в результате ошибок).

           deskTop->insert(cvlidView(new(TMyWindow));

           См. также: lowMemory, TProgram::outOfMemory, методы valid




                                    Палитра

           Палитра для объекта прикладной программы управляет  конечным
      отображением  цвета  всех  отображаемых  объектов программы.  Все
      отображения других палитр приводят к выбору  элемента  в  палитре
      программы, которая задает атрибуты текста.

           Первый элемент  используется  в TBackground для цветов фона.
      Элементы со 2 по 7 используются меню и строкой состояния.

                      1   2   3   4   5   6   7
                    ЙНННСНННСНННСНННСНННСНННСННН»
      cpColor       єx71іx70іx78іx74іx20іx28іx24є
                    МНННПНННПНННПНННПНННПНННПННН№
                    МНННСНННСНННСНННСНННСНННСННН№
      cpBlackWhite  єx70іx70іx78іx7Fіx07іx07іx0Fє
                    МНННПНННПНННПНННПНННПНННПННН№
                    МНННСНННСНННСНННСНННСНННСННН№
      cpMonochrome  єx70іx07іx07іx0Fіx70іx70іx70є
                    ИНСНПНСНПНСНПНСНПНСНПНСНПНСНј
                      і   і   і   і   і   і   і
       Фон        ДДДДЩ   і   і   і   і   і   АДД Выбор сокращения
       Нормальный текст ДДЩ   і   і   і   АДДДДДД Недоступный выбор
       Недоступный текст ДДДДДЩ   і   АДДДДДДДДДД Нормальный выбор
       Текст сокращения ДДДДДДДДДДЩ


           Элементы с 8 по 15 используются голубыми окнами.

                      8   9   10  11  12  13  14  15
                    ЙНННСНННСНННСНННСНННСНННСНННСННН»
      cpColor       єx17іx1Fіx1Aіx31іx31іx1Eіx71іx00є
                    МНННПНННПНННПНННПНННПНННПНННПННН№
                    МНННСНННСНННСНННСНННСНННСНННСННН№
      cpBlackWhite  єx07іx0Fіx07іx70іx70іx07іx70іx00є
                    МНННПНННПНННПНННПНННПНННПНННПННН№
                    МНННСНННСНННСНННСНННСНННСНННСННН№
      cpMonochrome  єx07іx0Fіx07іx70іx70іx07іx70іx00є
                    ИНСНПНСНПНСНПНСНПНСНПНСНПНСНПНСНј
                      і   і   і   і   і   і   і   і
       Рамка пассивна Щ   і   і   і   і   і   і   АД Зарезервировано
       Рамка активна ДДДДДЩ   і   і   і   і   АД Выделенный текст
                              і   і   і   і      для прокрутки
       Кнопка рамки ДДДДДДДДДДЩ   і   і   АДДДДД Нормальный текст
                                  і   і          для прокрутки
       Страница прокрутки ДДДДДДДДЩ   АДДДДДДДДД Зарезервировано



           Элементы с 16 по 23 используются бирюзовыми окнами.

                      16  17  18  19  20  21  22  23
                    ЙНННСНННСНННСНННСНННСНННСНННСННН»
      cpColor       єx37іx3Fіx3Aіx13іx13іx3Eіx21іx00є
                    МНННПНННПНННПНННПНННПНННПНННПННН№
                    МНННСНННСНННСНННСНННСНННСНННСННН№
      cpBlackWhite  єx07іx0Fіx07іx70іx70іx07іx70іx00є
                    МНННПНННПНННПНННПНННПНННПНННПННН№
                    МНННСНННСНННСНННСНННСНННСНННСННН№
      cpMonochrome  єx07іx0Fіx07іx70іx70іx07іx70іx00є
                    ИНСНПНСНПНСНПНСНПНСНПНСНПНСНПНСНј
                      і   і   і   і   і   і   і   і
       Рамка пассивна Щ   і   і   і   і   і   і   АДД Зарезервировано
       Рамка активна ДДДДДЩ   і   і   і   і   АД Выделенный текст
                              і   і   і   і      для прокрутки
       Кнопка рамки ДДДДДДДДДДЩ   і   і   АДДДД Нормальный текст
                                  і   і         для прокрутки
       Страница прокрутки ДДДДДДДДЩ   АДДДДДДДД Зарезервировано



           Элементы с 24 по 31 используются серыми окнами.

                      24  25  26  27  28  29  30  31
                    ЙНННСНННСНННСНННСНННСНННСНННСННН»
      cpColor       єx70іx7Fіx7Aіx13іx13іx70іx7Fіx00є
                    МНННПНННПНННПНННПНННПНННПНННПННН№
                    МНННСНННСНННСНННСНННСНННСНННСННН№
      cpBlackWhite  єx70іx7Fіx7Fіx70іx07іx70іx07іx00є
                    МНННПНННПНННПНННПНННПНННПНННПННН№
                    МНННСНННСНННСНННСНННСНННСНННСННН№
      cpMonochrome  єx70іx70іx70іx07іx07іx70іx07іx00є
                    ИНСНПНСНПНСНПНСНПНСНПНСНПНСНПНСНј
                      і   і   і   і   і   і   і   і
       Рамка пассивна Щ   і   і   і   і   і   і   АДД Зарезервировано
       Рамка активна ДДДДДЩ   і   і   і   і   АД Выделенный текст
                              і   і   і   і      для прокрутки
       Кнопка рамки ДДДДДДДДДДЩ   і   і   АДДДД Нормальный текст
                                  і   і         для прокрутки
       Страница прокрутки ДДДДДДДДЩ   АДДДДДДДД Зарезервировано


           Элементы с 32 по 63 используются диалоговыми объектами.  См.
      TDialog для отдельных элементов.

                      32  33  34  35  36  37  38  39  40
                    ЙНННСНННСНННСНННСНННСНННСНННСНННСННН»
      cpColor       єx70іx7Fіx7Aіx13іx13іx70іx70іx7Fіx7Eє
                    МНННПНННПНННПНННПНННПНННПНННПНННПННН№
                    МНННСНННСНННСНННСНННСНННСНННСНННСННН№
      cpBlackWhite  єx70іx7Fіx7Fіx70іx07іx70іx70іx7Fіx7Fє
                    МНННПНННПНННПНННПНННПНННПНННПНННПННН№
                    МНННСНННСНННСНННСНННСНННСНННСНННСННН№
      cpMonochrome  єx70іx70іx70іx07іx07іx70іx70іx70іx0Fє
                    ИНСНПНСНПНСНПНСНПНСНПНСНПНСНПНСНПНСНј
                      і   і   і   і   і   і   і   і   і
       Рамка пассивна Щ   і   і   і   і   і   і   і   АДД Сокращение
                          і   і   і   і   і   і   і       метки
       Рамка активна ДДДДДЩ   і   і   і   і   і   АД Подсвеченная
                              і   і   і   і   і      метка
       Кнопка рамки ДДДДДДДДДДЩ   і   і   і   АДДДДД Нормальная
                                  і   і   і          метка
       Страница прокрутки  ДДДДДДДЩ   і   АДДДДДДДДД Статический текст
       Элементы управления ДДДДДДДДДДДЩ
       прокруткой


                      41  42  43  44  45  46  47  48  49
                    ЙНННСНННСНННСНННСНННСНННСНННСНННСННН»
      cpColor       єx20іx2Bіx2Fіx78іx2Eіx70іx30іx3Fіx3Eє
                    МНННПНННПНННПНННПНННПНННПНННПНННПННН№
                    МНННСНННСНННСНННСНННСНННСНННСНННСННН№
      cpBlackWhite  єx07іx0Fіx0Fіx78іx0Fіx78іx07іx0Fіx0Fє
                    МНННПНННПНННПНННПНННПНННПНННПНННПННН№
                    МНННСНННСНННСНННСНННСНННСНННСНННСННН№
      cpMonochrome  єx07іx07іx0Fіx70іx0Fіx70іx07іx0Fіx0Fє
                    ИНСНПНСНПНСНПНСНПНСНПНСНПНСНПНСНПНСНј
                      і   і   і   і   і   і   і   і   і
       Нормальная ДДДДЩ   і   і   і   і   і   і   і   АДД Короткий
       кнопка             і   і   і   і   і   і   і      кластер
       Кнопка по   ДДДДДДДЩ   і   і   і   і   і   АДДДДД Выделенный
       умолчанию              і   і   і   і   і          кластер
       Выделенная кнопка   ДДДЩ   і   і   і   АДДДДДДДДД Нормальный
                                  і   і   і             кластер
       Запрещенная кнопка   ДДДДДДЩ   і   АДДДДДДДДДДДД Тень
                                      і                 кнопки
       Сокращение кнопки   ДДДДДДДДДДДЩ



                            50  51  52  53  54  55  56
                          ЙНННСНННСНННСНННСНННСНННСННН»
      cpColor             єx1Fіx2Fіx1Aіx20іx72іx31іx31є
                          МНННПНННПНННПНННПНННПНННПННН№
                          МНННСНННСНННСНННСНННСНННСННН№
      cpBlackWhite        єx0Fіx70іx0Fіx07іx70іx70іx70є
                          МНННПНННПНННПНННПНННПНННПННН№
                          МНННСНННСНННСНННСНННСНННСННН№
      cpMonochrome        єx07іx70іx07іx07іx70іx07іx07є
                          ИНСНПНСНПНСНПНСНПНСНПНСНПНСНј
                            і   і   і   і   і   і   і
       Обычная строка ввода Щ   і   і   і   і   і   АД Элементы
                                і   і   і   і   і      управления
                                і   і   і   і   і      прокруткой окна
                                і   і   і   і   і      протокола
       Выделенная строка ввода ДЩ   і   і   і   АДДДДД Страница
                                    і   і   і          прокрутки
                                    і   і   і          окна протокола
        Кнопки строки ввода ДДДДДДДДЩ   і   АДДДДДДДДД Стороны
        Кнопка протокола ДДДДДДДДДДДДДДДЩ              протокола



                            57  58  59  60  61  62  63
                          ЙНННСНННСНННСНННСНННСНННСННН»
      cpColor             єx30іx2Fіx3Eіx31іx13іx00іx00є
                          МНННПНННПНННПНННПНННПНННПННН№
                          МНННСНННСНННСНННСНННСНННСННН№
      cpBlackWhite        єx07іx70іx0Fіx07іx07іx00іx00є
                          МНННПНННПНННПНННПНННПНННПННН№
                          МНННСНННСНННСНННСНННСНННСННН№
      cpMonochrome        єx07іx70іx0Fіx07іx07іx00іx00є
                          ИНСНПНСНПНСНПНСНПНСНПНСНПНСНј
                            і   і   і   і   і   і   і
       Обычный элемент   ДДДЩ   і   і   і   і   і   АДД Зарезервировано
       списка                   і   і   і   і   і
       Активный элемент  ДДДДДДДЩ   і   і   і   АДДДДДД Зарезервировано
       списка                       і   і   і
       Выделенный просмотр списка ДДЩ   і   АДДДДДДДДДД Информационная
       Разделитель просмотра списка ДДДДЩ               область








        TPWObj                                                TOBJSTRM.H
      -----------------------------------------------------------------

                             ЙННННННННННННННН»
                             є    TPWObj     є
                             ИНННННННННННННННј

           TPWObj используется внутри класса TPWrittenObjects.


                            Дружественные классы

           Класс TPWrittenObjects является дружественным классу TPWObj,
      так  что  все  его  методы могут иметь доступ ко внутренним полям
      класса TPWObj.






        TPWrittenObjects                                      TOBJSTRM.H
      -----------------------------------------------------------------

                           ЪДДДДДДДДДДДДДДДДДДДДї
                           іTNSSortedCollection і
                           АДДДДДДДДВДДДДДДДДДДДЩ
                           ЙННННННННПНННННННННН»
                           є TPWrittenObjects  є
                           ИНННННННННННННННННННј

           TPWrittenObjects (вместе  с  TPReadObjects)  решает  сложную
      проблему идентификации, возникающих, при записи и чтении объектов
      в и из потоков,  при помощи указателей.  Этот класс создает  базу
      данных всех объектов,  которые были записаны в текущий поток объ-
      ектов. Она используется opstream, когда он записывает указатель в
      поток:  он должен определить, был ли помеченный указателем объект
      уже записан в поток. При помощи этого механизма, если ptr1 и ptr2
      указывают на один и тот же потоковый объект, и вы записываете оба
      указателя в opstream, сохраняется только одна копия объекта. Ког-
      да  вы  снова производите считывание из потока,  создается только
      одна копия *ptr1, и оба ptr1 и ptr2 указывают на нее.


                                   Методы

      constructor   TPWrittenObjects();                      private
      -----------
           Этот внутренний  конструктор  создает  непотоковую коллекцию
      путем вызова основного конструктора TNSSortedCollection. Он явля-
      ется доступным только для методов и дружественных методов.

           См. также: TNSSortedCollection::TNSSortedCollection


      destructor    ~TPWrittenObjects();                    private
      ----------
           Устанавливает значение limit коллекции в 0 без ее  уничтоже-
      ния (т.к. поле shouldDelete имеет значение False).

           См. также: TNSCollection::~TNSCollection,
                      TNSCollection::shouldDelete


                            Дружественные классы

           Класс opstream  является  дружественным  классу   TPWritten-
      Objects,  так что все его методы могут иметь доступ ко внутренним
      полям TPWrittenObjects.








        TRadioButtons                                          DIALOGS.H
      -----------------------------------------------------------------

                               ЪДДДДДДДДДДДДї
                               і  TCluster  і
                               АДДДДДВДДДДДДЩ
                                     і
                             ЙНННННННПННННННН»
                             є TRadioButtons є
                             ИНННННННННННННННј

           Объекты TRadioButtons - это кластеры,  содержащие до  16,380
      (maxCollectiomSize) элементов управления,  из которых в любой мо-
      мент времени может быть выделена только одна кнопка  с  зависимой
      фиксацией. Выбор невыделенной кнопки будет автоматически освобож-
      дать предварительно выделенную кнопку. Большинство функций насле-
      дуются от TCluster,  включая конструктор и деструктор.  Зависимые
      кнопки часто связаны с объектом TLabel.

           TRadioButtons интерпретирует   наследуемое  поле  TCluster::
      value как номер "нажатой"  кнопки,  с  номером  первой  кнопки  в
      кластере, равным 0.

                                   Методы

      constructor   TRadioButtons( StreamableInit );
      -----------
           Каждому потоковому  классу необходим "построитель" для расп-
      ределения памяти для его объектов  вместе  с  инициализированными
      указателями  виртуальной  таблицы.  Это  достигается путем вызова
      конструктора с аргументом  типа  StreamableInit.  Смотрите  также
      главу 8.


      build         static TStreamable *build();
      -----
           Вызывается для создания  объекта  в  определенных  ситуациях
      чтения из потока.

           См. также: TStreamableClass, ipstream::readData


      draw          virtual void draw();
      ----
           Отображает кнопки как символы '[ ]',  заключенные в  прямоу-
      гольник.


      mark          virtual Boolean mark(int item);
      ----
           Возвращает значение True, если item = value, т.е. если кноп-
      ка с номером item представлена текущим значением поля value ("на-
      жатая" кнопка).

           См. также: TCluster::value, TCluster::mark


      movedTo       virtual void movedTo(int item);
      -------
           Присваивает value значение item.

           См. также: TCluster::movedTo, TRadioButtons::mark


      press         virtual void press(int item);
      -----
           Присваивает value значение item.  Вызывается  при  "нажатии"
      кнопки с номером item.


      setData       virtusl void setData(void *rec);
      -------
           Вызывает TCluster::setData для установки поля  value,  затем
      устанавливает поле sel равным value, поскольку вначале выделенный
      элемент - это "нажатая" кнопка.

           См. также: TCluster::setData


                           Дополнительные функции

           Определенные выполняемые функции связаны с TRadioButtons, но
      не являются методами.

                                   Палитра

           Объекты TRadioButtons используют cpCluster - палитру, назна-
      ченную  по умолчанию для всех кластерных объектов для отображения
      заданных значений в 16 - 18 элементы палитры стандартного  диало-
      га.

                           1    2    3    4
                        ЙННННСННННСННННСНННН»
           cpCluster    єx10 іx11 іx12 іx12 є
                        ИННСНПННСНПННСНПННСНј
                           і    і    і    і
          Нормальный текст Щ    і    і    АДДД Выделенное сокращение
          Выделенный текст ДДДДДЩ    АДДДДДДДД Обычное сокращение







        TRect                                                  OBJECTS.H
      -----------------------------------------------------------------

                                 ЙННННННН»
                                 є TRect є
                                 ИНННННННј

           Объекты класса  TRect представляют два объекта TPoint (верх-
      ний левый  и  нижний  правый углы прямоугольной области) вместе с
      несколькими встроенными методами для обработки прямоугольных  об-
      ластей. Операторы  == и != перезагружаются для поддержки операции
      сравнения двух прямоугольных областей естественным образом. Класс
      TPoint имеет поля x и y, координаты точек экрана.


                                    Поля

      a             TPoint a;
      --
           a - это точка, определяющая левый верхний угол прямоугольной
      области на экране.

          См. также: TPoint


      b             TPoint b;
      --
           b - это точка,  определяющая правый нижний угол  прямоуголь-
      ной области на экране.

          См. также: TPoint


                                   Методы

      constructor   TRect(int ax, int ay, int bx, int by);
      -----------   TRect(TPoint topleft, TPoiny bottomright);

           Создает объект TRect и инициализирует его значениями a.x=ax;
      a.y=ay и т.д. Или наоборот, вы можете построить прямоугольник пу-
      тем задания двух аргументов TPoint;  в этом  случае,  a  задается
      значением topleft, а b - значением bottomright.


      constructor   TRect();
      -----------
           Позволяет создание  неинициализированного  объекта  TRect  с
      использованием метода new без аргументов.


      contains      Boolean comtains(const TPoint& p) const;
      --------
           Возвращает значение True,  если прямоугольная область (вклю-
      чая ее границы) содержит точку p.


      grow          void grow(int aDX, int aDY);
      ----
           Изменяет размер прямоугольника, вычитая aDX из a.x, добавляя
      aDX к b.x, вычитая aDY из a.y и добавляя aDY к b.y.


      intersect     void intersect(const TRect& r);
      ---------
           Изменяет положение  и  размер  прямоугольной  области до об-
      ласти, определенной пересечением текущей прямоугольной области  с
      r.


      isEmpty       Boolean isEmpty();
      -------
           Возвращает значение True, если прямоугольная область пустая,
      т.е.  не содержит внутреннего символьного наполнения; в противном
      случае,  возвращает  значение  False.  "Пустой"   означает,   что
      (a.x>=b.x | | a.y>=b.y).


      move          void move(int aDX, int aDY);
      ----
           Перемещает прямоугольную область, путем добавления aDX к a.x
      и b.x и добавления aDY к a.y и b.y.


      operator ==   Boolean operator == (const TRect& r) const;
      -----------
           Возвращает значение True, если r является аналогичной прямо-
      угольной области; в противном случае, возвращает значение False.


      operator !=   Boolean operator != (const TRect& r) const;
      -----------
           Возвращает значение  True,  если  r  не является аналогичной
      прямоугольной области;  в противном случае,  возвращает  значение
      False.


      Union         void Union(const TRect& r);
      -----
           Изменяет прямоугольную  область  до  его объединения с самим
      собой или с прямоугольной области r;  т.е. до наименьшего прямоу-
      гольной области, содержащей этот объект и r.


                           Дополнительные функции

           Определенные функции  относятся к классу TRect,  но не явля-
      ются методами.







        TResourceCollection                                   RESOURCE.H
      -----------------------------------------------------------------

                          ЪДДДДДДДДДДДДДДДДДДДї
                          і TStringCollection і
                          АДДДДДДДДВДДДДДДДДДДЩ
                         ЙНННННННННПННННННННННН»
                         є TResourceCollection є
                         ИНННННННННННННННННННННј

           Объект TResourceCollection    является    наследуемым     от
      TStringCollection,  который  делает его отсортированной потоковой
      коллекцией.  Он используется с TResourceFile для реализации  кол-
      лекции ресурсов. Файл ресурсов - это поток, который индексируется
      ключевыми строками.  Каждый элемент ресурса указывает  на  объект
      типа TResourceItem, определенный следующим образом:

           struct TResourceItem
           {
             long pos;
             long size;
             char *key;
           };

           Поля поддерживают  позицию потока и размер элемента для эле-
      мента ресурса,  помеченного строкой key.  Переопределение методов
      TResourseCollection главным образом связано с обработкой дополни-
      тельных строк в его элементах.  TResourseCollection  используется
      внутри   объектов   TResourseFile  для  поддержки  индекса  файла
      ресурсов.

                                    Поля

      name          static const char * const name;
      ----
           Имя класса, используемое программой, управляющей потоком.


                                   Методы

      constructor    TResourceCollection( short aLimit, short aDelta );
      -----------
           Создает коллекцию ресурсов, имеющую внутренний размер aLimit
      и возможностью изменить размер, при помощи aDelta.


      constructor   TResourceCollection(StreamableInit streamableInit);
      -----------                                          (защищенный)

           Каждому потоковому  классу необходим "строитель" для распре-
      деления памяти для его объектов вместе с инициализированными ука-
      зателями   виртуальной  таблицы.  Это  достигается  путем  вызова
      конструктора с аргументом  типа  StreamableInit.  Смотрите  также
      главу 8.

           См. также: TStringCollection::TStringCollection


      build         static TStreamable *build();
      -----
           Вызывается для создания  объекта  в  определенных  ситуациях
      чтения из потока.

           См. также: TStreamableClass, ipstream::readData


      freeItem      virtual void freeItem( void *item );
      --------
           Освобождает заданный элемент из коллекции путем  удаления  и
      ключа, и элемента.


      keyOf         virtual void *keyOf( void *item);
      -----
           Возвращает ключ заданного  элемента.  Применяется  следующим
      образом:

           void* TResourceCollection::keyOf( void *item )
           {
              return (TResourceItem *)item)->key;
           }


      read          virtual void *read( ipstream& is );
      ----
           Считывает из входного потока is в ts.

           См. также: TStreamableClass, TStreamable, ipstream


      readItem      void *TResourceCollection::readItem(ipstream& is);
      --------
           Вызывается для каждого элемента коллекции.  Вам может потре-
      боваться  переопределить  его  во  всех  классах,  производных от
      TCollection или TSortedCollection,  для  обеспечения  правильного
      считывания  элементов.  TSortedCollection  уже переопределил этот
      метод.

           См. также: TStreamableClass, TStreamable, ipstream


      write         virtual void write( opstream& os );
      -----
           Записывает ts в поток os.

           См. также: TStreamableClass, TStreamable, opstream


      writeItem     void TResourceCollection::writeItem( void *obj,
      ---------                               opstream& os );

           Вызывается для каждого элемента коллекции.  Вам может потре-
      боваться переопределить  его  во  всех  классах,  наследниках  от
      TCollection или TSortedCollection, для обеспечения правильной за-
      писи элементов. TSortedCollection уже переопределил этот метод.

           См. также: TStreamableClass, TStreamable, opstream


                           Дополнительные функции

           Определенные функции относятся к классу TResourceCollection,
      но не являются методами.








        TResourceFile                                        RESOURCE.H
      -----------------------------------------------------------------

                                ЪДДДДДДДДДї
                                і TObject і
                                АДДДДВДДДДЩ
                             ЙНННННННПННННННН»
                             є TResourceFile є
                             ИНННННННННННННННј

           Класс TResourseFile реализует поток (типа fpstream), который
      может индексироваться ключевыми строками.  Когда объекты сохраня-
      ются в файле ресурса, используя TResourseFile::put, задается клю-
      чевая  строка,  которая идентифицирует этот объект.  Объект может
      быть позже  получен  указанием  этой  ключевой  строки  в  вызове
      TResourseFile::get.

           Для обеспечения  быстрого и эффективного доступа к объектам,
      хранящимся в файле ресурса,  TResourseFile хранит ключевые строки
      в  отсортированной  коллекции  строк  (используя класс TResourse-
      Collection) вместе с позицией и размером данных этого  ресурса  в
      файле  ресурса.  Поле  index  указывает на соответствующий объект
      TResourceCollection, который является индексом файла ресурсов.

           Как и в случае ввода/вывода потоков,  классы всех  объектов,
      записываемых и читаемых из файла ресурсов, должны быть потоковыми
      и зарегистрированы (т.е.,  помечены программой, управляющей пото-
      ками - см. главу 8, "Объекты, взаимодействующие с потоками").


                                    Поля

      basePos       long basePos;
      -------
           Основная позиция потока (без учета начальной информации).

           См. также: fpstream


      index         TResourceCollection *index;
      -----
           Указатель на соответствующий объект TResourceCollection.

           См. также: TResourceCollection


      indexPos      long indexPos;
      --------
           Текущая позиция потока относительно основной позиции.


      modified      Boolean modified;
      --------
           Установлено в значение True, если файл ресурса был модифици-
      рован с момента последнего вызова flush; в противном случае, име-
      ет значение False.

           См. также: TResourceFile::flush, TResourceFile::put



      stream        fpstream *stream;
      ------
           Указатель на поток, связанный с этим файлом ресурса.

           См. также: fpstream


                                   Методы

      constructor   TResourceFile( fpstream *aStream );
      -----------
           Инициализирует файл ресурса, используя поток, заданный через
      aStream,  и устанавливает поле modified в значение False. К этому
      времени поток должен быть уже инициализирован. Например:

           TResourceFile * resFile = new TResourceFile(new fpstream
                                   ("MYAPP.RES",  ios::in | ios::out));

           Во время  инициализации конструктор TResourceFile ищет заго-
      ловок файла ресурсов в текущей позиции в потоке.  Если  заголовок
      не найден, конструктор полагает, что новый файл ресурса создается
      вместе с новым набором ресурсов.  Вас могут не интересовать  под-
      робности о заголовках, но опытные программисты могут быть заинте-
      ресованы  в  следующей  информации.  Структура  заголовка   файла
      ресурсов имеет вид:

           struct THeader
           {
               ushort signature;
               union
               {
                   Count_type count;
                   Info_type info;
               };
           };

           где Count_type:

           struct Count_type
           {
              ushort lastCount:
              ushort pageCount;
           };

           и Info_type:

           struct Info_type
           {
              ushort infoType;
              long infoSize;
           };

           signature содержит либо 0х5a4d,  либо 0x4246. Если signature
      - 0x5a4d,  то  используется  поле  Count_type  объединения;  если
      signature   -   0x4246,  то  используется  поле  Info_type.  Если
      конструктор видит  сигнатюру файла .EXE в текущей позиции потока,
      то он пропускает поток до конца файла .EXE,  а затем ищет там за-
      головок  файла  ресурса.  Также,  конструктор  будет пропускать и
      оверлейный файл, который был дополнен к файлу .EXE. Это означает,
      что  вы  можете добавить и ваш оверлейный файл и ваш файл ресурса
      (в любом порядке) в конец файла .EXE  вашей  программы.  В  любом
      случае, basePos и indexPos устанавливаются в правильные значения,
      допустимые для любых заголовков.

           См. также: ~TResourceFile


      destructor    ~TResourceFile();
      ----------
           Очищает файл ресурса,  используя TResourseFile::flush, затем
      удаляет поля index и stream.

           См. также: конструктор TResourceFile, TResourceFile::flush


      count         short count();
      -----
           Вызывает index->getCount для возврата  количества  элементов
      ресурсов, сохраненных в соответствующем TResourceCollection.

           См. также: TResourceFile::getCount


      flush         void flush();
      -----
           Если файл ресурса не был модифицирован с момента  последнего
      вызова flush (т.е. значение modified равно False) flush не выпол-
      няет никаких действий. В противном случае, flush сохраняет обнов-
      ленный  индекс в конце потока и обновляет заголовок ресурса в на-
      чале потока.  Затем он  вызывает  stream->flush  и  устанавливает
      modified в значение False.

           См. также:      ~TResourceFile,     TResourceFile::modified,
      opstream::flush


      get           void *get( const char *key );
      ---
           Ищет заданный key в соответствующей коллекции файла ресурсов
      (заданным указателем index).  Возвращает значение 0, если ключ не
      найден. Иначе, устанавливает поток на позицию, заданную полем pos
      в объекте TResourceItem,  размещенном по значению key.  Создается
      объект в позиции (basePos+pos), и возвращается указатель на него.
      Например:

           deskTop->insert(validView(resFile.get("eitorWindow")));

           См. также:   TResourceCollection::at,    TResourceFile::put,
                        TApplication::validView, ipstream::seekg


      keyAt         const char *keyAt(short i);
      -----
           Использует index->at  для  возврата  ключевой   строки   для
      ресурса  с  номером  i  в  данном  файле ресурса.  Индекс первого
      ресурса   равен   0,    а    индекс    последнего    ресурса    -
      TResourseFile::count-1. Используя count и keyAt, вы можете итера-
      тивно обработать все ресурсы в файле ресурса.

           См. также: TResourceFile::count, TResourceCollection::at



      put           void put(TSreamable *item, const char *key);
      ---
           Добавляет потоковый объект,  заданный при помощи item в файл
      ресурса с ключевой строкой,  заданной в key, и устанавливает поле
      modified в значение True.  Если индекс содержит key, новый объект
      замещает  старый;  в  противном случае,  объект добавляется в до-
      пустимую индексированную позицию файла ресурса.

           См. также: TResourceFile::get, TNSSortedCollection::search


      remove        void remove(const char *key);
      ------
           Если ресурс,  помеченный  при помощи key,  не найден,  метод
      remove не производит никаких действий. В противном случае, он вы-
      зывает index->free для удаления ресурса.

           См. также: TNSSortedCollection::search, TNSCollection::free







        TScreen                                                 SYSTEM.H
      -----------------------------------------------------------------

                               ЪДДДДДДДДДДї
                               і TDisplay і
                               АДДДДВДДДДДЩ
                              ЙНННННПНННННН»
                              є  TScreen   є
                              ИННННННННННННј

           TScreen поддерживает атрибуты и функции изображения  нижнего
      уровня. Этот класс, и другие системные классы файла System.h, ко-
      ротко описаны только в руководстве: они используются внутри Turbo
      Vision,  и  вам  не  потребуется пользоваться ими явным образом в
      нормальных прикладных программах.  Класс TView является  дружест-
      венным классу TDisplay.


                                    Поля

      checkSnow     static Boolean near checkSnow;
      ---------
           Имеет значение True,  если разрешено пользоваться  проверкой
      на "снег" (для адаптера CGA);  в противном случае имеет  значение
      False.


      cursorLines   static ushort near cursorLines;
      -----------
           Содержит тип текущего курсора,  установленный  setCrtData  с
      вызовом getCursorType.

           См. также: TDisplay::getCursorType, TScreen::setCrtData


      hiResScreen   static Boolean near hiResScreen;
      -----------
           Имеет значение True,  если screenHeight больше 25; в против-
      ном случае имеет значение False.

           См. также: TScreen::screenHeight


      screenBuffer  static uchar far * near screenBuffer;
      ------------
           Указывает соответствующий буфер  изображения  для  указанной
      конкретной конфигурации изображения и его текущий режим.


      screenHeight  static uchar near screenHeight;
      ------------
           Содержит текущую высоту экрана,  установленную setCrtData  с
      обращением к getRows.

           См. также: TDisplay::getRows, TScreen::setCrtData


      screenMode    static ushort near screenMode;
      ----------
           Текущий видеорежим.

           См. также: TDisplay::getVideoMode


      screenWidth   static uchar near screenWidth;
      -----------
           Содержит текущую ширину экрана, установленную setCrtData че-
      рез обращение к getCols.

           См. также: TDisplay::getCols, TScreen::setCrtData


      startupCursor  static ushort near startupCursor;
      -------------
            Содержит начальный  тип  курсора,  установленный initScreen
      конструкторами TApplication/TProgram.

           См. также: TProgram::initScreen, TDisplay::getCursorType


      startupMode   static ushort near startupMode;
      -----------
           Содержит начальный   видеорежим,   установленный  initScreen
      конструкторами TApplication/TProgram.

           См. также: TProgram::initScreen


                                   Методы

      constructor   TScreen();
      -----------
           Создает объект TScreen и вызывает resume.  Он инициализирует
      startupMode при помощи getCrtMode;  startupCursor  -  при  помощи
      getCursorType;  затем  устанавливает оставшиеся поля путем вызова
      setCrtData.

           См. также:  TDisplay::getCrtMode,   TDisplay::getCursorType,
                     TScreen::setCrtData, TScreen::resume


      destructor    ~TScreen();
      ----------
           Вызывает метод suspend.  Он восстанавливает режим  экрана  в
      режим запуска,  очищает экран, затем восстанавливает курсор в на-
      чальный курсор.

           См. также: TDisplay::startupMode,    TDisplay::getCrtMode,
                      TDisplay::clearScreen,    TDisplay::getCursorType,
                      TScreen::suspend


      clearScreen   static void clearScreen();
      -----------
           Вызывает TDisplay::clearScreen    с    текущими   значениями
      screenWidth и screenHeight в качестве аргументов.

           См. также: TDisplay::clearScreen


      fixCrtMode    static ushort fixCrtMode( ushort vmode );
      ----------
           Если меньший  байт  заданного vmode не равен smMono,  smCO80
      или  BW80,  то   fixCrtMode   возвращает   smCO80.   Используется
      TScreen::setVideoMode для обработки нестандартных режимов.

           См. также: TDisplay::videoModes


      resume        static void resume();
      ------
           Вызывается конструктором    TScreen    для     инициализации
      startupMode  при  помощи  getCrtMode;  startupCursor - при помощи
      getCursorType;  затем устанавливает  остальные  поля  при  помощи
      setCrtData.

           См. также: TDisplay::getCrtMode,  TDisplay::getCursorType,
                      TScreen::setCrtData, TScreen::TScreen


      setCrtData    static void setCrtData();
      ----------
           Устанавливает поля  screenMode,  screenWidth  и screenHeight
      путем обращения к getCrtMode, getCols и getRows. Поле hiResScreen
      устанавливается в значение True или False,  в зависимости от зна-
      чения screenHeight.  Наконец,  в зависимости от текущего значения
      screenMode, устанавливаются поля screenBuffer и checkSnow.

           См. также:    TDisplay::getCrtMode,    TDisplay::getCols   и
      TDispalay::Rows


      setVideoMode  static void setVideoMode( ushort vmode );
      ------------
           Устанавливает видеорежим  в  значение  vmode,  затем в соот-
      ветствии с этим корректирует остальные поля TScreen.


      suspend       static void suspend();
      -------
           Вызывается деструктором TScreen. suspend восстанавливает эк-
      ранный режим в начальный режим,  очищает экран и затем восстанав-
      ливает курсор в начальную позицию.

           См. также: TScreen::~TScreen






        TScrollBar                                               VIEWS.H
      -----------------------------------------------------------------

                          ЪДДДДДДДї
                          і TView і
                          АДДДВДДДЩ
                       ЙННННННПННННН»
                       є TScrollBar є
                       ИННННННННННННј


                                    Поля

      arStep        short arStep;
      ------
           arStep - это количество,  добавляемое или вычитаемое из поля
      value строк  прокрутки,  когда  "мышью"  отмечена область стрелок
      (sbLeftArrow,  sbRightArrow, sbUpArrow, sbDownArrow) или осущест-
      влены  эквивалентные  нажатия  клавиш.  По  умолчанию конструктор
      TScrollBar устанавливает arStep в 1.

           См. также:      TScrolBar::setStep,     TScrollBar::setParam,
      TScrollBar::scrollStep


      chars         TScrollChars chars;
      -----
           TScrollChars определяется следующим образом:

            typedef char TScrollChars[5];

           chars установлено при помощи пяти основных символьных образ-
      цов, используемых для изображения частей строк прокрутки экрана.


      maxVal        short maxVal;
      ------
           Поле maxVal представляет максимальное значение  поля  value.
      По умолчанию конструктор TScrollBar устанавливает maxVal в 0.

           См. также: TScrollBar::setRange, TScrollBar::setParams


      minVal        short minVal;
      ------
           Поле minVal представляет минимальное значение поля value. По
      умолчанию  конструктор TScrollBar устанавливает minVal в значение
      0.

           См. также: TScrollBar::setRange, TScrollBar::setParams



      pgStep        short pgStep;
      ------
           pgStep - это количество,  добавляемое или вычитаемое из поля
      value строк прокрутки, при нажатии на кнопки "мыши" в любой части
      области страницы (sbPageLeft,  sbPageRight, sbPageUp, sbPageDown)
      или  обнаружении  эквивалентных  нажатий клавиш (Ctrl->,  Ctrl<-,
      PgUp или PgDn). По умолчанию конструктор TScrollBar устанавливает
      pgStep  в  значение 1.  pgStep может изменяться при использовании
      TScrollBar::setStep, TScrollBar::setParams и TScroller::setLimit.

           См. также:    TScrollBar::setStep,    TScrollBar::setParams,
      TScroller::setLimit, TScrollBar::scrollStep


      value         short value;
      -----
           Поле value  представляет  текущую  позицию  индикатора строк
      прокрутки. Этот маркер,  выделенный цветом, перемещается по стро-
      кам прокрутки, указывая относительную позицию (горизонтальную или
      вертикальную,  в зависимости от  ориентации  строк  прокрутки)  в
      тексте относительно всего текста, доступного для прокрутки.

           Многие события могут прямо или  косвенно  изменять  значение
      value (такие,  как отметки с помощью "мыши"  на  элементах  строк
      прокрутки,  изменение размера окна или изменение текста при прок-
      рутке).  Аналогично,  изменения в value могут потребовать запуска
      других  событий.  Конструктор TScroolBar устанавливает value в 0,
      по умолчанию.

           См. также:  TScrollBar::setValue,    TScrollBar::setParams,
                       TScrollBar::scrollDraw,  TScroller::handleEvent,
                       TScrollBar::TScrollBar


                                   Методы

      constructor   TScrollBar(const TRect& bounds);
      -----------
           Создает и инициализирует строки прокрутки с заданными грани-
      цами bounds,  вызывая конструктор TView.  value,  maxVal и minVal
      устанавливаются в 0.  pgStep и arStep устанавливаются в 1.  Формы
      элементов строк  прокрутки   по   умолчанию   устанавливаются   в
      TScrollChars.

           Если bounds задает size.x  =  1,  вы  получите  вертикальные
      строки прокрутки,  иначе  -  горизонтальные.  Вертикальные строки
      прокрутки  имеют  поле  growMode,  установленное  в  gfGrowLoX  |
      gfGrowHiX | gfGrowHiY; горизонтальные строки прокрутки имеют поле
      growMode, установленное gfGrowLoY | gfGrouHiX | gfGrowHiY.


      constructor   TScrollBar( StreamableInit streamableInit );
      -----------                                          (защищенный)

           Каждому потоковому классу необходим "построитель" для  расп-
      ределения  памяти  для  его объектов вместе с инициализированными
      указателями виртуальной таблицы.  Это  достигается  путем  вызова
      конструктора  с  аргументом  типа StreamableInit.  Смотрите также
      главу 8.


      build         static TStreamable *build();
      -----
           Вызывается для  создания  объекта  в  определенных ситуациях
      чтения из потока.

           См. также: TStreamableClass, ipstream::readData


      draw          void draw();
      ----
           Отображает строки  прокрутки в зависимости от текущих значе-
      ний bounds, value и палитры.

           См. также: TScrollBar::scrollDraw, TScrollBar::value


      getPalette    virtual const char * getPalette() const;
      ----------
           Возвращает cpScrollBar,   строку  палитры  строк  прокрутки,
      используемую по умолчанию, "\x04\x05\x05".


      handleEvent   virtual void handleEvent(TEvent& event);
      -----------
           Обрабатывает события строк прокрутки,  вызывая метод TView::
      handleEvent,  затем анализируя event.what. События "мыши" переда-
      ются владельцу  строк  прокрутки (см.  функцию message),  который
      должен производить  соответствующие  изменения  строк   прокрутки
      (например, прокручивать  на  экране  текст).  Метод  TScrollBar::
      handleEvent так же определяет, в какой части строк прокрутки была
      нажата кнопка  "мыши"  (или  эквивалентная  клавиша).  Поле value
      настраивается в  соответствии  с  текущими  значениями  arStep  и
      pgStep, и индикатор области прокрутки перерисовывается.

           См. также: TView::handleEvent


      read          virtual void *read( ipstream is );
      ----
           Осуществляет считывание из входного потока is.

           См. также: TStreamableClass, TStreamable, классы ipstream


      scrollDraw    virtual void scrollDraw();
      ----------
           Метод ScrollDraw вызывается при любых изменениях поля value.
      Этот   виртуальный   метод   вызывается    передачей    сообщения
      cmScrollBarChanged владельцу области прокрутки:

               message(Owner, evBroadcast, cmScrollBarChanged, this);

           См. также: TScrollBar::value, функция message


      scrollStep    virtual short scrollStep(short part);
      ----------
           По умолчанию scrollStep возвращает положительное или отрица-
      тельное значение шага,  в зависимости от части области прокрутки,
      заданной в part,  и текущих значений arStep  и  pgStep.  Аргумент
      part должен быть одной из констант sbXXXX, описанных в главе 14.

           См. также: TScrollBar::setStep, TScrollBar::setParams


      setParams     void setParams(short aValue, short aMin, short aMax,
      ---------                    short aPgStep, short aArStep);

           Метод setParams  устанавливает поля value,  minVal,  maxVal,
      pgStep и arStep в заданные значения.  Если аргументы конфликтуют,
      выполняются согласования.  Например,  minVal не может быть больше
      maxVal,  поэтому если  aMax  <  aMin,  maxVal  устанавливается  в
      minVal.  value должно лежать в диапазоне [minVal, maxVal], поэто-
      му,  если value < aMin,  value  устанавливается  в  minVal;  если
      aValue > aMax, value устанавливается в maxVal. drawView отобража-
      ет область прокрутки заново. Если value изменяется, будет вызвана
      scrollDraw.

           См. также: TView::drawView,     TScrollBar::scrollDraw,
                      TScrollBar::setRange, TScrollBar::setValue


      setRange      void setRange(short aMin, short aMax);
      --------
           Метод setRange  задает  допустимый  диапазон для поля value,
      устанавливая minVal и maxVal в aMin  и  aMax.  setRange  вызывает
      setParams,  поэтому  drawView и scrollBar будут вызываться,  если
      изменения требуют перерисовки строк прокрутки.

           См. также: TScrollBar::setParams


      setStep       void setStep(short aPgStep, short aArStep);
      -------
           setStep устанавливает  поля  pgStep  и  arStep  в  aPgStep и
      aArStep.  Этот метод вызывает setParams с остальными аргументами,
      равными их текущим значениям.

           См. также: TScrollBar::setParams, TScrollBar::scrollStep


      setValue      void setValue(short aValue);
      --------
           Метод setValue устанавливает поле value  в  aValue,  вызывая
      setParams с остальными аргументами, установленными в них текущими
      значениями. drawView и scrollDraw вызываются, если этот вызов из-
      меняет значение value.

           См. также:      TScrollBar::setParams,      TView::drawView,
      TScrollBar::scrollDraw, TScroller::scrollTo


      write         virtual void write( opstream& os);
      -----
           Осуществляет запись в выходной поток os.

           См. также: TStreamableClass, TStreamable, opstream


                              Дополнительные функции

           Определенные функции относятся к классу  TScrollBar,  но  не
      являются методами.


                                   Палитра

           Объекты строк прокрутки используют  палитру  (по  умолчанию)
      cpScrollBar  для отображения заданных значений в 4 и 5-й элементы
      стандартной палитры прикладной программы.

                              1   2   3
                            ЙНННСНННСННН»
              cpScrollBar   єx04іx05іx05є
                            ИНСНПНСНПНСНј
               Страница ДДДДДДЩ   і   АДДДДД Индикатор
               Стрелки  ДДДДДДДДДДЩ








        TScroller                                                VIEWS.H
      -----------------------------------------------------------------

                                 ЪДДДДДДДДДї
                                 і  TView  і
                                 АДДДДВДДДДЩ
                                ЙНННННПННННН»
                                є TScroller є
                                ИНННННСНННННј
                               ЪДДДДДДБДДДДДДї
                               і TTextDevice і
                               АДДДДДДДДДДДДДЩ


                                    Поля

      delta         TPoint delta;
      -----
           Содержит x (горизонтальная) и  y  (вертикальная)  компоненты
      позиции бегунок  прокрутки  относительно виртуальных отображаемых
      строк прокрутки.  Автоматическая прокрутка достигается изменением
      одной или обеих компонент в ответ, например, на события, изменяю-
      щих значения поля value.  "Ручная"  прокрутка  изменяет  значение
      delta, вносит изменения в поле value области прокрутки и приводит
      к обновлению индикаторов области прокрутки.

           См. также: TScroller::scrollDraw, TScroller::scrollTo


      drawFlag      Boolean drawFlag;
      --------
           Устанавливает значение True,  если надо перерисовать бегунок
      прокрутки.

           См. также: TView::drawView, TScroller::drawLock,
                      TScroller::checkDraw


      drawLock      uchar drawLock;
      --------
           Семафор, используемый для управления перерисовыванием  бегу-
      нок прокрутки.

           См. также: TView::drawView, TScroller::drawFlag,
                      TScroller::checkDraw


      hScrollBar    TScrollBar *hScrollBar;
      ----------
           Указывает на горизонтальный объект строк прокрутки,  связан-
      ный с бегунком прокрутки.  Если такой строки нет,  то  hScrollBar
      равен 0.


      limit         TPoint limit;
      -----
           limit.x и limit.y - это максимально допустимые значения  для
      delta.x и delta.y.

           См. также: TScroller::delta


      vScrollBar    TScrollBar *vScrollBar;
      ----------
           Указывает на вертикальный объект строки прокрутки, связанный
      с бегунком прокрутки. Если такой строки нет, vScrollBar равно 0.


                                   Методы

      constructor   TScroller(const TRect& bounds, TScrollBar
      -----------               *aHScrollBar, TScrollBar *aVScrollBar);

           Создает и инициализирует объект TScroller с заданным  разме-
      ром  и элементов прокрутки.  Вызывает конструктор TView для уста-
      новки размера отображаемой  области.  options  устанавливается  в
      значение ofSelectable, а eventMask устанавливается в evBroadcast.
      aHScrollBar должен быть равен 0, если вы не хотите иметь горизон-
      тальной  прокрутки;  аналогично  aVScrollBar должен быть равен 0,
      если вы не хотите иметь вертикальной прокрутки.

           См. также: TView::TView, TView::options, TView::eventMask


      biuld         static TStreamable *build();
      -----
           Каждому потоковому классу необходим "построитель" для  расп-
      ределения  памяти  для  его объектов вместе с инициализированными
      указателями виртуальной таблицы.  Это  достигается  путем  вызова
      конструктора  с  аргументом  типа StreamableInit.  Смотрите также
      главу 8.

           См. также: TStreamableClass, ipstream::readData


      changeBounds  virtual void changeBounds(const TRect& bounds);
      ------------
           Изменяет размер строк прокрутки, вызывая setBounds. Если не-
      обходимо, область прокрутки и прокручиваемые строки перерисовыва-
      ются вызовом drawView и setLimit.

           См. также: TView::setBounds, TView::drawView,
                      TScroller::setLimit


      checkDraw     void checkDraw();
      ---------
           Если drawLock  равно  0  и  drawFlag  имеет  значение  True,
      drawFlag устанавливается в значение False, и вызывается drawView.
      Если  drawLock  не  равно  0  или  drawFlag имеет значение False,
      checkdraw не производит никаких  действий.  scrollTo  и  setLimit
      каждый вызывает checkDraw таким образом,  что drawView вызывается
      только в том случае, когда это необходимо.


      getPalette    virtual TPalette& getPalette() const;
      ----------
           Возвращает cpScroller,  используемую  по  умолчанию  палитру
      прокрутки, "\x06\x07".


      handkeEvent   virtual void handleEvent(TEvent& event);
      -----------
           Обрабатывает большинство     событий,     вызывая      метод
      TView::handleEvent.  Общие события, такие как cmScrollBarChanged,
      если они пришли от hScrollBar или vScrollBar,  приводят к  вызову
      TScroller::scrollDraw.

           См. также: TView::handleEvent, TScroller::scrollDraw


      read          virtual void *read( ipstream& is );
      ----
           Производит считывание из входного потока is.

           См. также: TStreamableClass, TStreamable, ipstream


      scrollDraw    virtual void scrollDraw();
      ----------
           Проверяет, удовлетворяет  ли  delta соответствующим позициям
      элементов прокрутки.  Если нет - delta устанавливается в коррект-
      ное  значение,  и  вызывается drawView для повторного отображения
      бегунка прокрутки.

           См. также: TView::drawView,          TScroller::delta,
                      TScroller::hScrollBar, TScroller::vScrollBar


      scrollTo      void scrollTo(short x, short y);
      --------
           Устанавливает строки    прокрутки    в   (x,   y),   вызывая
      hScrollBar->setValue(x) и vScrollBar->setValue(y),  и перерисовы-
      вает отображаемый объект, вызывая drawView, если это необходимо.

           См. также: TView::drawView, TScroller::setValue


      setLimit      void setLimit(short x, short y);
      --------
           Устанавливает поле limit и перерисовывает элементы и бегунок
      прокрутки, если это необходимо.

           См. также:      TScroller::limit,       TScroller::hScroller,
      TScroller::vScrollBar, TScrollBar::setParams, TScroller::checkDraw


      setState    virtual void setState(ushort aState, Boolean enable);
      --------
           Этот метод вызывается при любых изменениях состояния бегунка
      прокрутки. Вызывает TView::setState для  установки  или  очищения
      флагов  состояния  в aState.  Если новое состояние - sfSelected и
      sfActive,  setState  отображает  элементы  прокрутки,  иначе  они
      "скрываются" (становятся неотображаемыми).

           См. также: TView::setState


      shutDown      virtual void shutDown();
      --------
           Используется внутри  TObject::destroy для подтверждения пра-
      вильного удаления порожденных и связанных объектов.  shutDown пе-
      реопределяется во многих классах для того,  чтобы быть уверенным,
      что установлены допустимые связанные поля при вызове destroy.

           См. также: глава 6, "Разработка надежных программ"


      write         virtual void write( opstream& os );
      -----
           Производит запись в выходной поток os.

           См. также: TStreamableClass, TStreamable, opstream


                           Дополнительные функции

           Определенные функции относятся к классу TScroller, но не яв-
      ляются методами.

                                   Палитра

           Объекты прокрутки используют по умолчанию палитру cpScroller
      для  отображения  заданных  значений в 6 и 7 элементы стандартной
      палитры программы.

                             1   2
                           ЙНННСННН»
              cpScroller   є 6 і 7 є
                           ИНСНПНСНј
               Обычный ДДДДДДЩ   АДДДД Подсвеченный









        TSItem                                                 DIALOGS.H
      -----------------------------------------------------------------

                               ЙННННННННННН»
                               є  TSItem   є
                               ИНННННННННННј

           TSItem является простым, неотображаемым классом, поддержива-
      ющим  односвязный  список символьных строк.  Этот класс полезен в
      том случае,  когда не нужна полная гибкость коллекции строк (см.,
      например, класс TCluster).


                                    Поля

      next          TSItem *next;
      ----
           Указатель на следующий объект TSItem в связанном списке.


      value         const char *value;
      -----
           Строка для объекта TSItem.


                                   Методы

      constructor   TSItem(const char *aValue, TSItem *aNext);
      -----------
           Создает объект TSItem с заданными значениями.


      destructor    ~TSItem();
      ----------
           Удаляет объект TSItem путем вызова delete value.







        TSortedCollection                                      OBJECTS.H
      -----------------------------------------------------------------

              ЪДДДДДДДДДДДДДї        ЪДДДДДДДДДДДДДДДДДДДДДї
              і TCollection і        і TNSSortedCollection і
              АДДДДДДВДДДДДДЩ        АДДДДДДДДДДВДДДДДДДДДДЩ
                     АДДДДДДДї   ЪДДДДДДДДДДДДДДЩ
                    ЙННННННННПНННПНННННН»
                    є TSortedCollection є
                    ИННННННННСННННННННННј
                    ЪДДДДДДДДБДДДДДДДДДДї
                    і TStringCollection і
                    АДДДДДДДДДДДДДДДДДДДЩ

           Абстрактный класс TSortedCollection является наследуемым  от
      TCollection и TNSSortedCollection,  реализуя потоковую коллекцию,
      отсортированную по ключу (с или без дублирования). Не допускается
      использование никаких экземпляров TSortedCollection. Он существу-
      ет в единственном числе,  как основа для других  стандартных  или
      заданных пользователем классов.

           Сортировка производится  при  помощи  чисто  виртуального (и
      внутреннего) метода compare,  который вы должны переопределить  в
      наследуемых классах, чтобы задать свое определение упорядочивания
      элементов.  Когда добавляются новые элементы,  они  автоматически
      вставляются в порядке,  заданном методом compare.  Элементы можно
      находить,  используя  метод   поиска   search,   наследуемый   из
      TNSSortedCollection.  Виртуальный  метод keyOf (также наследуемый
      из TNSSortedCollection), возвращающий указатель для compare, так-
      же  может  переопределяться,  если compare требует дополнительной
      информации.

           Вы можете использовать этот класс для работы с отсортирован-
      ными    потоковыми   коллекциями.   Кроме   потоковости,   классы
      TSortedCollection и TNSSortedCollection выполняют одни  и  те  же
      функции.

                                   Методы

      constructor   TSortedCollection(ccIndex aLimit, ccIndex aDelta);
      -----------
           Запускает конструктор TCollection для установки count, items
      и limit в 0;  вызывает setLimit(aLimit) для установки размера на-
      бора в aLimit,  затем устанавливает delta в значение aDelta.  За-
      метьте,  что ccIndex имеет тип int. duplicates установлено в зна-
      чение False.  Если вы хотите иметь дублированные ключи, вы должны
      установить duplicates в значение True.


      constructor   TSortedCollection( StreamableInit streamableInit );
      -----------                                       (защищенный)

           Каждому потоковому  классу необходим "построитель" для расп-
      ределения памяти для его объектов  вместе  с  инициализированными
      указателями  виртуальной  таблицы.  Это  достигается путем вызова
      конструктора с аргументом  типа  StreamableInit.  Смотрите  также
      главу 8.

           См. также: TCollection::TCollection, поля TCollection


      compare       virtual int compare(void *key1, void *key2) = 0;
      -------                                               private

           comapre является чисто виртуальным методом,  который  должен
      быть переопределен во всех наследуемых классах (или перезадан как
      чисто виртуальный).

           См. также: TNSSortedCollection::compare


      read          void read( ipstream& is );
      ----                                               (защищенный)

           Считывает отсортированную коллекцию из входного потока is.

           См. также: TStreamableClass, TStreamable, ipstream


      readItem      void *TSortedCollection::readItem( ipstream& is );
      --------
           Вызывается для каждого элемента в коллекции. Вам потребуется
      переопределить  его  в  каждом  наследуемом  из  TCollection  или
      TSortedCollection  классе  для  того,  чтобы элементы считывались
      правильно. TSortedCollection уже переопределил этот метод.

           См. также: TStreamableClass, TStreamable, ipstream


      write         void write( opstream& os );
      -----                                                (защищенный)

           Записывает соответствующий объект TSortedCollection в выход-

           См. также: TStreamableClass, TStreamable, классы opstream


      writeItem     void TSortedCollection::writeItem( void *obj,
      ---------                                  opstream& os );

           Вызывается для каждого элемента в коллекции. Вам потребуется
      переопределить  его  в  каждом  наследуемом  из  TCollection  или
      TSortedCollection  классе  для того,  чтобы элементы записывались
      правильно. В классе TSortedCollection этот метод уже  переопреде-
      лен.

           См. также: TStreamableClass, TStreamable, opstream


                           Дополнительные функции

           Определенные функции  относятся  к классу TSortedCollection,
      но не являются методами.








        TStaticText                                            DIALOGS.H
      -----------------------------------------------------------------

                                 ЪДДДДДДДї
                                 і TView і
                                 АДДДВДДДЩ
                              ЙННННННПНННННН»
                              є TStaticText є
                              ИННННННСННННННј
                                 ЪДДДБДДДДї
                                 і TLabel і
                                 АДДДДДДДДЩ

           Объекты TStaticText  представляют  простейшие   отображаемые
      объекты: они  содержат фиксированный текст и игнорируют все собы-
      тия, переданные им.  Они используются,  обычно, как сообщения или
      статические метки.  Потомки TStaticText, такие как TLabel, выпол-
      няют более активную роль.


                                    Поля

      text          const char *text;                    (защищенный)
      ----
           Указатель на строку текста,  видимую в отображаемом объекте.


                                   Методы

      constructor   TStaticText(const TRect& bounds, const char *atext);
      -----------
           Создает объект   StaticText   заданного   размера,   вызывая
      TView(bounds), затем устанавливая text в newStr(aText).


      constructor   TStaticText( StreamableInit streamableInit );
      -----------                                         (защищенный)

           Каждому потоковому  классу необходим "построитель" для распре-
      деления памяти для его объектов вместе с инициализированными ука-
      зателями   виртуальной  таблицы.  Это  достигается  путем  вызова
      конструктора с аргументом  типа  StreamableInit.  Смотрите  также
      главу 8.

           См. также: TView::TView, newStr


      destructor    ~TStaticText();
      ----------
           Освобождает строку text,  затем вызывает ~TView для удаления
      объекта.


      build         static TStreamable *build();
      -----
           Вызывается для создания  объекта  в  определенных  ситуациях
      чтения из потока.

           См. также: TStreamableClass, ipstream::readData


      draw          virtual void draw();
      ----
           Отображает строку текста внутри отображаемого объекта (слово
      при необходимости переносится). '\n' в тексте указывает на начало
      новой строки.  Строка текста центрируется в отображаемом объекте,
      если она начинается с 0x03 (Ctrl-C).


      getPalette    virtual TPalette* getPalette() const;
      ----------
           Возвращает стандартную палитру cpStaticText, "\x06".


      read          virtual void *read( ipstream& is );
      ----
           Осуществляет считывание из входного потока is.

           См. также: TStreamableClass, TStreamable, ipstream


      write         virtual void write( opstream& os );
      -----
           Осуществляет запись в выходной поток os.

           См. также: TStreamableClass, TStreamable, opstream


                           Дополнительные функции

           Определенные функции  относятся к классу TStaticText,  но не
      являются методами.


                                   Палитра

           Статический текст    использует    по    умолчанию   палитру
      cpStaticText для отображения заданного значения в 6-й элемент па-
      литры стандартного диалога.

                                   1
                                 ЙННН»
                   cpStaticText  єx06є
                                 ИНСНј
                    Цвет текста ДДДЩ







        TStatusDef                                               MENUS.H
      -----------------------------------------------------------------

                         ЙННННННННННННН»
                         є TStatusDef  є
                         ИНННННННННННННј

           Объект TStatusDef является скрытым,  но представляет опреде-
      ление   строки   состояния,  используемое  отображаемым  объектом
      TStatusLine для изображения строк состояния,  зависящих  от  кон-
      текста.  Поле  next  указывает  на  следующий объект TStatusDef в
      списке строк состояния (или 0, если он последний). Поля min и max
      определяют размер текста подсказки, сопровождающего строку состо-
      яния.  items указывает на элементы состояния, составляющие строку
      состояния.

           Объект TStatusLine имеет указатель, называемый defs, на свя-
      занный список объектов TStatusDef.  TStatusLine всегда отображает
      первый  элемент  состояния,  для которого текущее значение текста
      подсказки лежит между min и max.  TStatusLine::update может  быть
      вызван из TProgram::idle для правильного изменения строки состоя-
      ния области просмотра.


                                    Поля

      items         TStatusItem *items;
      -----
           items указывает на список элементов состояния,  составляющих
      строку состояния.  Значение 0 показывает, что элементов состояния
      нет.

           См. также: класс TStatusLine, класс TStatusItem


      min, max      ushort min, max
      --------
           Минимальное и максимальное значения текста подсказки,  кото-
      рому  соответствует  данное  определение  состояния.  TStatusLine
      всегда отображает первый элемент состояния,  для которого текущее
      значение текста подсказки лежит между min и max.

           См. также: TStatusLine::draw


      next          TStatusDef *next;
      ----
           Ненулевое значение  next  указывает  на   следующий   объект
      TStatusDef в списке определений состояния. Нулевое значение пока-
      зывает, что данный объект TStatusDef является последним в списке.


                                   Методы

      constructor   TStatusDef(ushort aMin, ushort aMax, TStatusItem
      -----------              *someItems, TStatusDef *aNext);

           Создает объект TStatusDef с заданными значениями.








        TStatusItem                                              MENUS.H
      -----------------------------------------------------------------

                             ЙННННННННННННН»
                             є TStatusItem є
                             ИНННННННННННННј

           Объект TStatusItem является скрытым,  но представляет компо-
      ненту (элемент  состояния)  связанного  списка,  соответствующего
      отображаемому объекту  TStatusline.  Последний  может  отображать
      строку состояния и обрабатывать события строки  состояния,  такие
      как нажатие управляющей клавиши и выбор команды. Элементы состоя-
      ния могут быть отображаемыми  или  неотображаемыми.  В  последнем
      случае элементы служат только для определения клавиши управления.
      Поле next указывает на следующий объект TStatusItem в списке, или
      равен 0,  если он является последним.  Поле text - это символьная
      строка, содержащая описание элемента (такое как " - Exit".
      Если text равно 0,  то элемент состояния является неотображаемым.
      Поле keyCode содержит скэн-код управляющей клавиши, соответствую-
      щей команде, или равно 0, если такой управляющей клавиши нет. По-
      ле command содержит событие (в виде команды), которое должно быть
      сгенерировано при выборе элемента просмотра посредством управляю-
      щей клавиши или "мыши".

           TStatusItem служит для двух целей:  он управляет  визуальным
      появлением строки состояния, и определяет управляющую клавишу для
      соответствия кодов клавиш командам.  TProgram::getEvent  вызывает
      TStatusLine::handleEvent для всех событий evKeyDown, и элементы в
      текущей строке состояния просматриваются для приведения  в  соот-
      ветствие с кодами клавиш.  Если соответствие не найдено,  событие
      evKeyDown  преобразуется  в  событие  evCommand,  заданное  полем
      command в соответствующем объекте элемента состояния.


                                    Поля

      command       ushort command;
      -------
           Значение команды, соответствующей элементу состояния.


      keyCode       ushort keyCode;
      -------
           Скэн-код для соответствующей клавиши управления.


      next          TStatusItem *next;
      ----
           Ненулевое значение  next  указывает  на   следующий   объект
      TStatusItem в связанном списке, соответствующем строке состояния.
      Нулевое значение показывает, что это последний элемент в списке.


      text          const char *text;
      ----
           Текстовая строка,  отображаемая для данного элемента состоя-
      ния. Если равна 0,  не будет отображаться никакое  описание,  что
      означает, что элемент состояния предназначен только для определе-
      ния управляющей клавиши, используемой полем keyCode.

          См. также: класс TStatusLine


                                   Методы

      constructor   TStatusItem(const char *aText, ushort key,
      -----------               ushort cmd, TStatusItem *aNext) = 0;

           Создает объект TStatusItem с заданными значениями.







        TStatusLine                                              MENUS.H
      -----------------------------------------------------------------

                              ЪДДДДДДДДДї
                              і  TView  і
                              АДДДДВДДДДЩ
                            ЙННННННПНННННН»
                            є TStatusLine є
                            ИНННННННННННННј

           Объект TStatusLine - это особая область, обычно отображаемая
      внизу экрана. Типичная строка состояния отображает список доступ-
      ных управляющих клавиш,  объем свободной памяти, время дня, теку-
      щий режим  редактирования и подсказок пользователя.  Отображаемые
      объекты   устанавливаются   в   связанный    список,    используя
      initStatusLine вызываемый TApplication, и отображаемый объект за-
      висит от контекста  подсказки  текущего  активного  отображаемого
      объекта. Как  и  строка меню и рабочая область,  строка состояния
      обычно принадлежит группе TApplication.

           Объекты строки состояния - объекты типа TStatusItem, которые
      содержат поля для текстовой строки, отображаемые в строке состоя-
      ния, кода ключа,  связываемого  с  управляющей  клавишей  (обычно
      функциональная  клавиша  или  комбинация  Alt-клавиша) и команды,
      посылаемой,  если отображаемый текст отмечен "мышью",  или нажата
      управляющая клавиша.

           Каждый объект  строки  состояния  содержит  связанный список
      defs строк состояния (объекты класса TStatusDef), которые опреде-
      ляют диапазон контекстных подсказок и список элементов состояния,
      отображаемый,  когда текущий контекст подсказки находится в  этом
      диапазоне.  Кроме  того,  hints или предопределенная строка может
      отображаться в соответствии с текущим контекстом подсказки.


                                    Поля

      defs          TStatusDef *defs;
      ----
           Указатель на   текущий   связанный   список   записей   типа
      TStatusDef.  Список для использования определяется  текущим  кон-
      текстом подсказки.

           См. также:          TStatusDef,         TStatusLine::update,
      TStatusLine::hint


      items         TStatusItem *items;
      -----
           Указатель на  текущий связанный список записей типа TStatus-
      Item.

           См. также: TStatusItem


                                   Методы

      constructor   TStatusLine(const TRect& bounds, TStatusDef& aDefs);
      -----------
           Создает объект TStatusLine с заданным размером bounds, вызы-
      вая  TView(bounds).  Бит  ofPreProcess  в   options   установлен,
      eventMask  устанавливается для включения evBroadcast,  а growMode
      устанавливается в gfGrowLoY | gfGrowHiX |  gfGrowHiY.  Поле  defs
      устанавливается в aDefs. Если aDefs имеет значение 0, items уста-
      навливается в 0, иначе items устанавливается в aDefs->items.


      constructor   TStatusLine( StreamableInit streamableInit );
      -----------                                          (защищенный)

           Каждому потоковому  классу необходим "построитель" для расп-
      ределения памяти для его объектов  вместе  с  инициализированными
      указателями  виртуальной  таблицы.  Это  достигается путем вызова
      конструктора с аргументом  типа  StreamableInit.  Смотрите  также
      главу 8.

           См. также: TView::TView


      destructor    ~TStatusLine();
      ----------
           Освобождает все  items  и defs в объекте TStatusLine,  затем
      вызывает ~TView.

           См. также: ~TView


      build         static TStreamable *build();
      -----
           Вызывается для  создания  объекта  в  определенных ситуациях
      чтения из потока.

           См. также: TStreamableClass, ipstream::readData

      draw          virtual void draw();
      ----
           Отображает строку состояния,  выводя строку text для каждого
      элемента состояния,  а затем все hints,  определенные для данного
      текущего контекста подсказки за полосой разделителя. draw исполь-
      зует соответствующие палитры,  cpNormal, cpSelect, cpNormDisabled
      или cpSelDisabled, в зависимости от статуса каждого элемента.

           См. также: TStatusLine::hint


      getPalette    virtual const char * getPalette() const;
      ----------
           Возвращает строку            стандартной            палитры,
      "\x02\x03\x04\x05\x06\ x07".


      handleEvent   virtual void handleEvent(TEvent& event);
      -----------
           Обрабатывает события, передаваемые строке состояния, вызывая
      TView::handleEvent,  затем проверяет на 3 вида специальных  собы-
      тий. Нажатия кнопок "мыши", когда ее курсор находится внутри пря-
      моугольника,  занимаемого элементом состояния, посылают командное
      событие с event::what,  установленного в command,  для этого эле-
      мента состояния.  События  от  клавиатуры  сравниваются  с  полем
      keyCode каждого элемента; соответствие вызывает командное событие
      command   этого    элемента.    Общие    события    с    командой
      cmCommandSetChanged  заставляют  строку  состояния заново отобра-
      жаться,  чтобы отобразить любые клавиши управления, которые могут
      быть разрешены или запрещены.

           См. также: TView::handleEvent, TStatusLine::draw


      hint          virtual const char* hint(ushort aHelpCtx);
      ----
           По умолчанию hint возвращает пустую строку.  Он должен  быть
      переопределен  для  обеспечения строки контекстно-ориентированной
      подсказки для аргумента aHelpCtx.  Непустая строка будет  отобра-
      жаться в строке состояния после полосы-разделителя.

           См. также: TStatusLine::draw


      read          virtual void *read( ipstream& is );
      ----
           Осуществляет считывание из входного потока is.

           См. также: TStreamableClass, TStreamable, классы ipstream


      update        void update();
      ------
           Обновляет строку  состояния,  выбирая корректные элементы из
      списка defs в зависимости от текущего контекста подсказки,  затем
      вызывает drawView для перерисовки строки состояния, если элементы
      были изменены.

           См. также: TStatusLine::defs


      write         virtual void write( opstream& os );
      -----
           Осуществляет запись в выходной поток os.

           См. также: TStreamableClass, TStreamable, классы opstream


                           Дополнительные функции

           Определенные функции относятся к классу TRect,  но не  явля-
      ются методами.


                                   Палитра

           Строки состояния    используют    по    умолчанию    палитру
      cpStatusLine для отображения заданных значений в элементы со 2 по
      7-й в палитре стандартной программы.

                        1    2    3    4    5    6
                     ЙННННСННННСННННСННННСННННСНННН»
      cpStatusLine   єx02 іx03 іx04 іx05 іx06 іx07 є
                     ИННСНПННСНПННСНПННСНПННСНПННСНј
                        і    і    і    і    і    і
      Нормальный текст ДЩ    і    і    і    і    АДД Выделенное
                             і    і    і    і        сокращение
      Недоступный текст ДДДДДЩ    і    і    АДДДДДДД Выделенный
                                  і    і             недоступный
      Сокращенный текст ДДДДДДДДДДЩ    АДДДДДДДДДДДД Выделенный







        TStreamable                                           TOBJSTRM.H
      -----------------------------------------------------------------

              ЙННННННННННННННННННН»    ЪДДДДДДДДДДДДДДДДДї
              є TSortedCollection є    і    TObject      і
              ИННННННСННННННННННННј    АДДДДДДДДВДДДДДДДДЩ
                     АДДДДДДДДДДДВДДДДДДДДДДДДДДЩ
                         ЪДДДДДДДБДДДДДДДДДї
                         і     TView       і
                         АДДДДДДДДДДДДДДДДДЩ

           TView имеет два базовых класса,  TObject и абстрактный класс
      TStreamable. Все отображаемые классы, производные из TView, таким
      образом,  также наследуются от TStreamable.  Несколько внутренних
      классов,  таких как TCollection,  TStrListMarker,  TStringList  и
      TxxxInit также имеют в качестве основного класс TStreamable.  Та-
      кие классы называются потоковыми,  что означает,  что их  объекты
      могут быть записаны в и считаны из потоков, используемых управля-
      ющей программой Turbo Vision.

           Если вы  хотите  разработать  свои   собственные   потоковые
      классы,  убедитесь, что класс TStreamable является для них "роди-
      тельским". Конечно, этого можно достичь использованием существую-
      щего потокового класса в качестве основного.

           Т.к. TStreamable  является абстрактным классом,  его объекты
      не могут быть внутренними.  Перед тем,  как потоковый класс может
      быть  использован  с  потоками,  класс  должен переопределить три
      чисто виртуальные функции streamableName, read и write.


                                   Методы

      read          virtual void *read( ipstream& is ) = 0;(защищенный)
      ----
           Этот чисто  виртуальный метод должен быть переопределен (или
      перезадан как чисто виртуальный)  в  каждом  наследуемом  классе.
      Этот  переопределенный  метод  read для каждого потокового класса
      должен считывать необходимые поля из входного потока объекта  is.
      read  обычно  применяется при помощи вызова метода read основного
      класса (если он есть), а затем выделением и добавлением полей для
      наследуемого класса.

           См. также: ipstream, TStreamableClass


      streamableName  virtual const char *streamableName() const = 0;
      --------------                                            private

           TStreamable не  имеет  конструктора.  Этот метод должен быть
      переопределен (или перезадан как чисто виртуальный)  для  каждого
      наследуемого  класса.  Он должен возвращать имя потокового класса
      того объекта, который его запускает. Это имя используется при ре-
      гистрации  потоков  управляющей  потоками  программой.  Например,
      TView переопределяет этот метод следующим образом:

           virtual const  char *streamableName() const
                                 { return TViewName; }

           TView::TViewName является  статическим  символьным массивом,
      содержащим имя "TView". Это возвращаемое имя должно быть уникаль-
      ным,  строкой, заканчивающейся нулевым символом, так что наиболее
      надежным методом является использование имени потокового класса.

           См. также: TStreamableClass, opstream, ipstream


      write         virtual void write( opstream& os ) = 0:
      -----                                               (защищенный)

           Этот чисто виртуальный метод должен быть переопределен  (или
      перезадан  как  чисто  виртуальный)  в каждом наследуемом классе.
      Этот переопределенный метод write для каждого  потокового  класса
      должен  записывать  необходимые поля в выходной поток объекта is.
      write обычно применяется при помощи вызова метода write основного
      класса (если он есть), а затем выделением и добавлением полей для
      наследуемого класса.

           См. также: TStreamableClass, opstream


                            Дружественные классы

           Классы opstream  и  ipstream  являются дружественными классу
      TStreamable,  так что все их методы могут иметь доступ к внутрен-
      ним полям TStreamable.







        TStreamableClass                                      TOBJSTRM.H
      -----------------------------------------------------------------

                      ЙННННННННННННННННННН»
                      є TStreamableClass  є
                      ИНННННННННННННННННННј

           Класс TStreamableClass         используется         классами
      TStreamableTypes и pstream при регистрации потоковых классов.


                                   Методы

      constructor   TStreamableClass( const char *n, BUILDER b, int d );
      -----------
           Создает объект TStreamable с заданным именем и заданным  ме-
      тодом  builder,  затем  вызывает  registerType.  Каждый потоковый
      класс TClassname имеет метод build. Также имеет аналогичные пере-
      загруженные операторы >> и <<, работающие не с полями, а для вво-
      да/вывода потока,  соответствующие каждому потоковому классу. Для
      ввода /вывода объекта-потока программа, управляющая потоками тре-
      бует доступ к именам и информации о типах для каждого класса. Для
      того,  чтобы убедиться, что соответствующие методы включены в лю-
      бую прикладную программу при помощи программы,  управляющей пото-
      ками, вы должны иметь указатель extern следующего вида:

          extern TStreamableClass registerTClassName;

      где TClassName - это имя класса, чьи объекты надо сделать потоко-
      выми (заметьте, что registerTClassName является отдельным иденти-
      фикатором). Этот метод не только регистрирует TClassName (сообщая
      программе, управляющей потоками, какой метод build использовать),
      он также автоматически регистрирует все зависимые классы.  Вы мо-
      жете регистрировать класс более одного раза без всякого вреда или
      лишних затрат.

           Тип BUILDER определен следующим образом:

           typedef TSreamable *(*BUILDER)();

           См. также:   TStreamable,   TStreamableTypes,  read,  write,
      build, TStreamableTypes::registerTypes, ipstream, opstream


                            Дружественные классы

           Классы TStreamableTypes,  opstream  и ipstream являются дру-
      жественными классу TStreamableClass,  так что все их методы могут
      иметь доступ к внутренним полям класса TStreamableClass.







        TStreamableTypes                                     TOBJSTRM.H
      ----------------------------------------------------------------

                    ЪДДДДДДДДДДДДДДДДДДДДДї
                    і TNSSortedCollection і
                    АДДДДДДДДДВДДДДДДДДДДДЩ
                    ЙНННННННННПНННННННННН»
                    є TStreamableTypes   є
                    ИННННННННННННННННННННј

           TStreamableTypes, выделенный   изнутри  TNSSortedCollection,
      содержит базу данных для всех зарегистрированных типов, использу-
      емых во всех прикладных программах. opstream и ipstream использу-
      ют эту базу данных для  определения  правильных  методов  read  и
      write для конкретных объектов. Из-за внутреннего наследования все
      наследуемые поля являются внутренними внутри TStreamableTypes.


                                   Методы

      constructor   TStreamableTypes();
      -----------
           Вызывает основной конструктор TNSCollection для создания на-
      бора TStreamableTypes.

           См. также: TNSCollection::TNSCollection


      destructor    ~TStreamableTypes();
      ----------
           Устанавливает поле  limit коллекции в 0 без уничтожения кол-
      лекции (т.к. поле shouldDelete имеет значение False).

           См. также: TNSCollection::~TNSCollection,
                      TNSCollection::shouldDelete


      lookup        const TStreamableClass *lookup( const char *name );
      ------
           Возвращает указатель класса  в  коллекции,  соответствующему
      аргументу name, или 0, если такого нет.


      registerTypes  void registerTypes( const TStreamableClass *d );
      -------------
           Регистрирует класс путем вставки d в коллекцию.

           См. также: TNSCollection::insert, TStreamableClass








        TStringCollection                                     RESOURCE.H
      -----------------------------------------------------------------

                            ЪДДДДДДДДДДДДДДДДДДДї
                            і TSortedCollection і
                            АДДДДДДДДВДДДДДДДДДДЩ
                            ЙННННННННПНННННННННН»
                            є TStringCollection є
                            ИННННННННСННННННННННј
                           ЪДДДДДДДДДБДДДДДДДДДДДї
                           і TResourceCollection і
                           АДДДДДДДДДДДДДДДДДДДДДЩ

           Класс TStringCollection      является     наследуемым     из
      TSortedCollection и реализует сортированный список  строк  ASCII.
      Метод  TStringCollection::compare  переопределяется  для  задания
      обычного лексикографического упорядочения строк ASCII.  Вы можете
      переопределить  метод  compare  для задания другого упорядочения,
      такого например, как для не английских наборов символов.


                                   Методы

      constructor   TStringCollection(short aLimit, short aDelta);
      -----------
           Создает объект TStringCollection с заданными значениями.


      constructor   TStringCollection( StreamableInit streamableInit );
      -----------                                          (защищенный)

           Каждому потоковому классу необходим "построитель" для  расп-
      ределения  памяти  для  его объектов вместе с инициализированными
      указателями виртуальной таблицы.  Это  достигается  путем  вызова
      конструктора  с  аргументом  типа StreamableInit.  Смотрите также
      главу 8.

           См. также: TSortedCollection::TSortedCollection


      build         static TStreamable *build();
      -----
           Вызывается для создания  объекта  в  определенных  ситуациях
      чтения из потока.

           См. также: TStreamableClass, ipstream::readData


      compare       virtual int compare(void *key1, void *key2);
      -------
           Сравнивает "строки" key1 и key2 следующим образом: возвраща-
      ет <0,  0,  >0, если key1 < key2; 0, если key1 = key2; и +1, если
      key1 > key2.

           См. также: TSortedCollection::search


      freeItem      virtual void freeItem(void *item);
      --------
           Удаляет строку  item из отсортированной коллекции и освобож-
      дает строку.


      read          virtual void *read( ipstream& is );
      ----
           Осуществляет считывание из входного потока is.

           См. также: TStreamableClass, TStreamable, ipstream


      readItem      void *TStringCollection::readItem( ipstream& is );
      --------
           Вызывается для каждого элемента коллекции.  Вам  потребуется
      переопределить   этот  метод  во  всех  классах,  наследуемых  из
      TCollection или TSortedCollection для того, чтобы элементы считы-
      вались правильно. TSortedCollection уже переопределил этот метод.

           См. также: TStreamableClass, TStreamable, ipstream


      write         virtual void write( opstream& os );
      -----
           Осуществляет запись в выходной поток os.

           См. также: TStreamableClass, TStreamable, opstream


      writeItem void TStringCollection::writeItem( void *obj,
      ---------                                    opstream& os );

           Вызывается для каждого элемента коллекции.  Вам  потребуется
      переопределить   этот  метод  во  всех  классах,  наследуемых  из
      TCollection или TSortedCollection для того,  чтобы  элементы  за-
      писывались  правильно.  TSortedCollection  уже переопределил этот
      метод.

           См. также: TStreamableClass, TStreamable, opstream


                           Дополнительные функции

           Определенные функции  относятся  к классу TStringCollection,
      но не являются методами.








        TStringList                                           RESOURCE.H
      -----------------------------------------------------------------

                ЪДДДДДДДДДДДї     ЪДДДДДДДДДДДДДї
                і  TObject  і     і TStreamable і
                АДДДВДДДДДДДЩ     АДДДДДДВДДДДДДЩ
                    ГДДДДДДДДДДДДДДДї    і
                    і     ЪДДДДДДДДДЕДДДДґ
               ЙННННПНННННПНН»   ЪДДБДДДДБДДДДДДДї
               є TStringList є   і TStrListMaker і
               ИНННННННННННННј   АДДДДДДДДДДДДДДДЩ

           Класс TStringList обеспечивает механизм доступа  к  строкам,
      хранящимся  в потоке.  Каждая строка,  хранящаяся в списке строк,
      идентифицируется  уникальным  номером  (ushort  key)  между  0  и
      65,535.  Списки строк занимают меньше памяти, чем обычные строки,
      поскольку строки хранятся в потоке,  а не в памяти.  Кроме  того,
      списки  строк  легко решают проблему настройки программ на языки,
      поскольку строки не "встроены" в программу.

           TStringList содержит методы только для  доступа  к  строкам;
      для создания списка строк вы должны использовать TStrListMaker.


      TStrIndexRec    Маленький  класс TStrIndexRec  используется вместе
      со списками строк. Он определен в RESOURCE.H следующим образом:

           class TStrIndexRec
           {

           public:

                 TStrIndexRec();   // конструктор устанавливает count=0

                 ushort key;
                 ushort count;
                 ushort offset;
           }

           Поле index в TStringList указывает на объект TStrIndexRec.


                                   Методы

      constructor   TStringList( StreamableInit streamableInit );
      -----------                                          (защищенный)

           Каждому потоковому классу необходим "построитель" для  расп-
      ределения  памяти  для  его объектов вместе с инициализированными
      указателями vtable.  Это  достигается путем вызова конструктора с
      аргументом типа StreamableInit. Смотрите также главу 8.

           См. также: TStrListMaker::TStrListMaker, TStrList::get


      destructor    ~TStringList();
      ----------
           Освобождает память, выделенную для списка строк.

           См. также: TStrListMaker::TStrListMaker, ~TStringList


      build         static TStreamable *build();
      -----
           Вызывается для  создания  объекта  в  определенных ситуациях
      чтения из потока.

           См. также: TStreamableClass, ipstream::readData


      get           void get (char *dest, ushort key);
      ---
           Возвращает в  dest  строку,  заданную через key,  или пустую
      строку, если нет строки с данным key.

           См. также: TStringListMaker::put


      read          virtual void *read( ipstream& is );
      ----
           Осуществляет считывание из входного потока is.

           См. также: TStreamableClass, TStreamable, классы ipstream


      write         virtual void write( opstream& os );
      -----
           Осуществляет запись в выходной поток os.

           См. также: TStreamableClass, TStreamable, классы opstream


                           Дополнительные функции

           Определенные функции  относятся к классу TStringList,  но не
      являются методами.








        StrListMaker                                          RESOURCE.H
      -----------------------------------------------------------------
                ЪДДДДДДДДДДДї     ЪДДДДДДДДДДДДДї
                і  TObject  і     і TStreamable і
                АДДДВДДДДДДДЩ     АДДДДДДВДДДДДДЩ
                    ГДДДДДДДДДДДДДДДї    і
                    і     ЪДДДДДДДДДЕДДДДґ
               ЪДДДДБДДДДДБДДДДї  ЙНПННННПНННННННН»
               і TStringList   і  є TStrListMaker є
               АДДДДДДДДДДДДДДДЩ  ИНННННННННННННННј

           Объект TStrListMaker - это простой тип объекта, используемый
      для создания списков строк, которые используют с TStringList.


                                   Методы

      constructor   TStrListMaker(ushort aStrSize, ushort aIndexSize);
      -----------
           Создает в памяти список строк размера aStrSize с индексом из
      aIndexSize элементов. Буфер строк и буфер индексов заданного раз-
      мера распределяются в "куче".

           aStrSize должен  быть  достаточно  велик  для  хранения всех
      строк,  добавляемых в список строк (каждая строка  занимает  свою
      длину, плюс конечный 0).

           При добавлении    строк    в    список    строк   (используя
      TStrListMaker::put) строится индекс строк.  Строки  с  последова-
      тельными  ключами  (такими,  как sError в предыдущем примере) за-
      писываются в одну индексную запись до 16 за один раз.  aIndexSize
      должен  быть достаточно большим для добавления всех сгенерирован-
      ных индексных записей. Каждый элемент индекса занимает 6 байт.


      constructor   TStrLIstmaker( StreamableInit streamableInit );
      -----------                                         (защищенный)

           Каждому потоковому  классу необходим "построитель" для расп-
      ределения памяти для его объектов  вместе  с  инициализированными
      указателями  виртуальной  таблицы.  Это  достигается путем вызова
      конструктора с аргументом  типа  StreamableInit.  Смотрите  также
      главу 8.

           См. также: TStringList::put, ~TStrListMaker


      destructor    ~TstrListmaker();
      ----------
           Освобождает память, выделенную маркеру списка строк.

           См. также: TStrListMaker::TstrListMaker


      build         static TStreamable *build();
      -----
           Вызывается для создания  объекта  в  определенных  ситуациях
      чтения из потока.

           См. также: TStreamableClass, ipstream::readData, TStreamable



      put           void put(ushort key, const char *s);
      ---
           Добавляет заданную  строку  s  к вызываемому списку строк (с
      заданным числовым key).


      write         virtual void write( opstream& os );
      -----
           Осуществляет запись в выходной поток os.

           См. также: TStreamableClass, TStreamable, opstream


                           Дополнительные функции

           Определенные функции относятся к классу TStrListMaker, но не
      являются методами.








        TSystemError                                            SYSTEM.H
      -----------------------------------------------------------------

                              ЙНННННННННННННН»
                              є TSystemError є
                              ИННННННННННННННј

           TSystemError поддерживает  обработчики  системных  ошибок  и
      соответствующий сервис.  Большинство из его полей являются  внут-
      ренними  и  не  будут  интересны  для обычных прикладных программ
      Turbo Vision.

                                    Поля

      ctrlBreakHit  static Boolean near ctrlBreakHit;
      ------------
           Устанавливается в  значение  True,   если   нажата   клавиша
      Ctrl-Break во время выполнения программы.


                                   Методы

      constructor   TSystemError();
      -----------
           Создает объект  TSystemError  и   устанавливает   обработчик
      системных ошибок путем вызова resume.


      destructor    ~TSystemError();
      ----------
           Удаляет обработчик системных ошибок путем вызова suspend.


      resume        static void resume();
      ------
           Устанавливает обработчик системных ошибок.


      suspend       static void susupend();
      -------
           Удаляет обработчик системных ошибок.








       TTextDevice                                            TEXTVIEW.H
      ------------------------------------------------------------------

                                ЪДДДДДДДДДДДї
                                і TScroller і
                                АДДДДДВДДДДДЩ
                               ЙННННННПНННННН»
                               є TTextDevice є
                               ИННННННСННННННј
                                ЪДДДДДБДДДДДї
                                і TTerminal і
                                АДДДДДДДДДДДЩ

           Класс TTextDevice - это  прокручиваемый  драйвер  устройства
      типа  TTY.  Кроме  полей  и  методов,  наследуемых  от TScroller,
      TTextDevice определяет виртуальные методы  для  чтения  и  записи
      строк в и из устройства.  TTextDevice существует, как базовый тип
      для  порождения  реальных  терминальных  драйверов.   TTextDevice
      использует деструктор TScroller.


                                   Методы

      constructor   TTextDevice(const TRect& bounds, TScrollBar
      -----------               *aHScrollBar, TScrollBar *aVScrollBar);

           Создает объект TTextDevice с заданными bounds,  горизонталь-
      ными  и   вертикальными   элементами   прокрутки   путем   вызова
      TTextScroller::TTextScroller  со  значением  bounds и аргументами
      бегунка прокрутки.

           См. также: TTextScroller::TTextScroller


      do_sputn      int do_sputn( const char *s, int );
      --------
           Переопределяет соответствующий  метод  в  классе  streambuf.
      Этот метод является внутренним и вызывается во всех случаях, ког-
      да символьная строка вставляется во внутренний буфер.


      overflow      int overflow( int );
      --------
           Переопределяет соответствующий  метод  в  классе  streambuf.
      Когда внутренний буфер  в  streambuf  полон,  и  iostream,  соот-
      ветствующий  этому streambuf,  пытается занести еще один символ в
      буфер, то вызывается метод overflow. Его аргументом является сим-
      вол,   который  вызывает  переполнение.  В  TTextDevice  основной
      streambuf не имеет буфера,  так что каждый символ вызывает  пере-
      полнение.   Классы,   наследуемые   из   TTextDevice,  такие  как
      TTerminal,  будут рассматривать этот символ просто как  следующий
      символ в выходном потоке.


                                     Палитра

           Объекты текстового устройства используют по умолчанию палит-
      ру  cpScroller для отображения заданных значений в 6 и 7 элементы
      стандартной палитры программы.

                             1   2
                           ЙНННСННН»
              cpScroller   єx06іx07є
                           ИНСНПНСНј
               Нормальный ДДДЩ   АДДДД Подсвеченный









       TView                                                     VIEWS.H
      -----------------------------------------------------------------

                              ЪДДДДДДДДДї
                              і TObject і
                              АДДДДВДДДДЩ
                            ЙННННННПНННННН»
                            є    TView    є
                            ИСССССССССССССј
              ЪДДДДДДДДДДДДДДЩіііііііііііАДДДДДДДДДДДДДДї
              і        ЪДДДДДДЩіііііііііАДДДДДДї        і
              і        іЪДДДДДДЩіііііііАДДДДДДїі        і
          ЪДДДБДДДДї   ііЪДДДДДДЩіііііАДДДДДДїіі    ЪДДДБДДДДї
          і TGroup і   іііЪДДДДДДЩіііАДДДДДДїііі    і TFrame і
          АДДДДДДДДЩ   ііііЪДДДДДДЩіАДДДДДДїіііі    АДДДДДДДДЩ
               ЪДДДДДДДЩіііі  ЪДДДДБДДДДї  ііііАДДДДДДДДї
          ЪДДДДБДДДДДї  іііі  і TButton і  іііі   ЪДДДДДБДДДДї
          і TCluster і  іііі  АДДДДДДДДДЩ  іііі   і THistory і
          АДДДДДДДДДДЩ  іііАДДДДДДї        іііі   АДДДДДДДДДДЩ
                ЪДДДДДДДЩіі ЪДДДДДБДДДДДї  іііАДДДДДДДДї
          ЪДДДДДБДДДДДї  іі і TScroller і  ііі  ЪДДДДДДБДДДДДї
          і TMenuView і  іі АДДДДДДДДДДДЩ  ііі  і TScrollBar і
          АДДДДДДДДДДДЩ  іі       ЪДДДДДДДДЩіі  АДДДДДДДДДДДДЩ
                 ЪДДДДДДДЩі ЪДДДДДБДДДДДДї  іАДДДДДДДДї
          ЪДДДДДДБДДДДДДї і і TInputLine і  і  ЪДДДДДДБДДДДДДї
          і TBackGround і і АДДДДДДДДДДДДЩ  і  і TListViewer і
          АДДДДДДДДДДДДДЩ і                 і  АДДДДДДДДДДДДДЩ
                   ЪДДДДДДБДДДДДДї   ЪДДДДДДБДДДДДДї
                   і TStatusLine і   і TStaticText і
                   АДДДДДДДДДДДДДЩ   АДДДДДДДДДДДДДЩ


           Большинство программ  используют  потомков  TView:   TFrame,
      TScrollBar, TScroller, TListViewer,TGroup и TWindow.

           Объекты TView  редко реализуются в программах,  написанных с
      использованием Turbo Vision.  Класс TView существует, главным об-
      разом, для того,  чтобы предоставить своим потомкам основные поля
      и соответствующие методы по их обработке.

                                    Поля

      commandSetChanged
      -----------------
           static Boolean commandSetChanged;

           Устанавливается в  True,  когда  набор  команд отображаемого
      объекта изменяется через enable, disable или вызов setCommand.

           См. также: TView::enableCommand(s),TView::disableCommand(s),
      TView::setCommands


      curCommandSet
      -------------
           static TCommandSet curCommandSet;

           Хранит набор команд, разрешенных в настоящий момент времени,
      для данного  отображаемого  объекта.  Сначала   команды   cmZoom,
      cmClose, cmResize,  cmNext,  cmPrev  не  разрешены.  Данное  поле
      постоянно контролируется handleEvent для определения того,  какие
      из произошедших  событий  необходимо обслужить.  curCommandSet не
      должен изменяться  непосредственно.  Используйте  соответствующие
      вызовы set, enable и disable.

           См. также: константы cmXXXX, TView::setCommands,
      TView::enableCommand(s),TView::disableCommand(s)


      cursor        TPoint cursor;
      ------
           Текущее положение   курсора  внутри  отображаемого  объекта.
      Курсор видим только, если отображаемый объект активен (sfFocused)
      и курсор включен (sfCursorVis). Форма курсора - это подчеркивание
      или прямоугольная область (задается в sfCursorIns).

           См. также:  setCursor, showCursor, hideCursor, normalCursor,
      blockCursor


      dragMode       uchar dragMode;
      --------
           Определяет поведение отображаемого объекта при перемещении с
      помощью "мыши".

               Биты dragMode определены следующим образом:

                   ЪДД dragMode Дї
              старший бит   младший бит

                   ЪДВДВДВДДДДДДДДДДД dmLimitAll = 0xF0
                  ЙПСПСПСПСНСНСНСН»
                  ИСПСПСПСПНПНПСПСј
                   і і і і     і АДДД dmDragMove = 0x01
                   і і і і     АДДДДД dmDragGrow = 0x02
                   і і і АДДДДДДДДДДД dmLimitLoX = 0x10
                   і і АДДДДДДДДДДДДД dmLimitLoY = 0x20
                   і АДДДДДДДДДДДДДДД dmLimitHiX = 0x40
                   АДДДДДДДДДДДДДДДДД dmLimitHiY = 0x80

           Рис. 13.1. Значения бит в dragMode.

           Маски dragMode  определены  в  разделе  "Константы  dragMode
      dmXXXX" главы 16.

           См. также: TView::dragView


      errorAttr     static uchar errorAttr;
      ---------
           Данный атрибут используется при выводе сообщений об ошибках.
      Например, mapColor возвращает errorAttr, если вызывается с непра-
      вильным параметром color.  По умолчанию  errorAttr  установлен  в
      "0CF", что соответствует мигающим красным символам на белом фоне.

           См. также: TView::mapColor


      eventMask     ushort eventMask;
      ---------
           eventMask - это флаг, который определяет, какие классы собы-
      тий будут распознаваться данным отображаемым объектом. По умолча-
      нию eventMask  разрешает  evMouseDown,  evKeyDown  и   evCommand.
      Присвоение eventMask значения 0xFFFF приведет к тому, что отобра-
      жаемый объект будет реагировать на все классы событий, а значение
      0 приводит к тому, что отображаемый объект не на что не будет ре-
      агировать. Для детального описания  классов  событий  см.  раздел
      "Константы evXXXX" главы 16.

           См. также:TView::handleEvent


      growMode      uchar growMode;
      --------
           Определяет, как будет изменяться данный отображаемый объект,
      когда его владелец изменит свой размер. growMode определяется од-
      ним или более из следующих значений:

                    ЪДД growMode Дї
               старший бит   младший бит

                            ЪДВДВДВДДД gfGrowAll = 0x0F
                   ЙНСНСНСНСПСПСПСП»
                   ИСПНПСПСПСПСПСПСј
                    АДВДЩ і і і і АДДД gfGrowLoX = 0x01
                      і   і і і АДДДДД gfGrowLoY = 0x02
             Неопределено і і АДДДДДДД gfGrowHiX = 0x04
                          і АДДДДДДДДД gfGrowHiY = 0x08
                          АДДДДДДДДДДД gfGrowRel = 0x10

           Рис. 13.2. Значения бит в growMode.

           Пример: growMode = gfGrowLoX | gfGrowLoY;

           См. также: константы gfXXXX growMode


      helpCtx       ushort helpCtx;
      -------
           Контекст подсказки отображаемого объекта. Когда отображаемый
      объект активен, это поле равно контексту подсказки (помощи) соот-
      ветствующему исполняемому фрагменту программы. Однако, если номер
      контекста  помощи равен hcNoContext,  то это означает,  что соот-
      ветствующего контекста нет.

           См. также: TView::getHelpCtx.


      next          TView *next;
      ----
           Указывает на  следующий в Z-последовательности эквивалентный
      отображаемый объект. Если же это последний подобъект, то next бу-
      дет указывает на первый подобъект данного владельца.


                              options ushort

      options;
      -------
           Биты флага options определяют поведение отображаемого объек-
      та. Эти биты описаны следующим образом:

           ЪДДДДДДДДДДДДД options ДДДДДДДї
          старший бит               младший бит

                       ЪДВДДДДДДДДДДДДДДДДДДД ofCentered    = 0x300
          ЙНСНСНСНСНСНСПСПСНСНСНСНСНСНСНСН»
          ИСПНПНПНПНПСПСПСПСПСПСПСПСПСПСПСј
           АДДДДВДДДДЩ і і і і і і і і і АДДД ofSelectable  = 0x001
                і      і і і і і і і і АДДДДД ofTopSelect   = 0x002
         Неопределено  і і і і і і і АДДДДДДД ofFirstClick  = 0x004
                       і і і і і і АДДДДДДДДД ofFramed      = 0x008
                       і і і і і АДДДДДДДДДДД ofPreProcess  = 0x010
                       і і і і АДДДДДДДДДДДДД ofPostProcess = 0x020
                       і і і АДДДДДДДДДДДДДДД ofBuffered    = 0x040
                       і і АДДДДДДДДДДДДДДДДД ofTileable    = 0x080
                       і АДДДДДДДДДДДДДДДДДДД ofCenterX     = 0x100
                       АДДДДДДДДДДДДДДДДДДДДД ofCenterY     = 0x200

                   Рис. 13.3. Значения бит флага options.

           Для подробного   знакомства  с  флагом  options  см.  раздел
      "Константы флага ofXXXX" главы 16.


      origin        TPoint origin;
      ------
           Координаты (x, y) верхнего левого угла отображаемого объекта
      относительно origin владельца.

           См. также: moveTo, locate


      owner         TGroup *owner;
      -----
           owner указывает  на  объект  TGroup,  который владеет данным
      отображаемым объектом.  В случае значения 0,  данный отображаемый
      объект не  имеет  владельца.  Он отображается в границах его вла-
      дельца и "отсекается" по этим границам.


      showMarkers   static Booiean showMarkers;
      -----------
           Указывает на то,  нужно ли размещать маркера вокруг активных
      органов управления.      TProgram::initScreen       устанавливает
      showMarkers в True,  если видеорежим монохромный,  в для цветного
      режима - в False. Однако, все зависимости от текущего видеорежима
      данный элемент может быть установлен в соответствии с вашим жела-
      нием.

           См. также: TProgram::initScreen, spesialChars


      shutDown      virtual void shutDown();
      --------
           Используется методом  TObject::destroy для корректного унич-
      тожения потомков и родственников.  shutDown  переопределяется  во
      многих   классах   для  обеспечения  корректной  установки  полей
      родственников, когда вызывается destroy.

           См. также: глава 6, "Разработка надежных программ"


      size          TPoint size;
      ----
           Размер отображаемого объекта.

           См. также: growTo, locate


      state         ushort state;
      -----
           Состояние отображаемого объекта задается набором бит во фла-
      ге state.  Многие  методы  класса  TView проверяют и/или изменяют
      родственников, когда вызывается destroy.

           См. также: глава 6, "Разработка надежных программ"


      size          TPoint size;
      ----
           Размер отображаемого объекта.

           См. также: growTo, locate


      state         ushort state;
      -----
           Состояние отображаемого объекта задается набором бит во фла-
      ге state.  Многие  методы  класса  TView проверяют и/или изменяют
      флаг state, вызывая для этого TView::setState.

           Метод TView::getState(aState) возвращает значение True, если
      состояние данного  отображаемого  объекта  равно  aState.  Биты в
      state мнемонически представлены константами, описанными в разделе
      "Константы флага состояния sfXXXX" главы 16.





      handleEvent   virtual void handleEvent(TEvent& event);
      -----------
           Основной метод,  через который реализована вся обработка со-
      бытий в  Turbo  Vision.  Поле what параметра event содержит класс
      события (evXXXX),  а оставшиеся поля  этого  параметра  описывают
      данное событие.  Для указания того, что событие обработано, метод
      handleEvent обращается  к  clearEvent.  Метод  handleEvent  почти
      всегда переопределяется в порождаемых классах.

           TView.HandleEvent обрабатывает события evMouseDown следующим
      образом: если данный отображаемый объект не выбран (sfSelected) и
      не запрещен  (sfDisabled) и если этот отображаемый объект - выде-
      ляемый (ofSelectable),  то отображаемый объект выделяется  с  по-
      мощью метода Select. Другие события в TView::handleEvent не обра-
      батываются.

           См. также: TView::clearEvent

      hide          void hide();
      ----
           Делает невидимым отображаемый объект,  вызывая setState  для
      очистки флага sfVisible в state.

           См. также: sfVisible, TView::setState, TView::show


      hideCursor    void hideCursor();
      ----------
           Делает невидимым курсор, очищая бит sfCursorVis в state.

           См. также: sfCursorVis, TView::showCursor


      keyEvent      void keyEvent(TEvent& event);
      --------
           Возвращает в переменной event очередное  событие  evKeyDown.
      Данный метод не возвращает управления до тех пор, пока событие от
      клавиатуры не будет доступно.  При этом игнорируются  все  другие
      события.

           См. также: TView::getEvent, TView::eventAvail


      locate        void locate(TRect bounds);
      ------
           Изменяет границы отображаемого объекта на заданные  в  аргу-
      менте bounds.  Отображаемый  объект  перерисовывается в его новом
      положении.  Метод locate вызывает sizeLimits для  проверки  того,
      что   данные  границы  bounds  правильны,  затем  вызывает  метод
      changeBounds для изменения границ и заново отображает  отображае-
      мый объект.

           См. также: TView::growTo, TView::moveTo, TView::changeBounds


      makeFirst     void makeFirst();
      ---------
           Перемещает отображаемый  объект в вершину списка подобъектов
      владельца.  Вызов  makeFirst  соответствует  putInFrontOf(owner->
      first()).

           См. также: TView::putInFrontOf


      makeGlobal    TPoint makeGlobal(TPoint sourse);
      ----------
           Преобразует координаты в точке sourсe из локальных  (отобра-
      жаемый объект) в глобальные (экран) и возвращает результат.

           См. также: TView::makeLocal


      makeLocal     TPoint makeLocal(TPoint sourse);
      ---------
           Преобразует координаты  точки source из глобальных (экран) в
      локальные (отображаемый  объект) и возвращает результат.  Полезно
      для преобразования поля event.where в событии evMouse из глобаль-
      ных координат  в  локальные.  Например,  mouseLoc   =   makeLocal
      (eventWhere).

           См. также: TView::makeGlobal, TView::mouseInView


      mapColor      uchar mapColor(uchar color);
      --------
           Отображает цвет,  заданный в color, в смещение в текущей па-
      литре. mapColor вызывает getPalette для каждой группы владельца в
      цепочке. mapColor успешно отображает смещение в каждую палитру до
      тех пор, не будет достигнута последняя палитра. Однако если color
      неправильный (например нарушен диапазон) для какой-либо палитры в
      цепочке, то mapColor возвращает errorAttr.

           См. также: TView::getPalette, TView::errorAtrr


      mouseEvent    Boolean mouseEvent(TEvent& event, ushort mask);
      ----------
           Устанавливает очередное событие от "мыши" в аргументе event.
      Возвращает значение True, если это событие соответствует аргумен-
      ту mask,  и False,  если возникло событие evMouseUp. Данный метод
      позволяет отслеживать  перемещения  "мыши"  - при нажатой кнопке;
      это может быть использовано, например, в операциях по перемещению
      выделенных блоков в текстовых  редакторах.

           Приведем фрагмент  программы handleEvent,  в котором "слеже-
      ние" за "мышью" позволяет управлять курсором отображаемого объек-
      та.

               virtual void TMyView::handleEvent(TEvent& event)
               {
                  TView::handleEvent(event);
                  switch ( event.what )
                  {
                     case evMouseDown:
                        do
                        {
                           makeLocal(event.Where, mouse);
                           setCursor(mouse.x, mouse.y);
                        }
                        while (!(mouseEvent(event, evmouseMove)));
                        clearEvent(event);
                        break;
                  }
                   ...
               };

           См. также: константы событий evXXX, TView::keyEvent,
      TView::getEvent


      mouseInView   Boolean mouseInView(TPoint mouse);
      -----------
           Возвращает значение True,  если аргумент mouse  (заданный  в
      глобальных координатах) находится внутри вызывающего отображаемо-
      го объекта.

           См. также: TView::makeLocal, TView::makeGlobal


      moveTo        void moveTo(short x, short y);
      ------
           Перемещает origin в точку (x,y)  относительно  отображаемого
      объекта-владельца. Поле size данного отображаемого объекта не из-
      меняется.

           См. также:TView::origin,     TView::size,     TView::locate,
      TView::growTo


      nextView      TView *nextView();
      --------
           Возвращает указатель на следующий подобъект в списке подобъ-
      ектов владельца.  Возвращается  0,  если  вызывающий отображаемый
      объект последний в списке его владельца.

           См. также: TView::prevView, TView::prev, TView::growTo


      normalCursor  void normalCursor();
      ------------
           Очищает бит  sfCursorIns  в  state,  переводя курсор в режим
      подчеркивания. Если при этом  sfCursorVis  установлен,  то  новый
      курсор будет отображаться.

           См. также:   sfCursorIns,   sfCursorVis,  TView::hideCursor,
      TView::blockCursor


      prev          TView *prev();
      ----
           Возвращает указатель на предыдущий подобъект  в  списке  по-
      добъектов владельца.  Если вызывающий отображаемый  объект  стоит
      первым в списке его владельца, то prev возвращает последний отоб-
      ражаемый объект в этом списке.  Заметим, что TView.prev интерпре-
      тирует список как циклический, в то время как TView::prevView ин-
      терпретирует его как линейный.

           См. также: TView::nextView, TView::prevView, TView::next


      prevView      TView *prevView();
      --------
           Возвращает указатель  на  предыдущий  подобъект в списке по-
      добъектов владельца. Возвращается 0, если вызывающий отображаемый
      объект - первый в списке владельца.  Заметим, что TView::prev ин-
      терпретирует список как кольцевой, а TView::prevView - как линей-
      ный.

           См. также: TView::nextView, TView::prev


      putEvent      virtual void putEvent(TEvent& event);
      --------
           Помещает событие, заданное в event, в очередь событий, в ре-
      зультате чего это событие становится очередным событием,  возвра-
      щаемым getEvent. Этим способом в очередь событий может быть поме-
      щено только одно событие. Этот метод часто используется отобража-
      емыми объектами для посылки командных событий, например:

               event.what = evCommand;
               event.Command = cmSaveAll;
               event.infoPtr = 0;
               putEvent(event);

           По умолчанию  TView::putEvent  вызывает  метод putEvent вла-
      дельца данного отображаемого объекта.

           См. также:        TView::eventAvail,        TView::getEvent,
      TView::handleEvent


      putInFrontOf  void putInFrontOf(TView *target);
      ------------
           Помещает вызывающий отображаемый объект  перед  отображаемым
      объектом target в списке подобъектов владельца. Вызов

           MyView.putInFrontOf(owner->first);

      эквивалентен TView.makeFirst. Этот метод работает, изменяя указа-
      тели в списке подобъектов.  В зависимости от позиции других отоб-
      ражаемых объектов и их состояния "видимости",  putInFrontOf может
      отсекать закрываемые отображаемые объекты. Если данный отображае-
      мый  объект  -  выбираемый (см.  ofSelectable) и помещается перед
      всеми другими подобъектами, то этот отображаемый подобъект стано-
      вится выбранным.

           См. также: TView::makeFirst


      read           virtual void *read( ipstream& is);
      ----
           Читает из входного потока is.

           См. также: TStreamableClass, TStreamable,классы ipstream


      resetCursor    virtual void resetCursor();
      -----------
           Инициализирует курсор.


      select        void select();
      ------
           Выбирает отображаемый объект (см. sfSelected). Если владелец
      отображаемого объекта  активен,  то  и данный отображаемый объект
      так же становится активным  (см.  sfFocused).  Если  отображаемый
      объект  имеет  установленный флаг ofTopSelect в поле options,  то
      и этот отображаемый объект перемещается в вершину списка  подобъ-
      ектов владельца (используя для этого вызов TView::makeFirst).

           См. также:     sfSelected,      sfFocused,      ofTopSelect,
      TView::makeFirst


      setBounds     void setBounds(const TRect& bounds);
      ---------
           Устанавливает ограничивающую прямоугольную область отобража-
      емого объекта в значение,  полученное из параметра  bounds.  Поле
      origin устанавливается равным bounds.a,  а поле size устанавлива-
      ется равным разности bounds.b - bounds.a. Метод setBounds вызыва-
      ется  только  из  переопределенного  метода  changeBounds - вы не
      должны вызывать setBounds непосредственно.

            См. также:  TView::origin,  TView::size, TView::calcBounds,
      TView::changeBounds, TView::getBounds, TView::getExtent


      setCommands   static void setCommands(TCommandSet& commands);
      -----------
           Изменяет текущий   набор   команд   на  заданный  аргументом
      commаnds.

           См. также: TView::enableCommands, TView::disableCommands


      setCursor     void setCursor(short x, short y);
      ---------
           Перемещает аппаратный курсор в точку  (x,y),  используя  от-
      носительные координаты данного отображаемого объекта (локальные).
      (0,0) - это верхний левый угол.

           См. также:        TView::makeLocal,       TView::hideCursor,
      TView::showCursor


      setData       virtual void setData(void *rec);
      -------
           Метод setData должен копировать dataSize байт из записи дан-
      ных, заданной указателем rec, в отображаемый объект. Механизм за-
      писи данных обычно используется только в  отображаемых  объектах,
      которые реализуют элементы управления для диалоговых окон.

           По умолчанию TView::setData  ничего не делает.

           См. также: TView::dataSize, TView::getData


      setState    virtual void setState(ushort aState, Boolean enable);
      --------
           Устанавливает или очищает флаг состояния в поле state. Пара-
      метр aState задает изменяемый флаг состояния (см.  sfXXXX), а па-
      раметр enable  указывает,  будет  ли  этот  флаг  устанавливаться
      (True) или  очищаться  (False).  setState  затем  выполняет соот-
      ветствующие действия по отражению нового состояния, такие как пе-
      рерисовка тех  отображаемых  объектов,  которые появились,  когда
      данный отображаемый объект исчез (sfVisible) или перепрограммиро-
      вание аппаратуры,  когда  изменилась форма курсора (sfCursorVis и
      sfCursorIns) и т.п.

           Метод setState иногда переопределяется для выполнения допол-
      нительных действий, основанных на флагах состояний. Например, тип
      TFrame переопределяет метод setState для своей перерисовки, когда
      окно выделяется или перемещается:

              void TFrame::setState(ushort aState, Boolean enable);
              {
                 TView::setState(aState, enable);
                 if (aState & (sfActive | sfDragging) != 0)
                  drawView();
              }

           Другая причина,  возможного  переопределения  setState - это
      необходимость разрешить или запретить команды,  которые обрабаты-
      ваются определенным отображаемым объектом:

              void TMyView::setState(ushort aState, Boolean enable);
              { TCommandSet myCommands;
                MyCommands.enableCmd(cmCut);
                MyCommands.enableCmd(cmCopy);
                MyCommands.enableCmd(cmPaste);
                MyCommands.enableCmd(cmClear);
                TView::setState( aState, enable );
                if ( aState = sfSelected )
                {
                   if enable
                      enableCommands(myCommands)
                   else
                      disableCommands(myCommands);
                }
              }

           См. также:  TView::getState,  TView::state,  константы флага
      состояния sfXXXX

           См. также:  TView::getState,  TView::state,  константы флага
      состояния sfXXXX


      show          void show();
      ----
           Если данный отображаемый объект видим (sfVisible), то ничего
      не происходит. В противном случае, show показывает этот отобража-
      емый объект,  вызывая для этого setState с целью установки  флага
      sfVisible в поле state.

           См. также: TView::setState


      showCursor    void showCursor();
      ----------
           Включает аппаратный курсор,  устанавливая sfCursorVis. Заме-
      тим, что по умолчанию курсор неотображаем.

           См. также: sfCursorVis, TView::hideCursor


      sizeLimits    virtual void sizeLimits(TPoint& min,  TPoint& max);
      ----------
           Возвращает в переменных min и max минимальное и максимальное
      значения, которые может принимать поле size.

           По  умолчанию  TView::sizeLimits  возвращает  (0,0)  в min и
      owner->size в max. Если owner есть 0, то max.x и max.y устанавли-
      ваются в MAXSHORT.

           См. также: TView::size


      TopView       TView *topView();
      -------
           Возвращает указатель  на текущий модальный отображаемый объ-
      ект, или 0, если такового нет.


      valid         virtual Boolean valid(ushort command);
      -----
           Этот метод используется для проверки правильности отображае-
      мого объекта после его создания или в момент, когда заканчивается
      модальное состояние (при вызове endModal).

           Значение параметра command равное cmValid (ноль)  указывает,
      что отображаемый  объект должен проверить результат работы своего
      конструктора: valid(cmValid) должен вернуть значение  True,  если
      отображаемый объект был успешно создан и отныне готов к использо-
      ванию. в противном случае возвращается False.

           Любое другое (отличное от нуля) значение  параметра  command
      указывает,  что  текущее модальное состояние (такое как модальное
      диалоговое окно) должно по своему  завершению  вернуть  результат
      работы команды command. В этом случае valid должна проверять пра-
      вильность видимого объекта.

           valid отвечает за то, чтобы пользователь был вовремя предуп-
      режден о неправильности отображаемого объекта.

           По умолчанию TView::valid просто возвращает True.

           См. также:          TGroup::valid,           TDialog::valid,
      TProgram::validView


      write         virtual void write( opstream& os);
      -----
           Пишет в выходной поток os.

           См. также:     TStreamableClass,     TStreamable,     классы
      opstreamable


      writeBuf
      --------
           void writeBuf( short x,  short y,  short w,  short h,  const
                          void far *b);
           void writeBuf( short x,  short y,  short w,  short h,  const
                          TDrawBuffers& b);

           Выводит на экран заданный буфер, начиная с координат (x,y) и
      заполняя область  шириной  w  и  высотой  h.  Данный  метод может
      использоваться только в методах draw.  Обычно используется указа-
      тель на  буфер типа ТDrawBuffer&,  но может быть применен и любой
      массив слов,  где каждое слово содержит символ в младшем байте  и
      атрибут в старшем байте.

           См. также: TView::draw


      writeChar
      ---------
           void writeChar(short x, short y, short c, uchar color, short
                          count);

           Начиная с  точки  (x,y),  выводит  count копий символа "c" в
      цвете, заданном объектом с номером color в палитре текущего отоб-
      ражаемого объекта. Может использоваться только в методах draw.

           См. также: TView::draw


      writeCStr
      ---------
           void writeCStr(short x,  short  y,  char  far  *cstr,  uchar
      color);

           Выводит управляющую строку cstr в цвете,  заданном элементом
      с номером color в палитре данного отображаемого объекта,  начиная
      с точки (x,y).  WriteCStr использует тильду (~) как переключатель
      атрибутов и цветов. Может использоваться только в методах draw.


      writeLine
      ---------
           void writeLine( short x,  short y,  short w,  short h, const
                           void far *buf);
           void writeLine( short x,  short y,  short w,  short h, const
                           TDrawBuffer& buf);

           Выводит строку,  содержащуюся в буфере buf на экран, начиная
      с точки (x,y) и внутри прямоугольника,  определенного шириной w и
      высотой h. Если h больше 1, строка будет повторяться h раз. Может
      использоваться только в методе draw.

           См. также: TView::draw


      writeStr
      --------
           void writeStr( short x,  short y,  const  char  *str,  uchar
      color);

           Выводит строку str в цвете, определенном элементом с номером
      color в палитре данного отображаемого объекта,  начиная  с  точки
      (x,y). Может использоваться только в методе draw.

           См. также: TView::draw

                            Дружественные функции

           Функция genRefs является другом TView

                           Дополнительные функции

           Некоторые функции-операторы  родственны классу TView,  но не
      являются его методами.





                                     Методы

      constructor   TView(const Trect& bounds);
      -----------
           Создает объект  TView  с прямоугольной областью,  заданной в
      bounds. TView::TView вызывает конструктор класса TObject и иници-
      ализирует поля нового TView следующими значениями:

          ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
          cursor     (0, 0)
          dragMode   dmLimitLoY
          eventMask  evMouseDown | evKeyDown | evCommand
          growMode   0
          helpCtx    hcNoContext
          next       0
          options    0
          origin     (Bounds.A.x, Bounds.A.y)
          owner      0
          size       (Bounds.B.x - Bounds.A.x, Bounds.B.y - Bounds.A.y)
          state      sfVisible
          ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

           См. также: TObject::TObject


      constructor
      -----------
           TView( StreamableInit StreamableInit);       (защищенный)

           Каждому поточному  классу  необходим  "построитель" для кор-
      ректного выделения памяти под его объекты,  а также для инициали-
      зации указателей vtable.  Это достигается вызовом этого конструк-
      тора с аргументом типа StreamableInit. Смотрите также главу 8.


      destructor    ~TView();
      ----------
           Скрывает отображаемый объект и затем, если он имеет владель-
      ца, удаляет его из соответствующей группы.


      blоckCursor   void blоckCursor();
      -----------
           Устанавливает sfCursorIns,  чтобы  изменить форму курсора на
      блочную. Курсор будет отображаемым  только  в  том  случае,  если
      установлен флаг sfCursorVis (и отображаемый объект также видим).

           См. также:  sfCursorIns,  sfCursorVis,  TView::normalCursor,
      TView::showCursor, TView::hideCursor


      build         static TStreamable *build();
      -----
           Вызывается для создания объекта в некоторых ситуациях чтения
      из потока.

           См. также: TStreamableClass, ipstream::readData


      сalcBounds  virtual void calcBounds(TRest& bounds, TPoint delta);
      ----------
           Когда владелец отображаемого объекта изменяет размер, он вы-
      зывает методы calcBounds и  changeBounds  для  всех  подобъектов.
      calcBounds должен  вычислять  новые границы отображаемого объекта
      на основе delta,  на которое изменился размер  его  владельца,  и
      возвращает новые границы в bounds.

           TView::calcBounds вычисляет  новые границы, используя флаги,
      заданные в поле TView::growMode.

           См. также: TView::getBounds, TView::changeBounds,  константы
      gfXXXX growMode


      changeBounds  virtual void changeBounds(const TRect& bounds);
      ------------
           Изменяет границы  отображаемого объекта (поля origin и size)
      на прямоугольную область, заданную параметром bounds. После изме-
      нения границ changeBounds должен перерисовать данный отображаемый
      объект.  changeBounds вызывается различными методами TView, но не
      должен вызываться непосредственно.

           Метод TView::changeBound вызывает сначала setBounds(bounds),
      а затем drawView.

           См. также: TView::locate, TView::moveTo, TView::growTo


      clearEvent    void clearEvent(TEvent& event);
      ----------
           Этот стандартный метод используется в handleEvent для указа-
      ния того,  что  отображаемый  объект  успешно  обработал событие.
      Устанавливает event.what в evNоthing  и  event.message.infoPtr  в
      this.

           См. также: методы handleEvent


      сommandEnabled static Boolean commandEnabled(ushort command);
      --------------
           Возвращает значение  True,  если  команда command разрешена,
      иначе - False.  Заметим, что когда вы изменяете модальное состоя-
      ние, можно  запретить или разрешить необходимые команды.  Однако,
      когда вы возвращаетесь в предыдущее модальное состояние, исходный
      набор команд будет восстановлен.

           См. также: TView::disableCommand, TView::enableCommand,
      TView::setCommands.


      containsMouse Boolean containsMouse(TEvent&  event);
      -------------
           Возвращает True, если внутри отображаемого объекта произошло
      какое-то событие от "мыши". В противном случае возвращает False.

           См. также: mouseInView


      dataSize      virtual ushort dataSize();
      --------
           Метод dataSize  должен  использоваться для получения размера
      данных, читаемых и записываемых в записи данных с помощью методов
      setData  и  getData.  Механизм  записи данных обычно используется
      только в отображаемых объектах, которые реализуют элементы управ-
      ления для диалоговых окон.

           Чтобы указать,  что поля не передавались, метод TView::data-
      Size возвращает нулевое значение.

           См. также: TView::getData, TView::setData


      disableCommand static void disableCommands( ushort command);
      --------------
           Запрещает указанную команду. Если в результате вызова данно-
      го метода набор команд изменился, то commandSetChanged устанавли-
      вается в True.

           См. также:    TView::enableCommand,   TView::disableCommands


      disableCommands static void
      --------------- disableCommands(TCommandSet& commands);

           Запрещает команды, указанные в аргументе commands.

           См. также:    TView::commandEnabled,   TView::enableCommands
      TView::setCommands


      dragView
      --------
           virtual  void  dragView(TEvent&  event,  uchar  mode, TRest&
           limits, TPoint minSize, TPoint maxSize);

           Перемещает отображаемый объект с помощью  "мыши",  используя
      режим перемещения,  заданный флагами dmXXXX в аргументе mode. Ар-
      гумент limits указывает  прямоугольник  (в  координатной  системе
      владельца) внутри которого может перемещаться данный отображаемый
      объект,  а min и max указывают минимальный и максимальный размеры
      этого отображаемого объекта, которые он может принимать. Событие,
      приводящее к операции перемещения передается  в  аргументе  event
      для того,  чтобы отличить перемещение с помощью "мыши" от переме-
      щения, с использованием клавиш управления курсором.

           См. также: TView::dragMode, конст. режима перемещения dmXXXX


      draw
      ----
           virtual void draw();

           Вызывается, когда  отображаемый объект должен отобразить сам
      себя.  Метод draw должен покрывать всю область отображаемого объ-
      екта. Этот метод должен переопределяться для каждого порожденного
      объекта. Метод draw редко вызывается  непосредственно,  поскольку
      более  эффективно  использовать  метод  drawView,  который рисует
      только действительно отображаемые в данный момент времени  объек-
      ты, т.е. те области, хотя бы часть которых расположена на экране.
      При необходимости, draw может обратиться к методу getClipRect для
      получения прямоугольной области, которую необходимо перерисовать,
      а затем рисовать только эту  область.  Для  сложных  отображаемых
      объектов это может значительно улучшить производительность.

           См. также: TView::drawView


      drawCursor    void drawCursor();
      ----------
           Если отображаемый объект активен, курсор устанавливается вы-
      зовом resetCursor.

           См. также: TView::resetCursor


      drawHide      void drawHide(TView *lastView);
      --------
           Вызывает drawCursor,  а затем drawUnderView. Последний пере-
      рисовывает все подобъекты (если необходимо с тенью) до достижения
      заданного lastView.


      drawShow      void drawShow(TView *lastView);
      --------
           Вызывает drawView,  а  затем,  если  в  state установлен бит
      sfShadow, вызывает drawUnderView для отображения тени.


      drawUnderRect void drawUnderRect(TRect& r, TView *lastView);
      -------------
           Вызывает owner->clip.intersect(r)  для  определения области,
      которую необходимо нарисовать.  Затем все  подобъекты  следующего
      отображаемого объекта  до заданного в lastView рисуются с помощью
      drawSubView. И,   наконец,   owner->clip   инициализируется    из
      owner->getExtent.

           См. также: TView::drawSubViews


      drawUnderView
      -------------
           void drawUnderView(Boolean doShadow, TView *lastView);

           Вызывает drawUnderRect(r,lastView),  где  r  задает  текущие
      границы вызываемого отображаемого объекта. Если же doShadow равно
      True, то границы  данного  отображаемого  объекта  предварительно
      увеличиваются на shadowSize.

           См. также: TView::DrawUnderRect, shadowSize


      drawView      void drawView();
      --------
           Вызывает draw, если метод exposed вернул значение True, ука-
      зывая тем  самым,  что  данный  отображаемый  объект "видим" (см.
      sfExposed). Если же exposed вернул значение  False,  то  drawView
      ничего не  делает.  Вы  должны  обращаться к drawView (а не draw)
      всякий раз,  когда необходимо  заново  перерисовать  отображаемый
      объект в  следствие изменений,  которые воздействует на его визу-
      альное отображение.

           См. также: TView::draw, TGroup::redraw, TView::exposed


      enableCommand static void enableCommand(ushort command);
      -------------
           Разрешает данную команду.  Если набор команд изменится в ре-
      зультате этого вызова, то commandSetChanged установится в True.

           См. также: TView::disableCommands, TView::enableCommands


      enableCommands
      --------------
           static void enableCommand(TCommandSet& commands);

           Разрешает все  команды,  перечисленные в аргументе сommands.
      Если   набор   команд   изменится   после   этого   вызова,    то
      сommandSetChanged установится в True.

           См. также: TCommandSet, commandSetChanged,
      TView::disableCommands,TView::getCommands, TView::commandEnabled,
      TView::setCommands.


      endModal      virtual void endModal(ushort command);
      --------
           Вызывает topView для поиска верхнего модального отображаемо-
      го объекта.  Если таких объектов нет (что определяется  в случае,
      если topView возвратит 0), то никаких дальнейших действий не про-
      изводится. Если же таковой имеется, то он вызывает endModal и т.д.

           В  конечном  счете,  endModal контролирует текущее модальное
      состояние. Параметр command передается в метод execView,  который
      первым создал модальное состояние.

           См. также: TGroup::execView,TGroup::execute,TGroup::endModal


      eventAvail    Boolean eventAvail();
      ----------
           Вызывает getEvent и возвращает True, если событие  доступно.
      Вызывает putEvent, если событие доступно.

           См. также:TView::mouseEvent,TView::keyEvent,TView::getEvent,
      TView::putEvent


      execute       virtuai ushort execute();
      -------
           Вызывается из TGroup::execView всякий раз,  когда отображае-
      мый объект становится модальным.  Если отображаемый объект разре-
      шает  модальное выполнение,  он должен переопределить execute для
      поддержки обработки цикла событий. Метод execute возвратит значе-
      ние, получаемое им от метода TGroup::execView.

           По умолчанию TView::execute просто возвращает cmCancel.

           См. также:   sfModal,   TGroup::execute,   TGroup::execView,
      cmCancel


      exposed       Boolean exposed();
      -------
           Возвращает значение True, если хоть какая-то часть отобража-
      емого объекта видна на экране.

           См. также: sfExposed, TView::drawView


      getBounds     TRect getBounds();
      ---------
           Возвратит текущее значение size,  определяющее прямоугольные
      границы данного отображаемого объекта в координатной системе  его
      владельца. TRect::a устанавливается в origin, а TRect::b устанав-
      ливается в сумму origin и size.

           См. также:   TView::origin,  TView::size, TView::calcBounds,
      TView::changeBounds, TView::setBounds, TView::getExtent


      getClipRect   TRect getClipRect();
      -----------
           Возвращает поле clip,  определяющее минимальные  прямоуголь-
      ные границы,  которые необходимо перерисовать при обращении к ме-
      тоду draw. Для сложных отображаемых объектов draw может использо-
      вать getClipRect для значительного улучшения своей производитель-
      ности.

           См. также: TView::draw, TView::drawView


      getColor      ushort getColor(ushort color);
      --------
           Отображает индексы палитры младшего и старшего байта color в
      физические атрибуты символа,  "проходя" для этого  через  палитру
      самого отображаемого элемента и палитры всех его владельцев.

           См. также: TView::getPalette,  TView::mapColor


      getCommands   static void getCommands(TCommandSet& commands);
      -----------
           Возвращает в commands текущий набор команд.

           См. также:  TView::commandsEnabled,   TView::enableCommands,
      TView::disableCommands, TView::setCommands


      getData       virtual void getData(void *rec);
      -------
           Метод getData должен копировать dataSize байт из  отображае-
      мого объекта в запись данных,  заданную указателем rec.  Механизм
      записей данных обычно используется только в  отображаемых  объек-
      тах,  которые  реализуют элементы управления для диалоговых окон.
      По умолчанию TView::getData ничего не делает.

           См. также: TView::dataSize, TView::setData


      getEvent      virtual void getEvent(TEvent& event);
      --------
           Возвращает очередное  доступное событие в event.  Возвращает
      evNothing, если событие недоступно. По умолчанию данный метод вы-
      зывает getEvent владельца отображаемого объекта.

           См. также:         TView::eventAvail,        TProgram::idle,
      TView::handleEvent, TView::putEvent


      getExtent     TRect getExtent();
      ---------
           Возвращает "протяженность"  прямоугольной области отображае-
      мого объекта.  TRect::a устанавливается в  (0,0),  а  TRect::b  в
      size.

           См. также:   TView::origin,  TView::size, TView::calcBounds,
      TView::changeBounds, TView::setBounds, TView::getBounds


      getHelpCtx    virtual ushort getHelpCtx();
      ----------
           Метод getHelpCtx  должен  возвращать контекст помощи данного
      отображаемого объекта.

           По умолчанию   TView.getHelpCtx   возвращает  значение  поля
      helpCtx или  же  hcDragging,  если  данный  отображаемый объект в
      настоящий момент времени перемещается (см. sfDragging).

           См. также: helpCtx

      getPalette    virtual TPalette& getPalette() const;
      ----------
           Данный метод  должен возвращать строку,  соответствующую па-
      литре данного отображаемого объекта или 0 (пустую  строку),  если
      данный  отображаемый объект не имеет палитры.  getPalette вызыва-
      ется из writeChar и writeStr при преобразовании индексов  палитры
      в физические атрибуты символов.  Возвращаемое по умолчанию значе-
      ние 0 приводит к тому, что преобразование цвета данным отображае-
      мым объектом не производится. getPalette почти всегда переопреде-
      ляется в порождаемых классах.

           См. также: TView::getColor, TView::mapColor,writeXXXX

      getState      Boolean getState(ushort aState);
      --------
           Возвращает значение  True,  если  в  поле state установленно
      состояние, соответствующее заданному в aState.

           См. также: state, TView::setState

      growTo        void growTo(short x, short y);
      ------
           Увеличивает или  уменьшает  отображаемый  объект на заданный
      размер, используя для этого вызов TView::locate.

           См. также: TView::origin,TView::size, TView::locate,
      TView::moveTo










       TVMemMgr                                                BUFFERS.H
      -----------------------------------------------------------------

                                    ЙНННННННН»
                                    єTVMemMgrє
                                    ИННННННННј

           Класс TVMemMgr вместе с TBufEntryList и глобальным  операто-
      ром new обеспечивают низкоуровневое управление памятью в програм-
      мах Turbo Vision.  В частности  TVMemMgr  управляет  пулом  безо-
      пасности. Для  большинства  программ  объекты  классов TVMemMgr и
      TVBufListEntry не нуждаются в специальном вмешательстве  програм-
      миста.


                                    Поля

      safetyPool                                       (частный)
      ----------
           static void *safetyPool;

           safetyPool указывает на пул безопасности распределения памя-
      ти. Имеет значение 0, если пул безопасности не поддерживается или
      исчерпан.


      safetyPoolSize                                   (частный)
      --------------
           static size_t safetyPoolSize;

           Размер в  байтах  текущего  пула безопасности.  Это закрытое
      (частное) поле  изменяется  с  помощью  метода  TVMemMgr::resize-
      SafetyPool.  По  умолчанию  размер  пула  надежности определяется
      константой DEFAULT_SAFETY_ POOL_SIZE,  которая определена в заго-
      ловочном файле BUFFERS.H и в настоящее время равна 4096 байт.


      inited                                           (частный)
      ------
           static int inited;

           Индикатор попытки инициализации  пула  надежности.  Исключи-
      тельно для внутреннего использования.


                                   Методы

      constructor   TVMemMgr::TVMemMgr();
      -----------

           Ничего не  делает,  если  пул надежности уже инициализирован
      (т.е.  если  inited   =   1).   В   противном   случае   вызывает
      resizeSafetyPool  для  установки  пула безопасности с размером по
      умолчанию (заданным константой DEFAULT_SAFETY_POOL_SIZE в заголо-
      вочном файле BUFFERS.H с текущим значением 4096 байт). Кроме того
      данный конструктор устанавливает inited в 1.


      allocateDiscardable
      -------------------
              static void allocateDiscardable(void *&adr, size_t sz);

           Исключительно для внутреннего использования.  Пытается выде-
      лить кэш буфер (объект класса TBufListEntry) размером sz.  В слу-
      чае  успеха adr возвращает указатель на выделенный буфер.  В про-
      тивном случае adr устанавливается в 0. TGroup::getBuffer вызывает
      allocateDiscardable с adr установленным на поле TGroup::buffer.

           См. также:    TVMemMgr::freeDiscardable,    оператор    new,
      TGroup::getBuffer


      freeDiscardable static void freeDiscardable( void *block );
      ---------------
           Исключительно для внутреннего использования. Освобождает бу-
      фер, выделенный по адресу block предыдущим  вызовом  allocateDis-
      cardable.  TGroup::freeBuffer  вызывает  freeDiscardable  c block
      установленным на поле TGroup::buffer.

           См. также: TVMemMgr::allocateDiscardable, TGroup::freeBuffer


      resizeSafetyPool
      ----------------
           static void resizeSafetyPool(size_t sz =
                                            DEFAULT_SAFETY_POOL_SIZE );

           Изменяет размер  пула надежности на sz байт.  Предыдущий пул
      надежности, если он существовал, освобождается. inited устанавли-
      вается в 1,  safety Pool инициализируется указателем на новый пул
      безопасности,  а safetyPoolSize устанавливается в sz.  Если аргу-
      мент sz опущен, то предполагается его значение по умолчанию. Если
      sz равно 0, safetyPool и safetyPoolSize устанавливаются в 0.

           См. также: конструктор класса TVMemMgr,
      DEFAULT_SAFETY_POOL_SIZE


      safetyPoolExhausted
      -------------------
           static int safetyPoolExhausted();

           Возвращает 1(True) если пул безопасности инициализирован, но
      его пространство  исчерпано.  В   противном   случае   возвращает
      0(False).   safetyPoolExhausted  вызывается  глобальной  функцией
      lowMemory.

           См. также: lowMemory, оператор new









       TWindow                                                   VIEWS.H
      -----------------------------------------------------------------

                  ЪДДДДДДДДДДДДї               ЪДДДДДДДДДї
                  іTWindowInit і               і TGroup  і
                  АДДДДДДВДДДДДЩ               АДДДДВДДДДЩ
                         АДДДДДДДДДДДДВДДДДДДДДДДДДДЩ
                                 ЙННННПНННН»
                                 є TWindow є
                                 ИННННСННННј
                                 ЪДДДДБДДДДї
                                 і TDialog і
                                 АДДДДДДДДДЩ

           Объект классаTWindow  -  это группа,  которая обычно владеет
      объектом класса TFrame,  внутренним отображаемым объектом  класса
      TScroller и одним или двумя объектами класса TScrollBar.  Все эти
      связанные между собой подобъекты обеспечивают "внешний вид"  объ-
      ектам TWindow.  Объект  TFrame задает обычную рамку,  размещая на
      ней необязательные заголовок и номер окна, а также функциональные
      символы-пиктограммы (закрытия, распахивания, перемещения). Объек-
      ты TWindow обладают встроенными возможностями  по  перемещению  и
      изменению своих размеров с помощью "мыши" и клавиатуры. Они могут
      быть распахнуты и закрыты отметкой благодаря  нажатию  на  кнопку
      "мыши" в  момент,  когда  ее  указатель  располагается  над соот-
      ветствующей пиктограммой в рамке окна.  Они также "знают" как ра-
      ботать со строками прокрутки и с бегунком прокрутки. Окна с номе-
      рами от 1 до 9 могут выбраны клавишами Alt-n (n от 1 до 9).

           TWindow наследует и от класса TGroup и от виртуального базо-
      вого класса TWindowInit. Последний обеспечивает конструктор и ме-
      тод createFrame для создания и удаления рамок. Аналогичный способ
      порождения используется для классов THistoryWindow и THistInit.


                                    Поля

      flags         uchar flags;
      -----
           Флаг flags содержит комбинацию следующих бит:

                 ЪTWindow.flagsї
            старший бит   младший бит

                ЙНСНСНСНСНСНСНСН»
                ИСПНПНПСПСПСПСПСј
                 АДДВДДЩ і і і АД wfMove  = 0x01
                    і    і і АДДД wfGrow  = 0x02
            Неопределено і АДДДДД wfClose = 0x04
                         АДДДДДДД wfZoom  = 0x08

           Описание флагов окна см.  в разделе "Константы  флагов  окна
      wfXXXX" главы 16.


      frame         TFrame  *frame;
      -----
           frame - это указатель на объект класса TFrame,  связанный  с
      данным окном.

           См. также: TWindow::initFrame


      number        short number;
      ------
           Номер, присвоенный данному окну.  Если TWindow::number лежит
      в диапазоне  1  -  9,  то этот номер будет появляться в заголовке
      рамки, а само окно сможет быть выбранным с помощью  клавиш  Alt-n
      (n от 1 до 9).


      palette       short palette;
      -------
           Определяет, какая   палитра   окна   будет   использоваться:
      wpBlueWindow, wpCyanWindow или wpGrayWindow.  По умолчанию, выби-
      рается палитра wpBlueWindow.

           См. также: TWindow::getPalette, wpXXXX константы


      title         const char *title;
      -----
           Строка символов,  определяющая  (необязательный)  заголовок,
      который изображается в рамке окна.


      zoomRect      TRect zoomRect;
      --------
           Нормальные ("нераспахнутые") границы окна.


                                   Методы

      constractor
      -----------
           TWindow(const TRect&  bounds,  const  char  *aTitle,   short
      aNumber);

           Вызывает конструктор класса TGroup для установки границ, за-
      данных в bounds. Устанавливает state в sfShadow. Устанавливает по
      умолчанию  options в (ofSelectable | ofTopSelect).  Устанавливает
      growMode в gfGrowAll | gfGrowRel. Устанавливает flags в (wfMove |
      wfGrow | wfClose | wfZoom).  Инициализирует поле title указателем
      из aTitle,  а поле number из  aNumber.  Вызывает,  по  умолчанию,
      initFrame, и  если  полученный указатель frame не 0,  то включает
      его в группу данного окна. Наконец, по умолчанию, задает zoomRect
      границы из bounds.


      constructor
      -----------
           TWindow( StreamableInit streamableInit);      (защищенный)

           Каждому потоковому классу необходим "построитель"  для  кор-
      ректного выделения  памяти под его объекты и инициализации указа-
      телей vtable.  Это достигается вызовом данного конструктора с ар-
      гументом типа StreamableInit. Смотрите также главу 8.

           См. также: TFrame::initFrame


      destructor    ~TWindow();
      ----------
           Удаляет заголовок,  а затем уничтожает как само окно,  так и
      все его отображаемые подобъекты,  используя для этого вызов роди-
      тельских деструкторов.


      build         static TStreamable *build();
      -----
           Вызывается для  создания объектов в некоторых ситуациях чте-
      ния из потока.

           См. также: TStreamableClass, ipstream::readData


      close         virtual void close();
      -----
           Вызывает valid(cmClose).  Если возвращается True, то это оз-
      начает, что вызывающее окно стерто.

           См. также: TView:valid


      getPalette    virtual TPalette& getPalette() const;
      ----------
           Возвращает указатель на палитру, заданную индексом палитры в
      поле palette.

           См. также: TWindow::palette


      getTitle      virtual const char *getTitle(short maxSize);
      --------
           Возвращает строку заголовка окна title.

           См. также: TWindow::title


      handleEvent   virtual void handleEvent(TEvent& event);
      -----------
           Вначале вызывает TGroup::handleEvent,  а затем  обрабатывает
      специфические для TWindow события. К ним относятся:

           Следующие события  типа evCommand обрабатываются,  если флаг
      TWindow::flags разрешает эти операции:  cmResize (переместить или
      изменить размер окна, используя функцию TView::drawView), cmClose
      (закрыть окно с  помощью  создания  события  cmCancel)  и  cmZoom
      (распахнуть окно, используя метод TWindow::zoom).

           События типа evKeyDown со значением keyCode равным kbTab или
      kbShiftTab обрабатываются, выбирая следующий или предыдущий выби-
      раемый подобъект (если он существует).

           Событие evBroadcast  со  значением  command равным cmSelect-
      WindowNum, обрабатывается  выбором  указанного  окна,  если  поле
      event.infoInt равно number.

           См. также:  TGroup::handleEvent, константы wfXXXX, TWindow::
      dragView, TWindow::zoom


      initFrame     virtual void initFrame(TRect);
      ---------
           Создает объект  класса TFrame для окна и сохраняет указатель
      на него в поле TWindow::frame. initFrame вызывается конструктором
      TWindow и никогда не должен вызываться непосредственно. initFrame
      может быть переопределен  для  создания  порожденного  от  TFrame
      класса, вместо стандартного TFrame.

           См. также: TWindow::TWindow


      read          virtual void *read( ipstream& is);
      ----
           Читает из входного потока is.

           См. также: классы TStreamable и ipstream


      setState  virtual void setState(ushort aState, Boolean enable);
      --------
           Вначале вызывает TGroup::setState(aState,enable). Затем, ес-
      ли aState равно sfSelected,  активизирует или деактивизирует окно
      и все его подобъекты,  используя вызов setState(sfActive, enable)
      и  вызов  TView::enableCommands  или  TView::disableCommands  для
      cmNext, cmPrev, cmResize, cmClose и cmZoom.

           См. также:     TGroup::setState,      TView::enableCommands,
      TView::disableCommands


      shutDown      virtual void shutDown();
      --------
           Используется внутри  TObject::destroy  для  обеспечения кор-
      ректного уничтожения порожденных и родственных объектов. shutDown
      переопределяется во многих классах, для обеспечения соответствую-
      щего установления полей, при вызове destroy.

           См. также: глава 6 "Разработка надежных программ"


      sizeLimits    virtual void sizeLimits(TPoint& min, TPoint& max);
      ----------
           Переопределяет TView::sizeLimits.   Вначале  вызывает  метод
      TView::sizeLimits(min,max), а затем изменяет min  на  минимальное
      значение размера окна, в настоящее время заданное как (16,6).

           См. также:  TView::sizeLimits


      standardScrollBar
      -----------------
           TScrollBar *standardScrollBar(ushort aOptions);

           Создает, вставляет  и  возвращает указатель на "стандартную"
      строку прокрутки для окна.  "Стандартность" означает,  что полоса
      прокрутки включается в рамку окна,  не закрывая углов или  кнопки
      управляющих пиктограмм.

           Параметр aOptions может быть  либо  равен  sbGorizontal  для
      создания горизонтальной  строки прокрутки внизу окна,  либо иметь
      значение sbVertical для создания вертикальной строки прокрутки  в
      правой   стороне   окна,   либо   может   быть   скомбинирован  с
      sbHandleKeyboard, чтобы разрешить строке прокрутки откликаться на
      клавиши управления курсором и PgUp,  PgDn, а не только на команды
      от "мыши".

           См. также: константы строк прокрутки sbXXXX


      write         virtual void write( opstream& os );
      -----
           Пишет в выходной поток os.

           См. также: классы TStreamableClass, TStreamable и opstream


      zoom          virtual void zoom();
      ----
           Переопределения: используются редко.

           Распахивает вызывающее окно.  Этот метод обычно вызывается в
      ответ на команду cmZoom (переключаемую при выборе "мышью" пиктог-
      раммы распахивания окна).  zoom принимает во внимание относитель-
      ные размеры данного окна и его владельца, и значение zoomRect.

           См. также: cmZoom, zoomRect,TView::locate


                           Дополнительные функции

           Некоторые функции-операторы родственны TWindow,  но не явля-
      ются методами класса TWindow.



                                  Палитра

           Объекты окна  используют  по  умолчанию палитры cpBlueWindow
      (для текстовых окон), cpCyanWindow (для сообщений) и cpGrayWindow
      (для диалоговых окон).

                      1   2   3   4   5   6   7   8
                   ЙНННСНННСНННСНННСНННСНННСНННСННН»
      cpGraywindow є 24і 25і 26і 27і 28і 29і 30і 31є
                   МНННПНННПНННПНННПНННПНННПНННПННН№
                   МНННСНННСНННСНННСНННСНННСНННСННН№
      cpCyanwindow є 16і 17і 18і 19і 20і 21і 22і 23є
                   МНННПНННПНННПНННПНННПНННПНННПННН№
                   МНННСНННСНННСНННСНННСНННСНННСННН№
      cpBluewindow є 8 і 9 і 10і 11і 12і 13і 14і 15є
                   ИНСНПНСНПНСНПНСНПНСНПНСНПНСНПНСНј
                     і   і   і   і   і   і   і   і
      Пассивная ДДДДДЩ   і   і   і   і   і   і   АДД Зарезервировано
      рамка              і   і   і   і   і   і
      Активная рамка ДДДДЩ   і   і   і   і   АДДДД Выделенный текст
                             і   і   і   і         строки прокрутки
      Пиктограмма (символ ДДДЩ   і   і   АДДДДДДДД Нормальный текст
      управления в рамке)        і   і             элемента прокрутки
      Строки прокрутки ДДДДДДДДДДЩ   АДДДДДДДДДДДД Зарезервировано
                                                   для строки прокрутки








       TWindowInit                                               VIEWS.H
      _________________________________________________________________

                      ЙННННННННННННН»     ЪДДДДДДДДї
                      є TWindowInit є     і TGroup і
                      ИННННННСННННННј     АДДДДВДДДЩ
                             АДДДї    ЪДДДДДДДДЩ
                              ЪДДБДДДДБДї
                              і TWindow і
                              АДДДДДДДДДЩ

           TWindow наследует от TGroup и виртуального  базового  класса
      TWindowInit. Последний   обеспечивает   конструктор    и    метод
      createFrame  для  создания  и  удаления  рамок.  Подобная техника
      используется для TProgram, THistoryWindow и TDeskTop.


                                   Методы

      constructor
      -----------
           TWindowInit(TFrame *(*cFrame) (TRect bounds));

           Этот конструктор берет в качестве аргумента  адрес  функции,
      обычно    &TWindow::InitFrame.   Конструктор   TWindow   вызывает
      TGroup(bounds) и TWindowInit(&TWindow::initFrame),  для  создания
      оконного объекта и соответствующей рамки.  Последняя включается в
      объект оконной группы.


      createFrame   TFrame *(*createFrame) ( TRect bounds );
      -----------
           Вызывается  конструктором TWindowInit  для создания  объекта
      TFrame c заданными границами и возвращает указатель  на  него.  В
      случае ошибки возвращается нулевой указатель.


Яндекс цитирования