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



 

Часть 29

*-      TCollection                                           Objects
        -----------------------------------------------------------------

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

             TCollection  предполагает,  что  элементы  набора получаются
        прямо  или  косвенно из TObject так, что для уничтожения элемента
        он  может вызывать деструктор элемента Done. Если Вы хотите испо-
        льзовать  набор элементов, не происходящих от TObject, то необхо-
        димо  обязательно  переопределить  метод FreeItem для того, чтобы
        правильно уничтожить элемент. Набор строк, например, осуществляет
        набор динамических строк Паскаля.

*-                                     Поля
        -----------------------------------------------------------------

             Count                                    (только для чтения)
                  Count: Integer;

             Текущее число элементов в наборе, максимальное число которых
        равно MaxCollectionSize. Заметьте, что наборы индексируют элемен-
        ты  с  0,  а  это означает, что Count часто превышает на 1 индекс
        последнего элемента.

             См. также: переменная MaxCollectionSize

             Delta                                    (только для чтения)
                  Delta: Integer;

             Число  элементов,  на которое увеличивается список Items при
        его заполнении. Если Delta равна 0, то набор не может расти боль-
        ше размера, установленного в Limit.

             Примечание: Увеличение размера набора достаточно плохо влия-
        ет  на  производительность. Чтобы минимизировать число раз, когда
        это  происходит,  попытайтесь  установить  начальное Limit равным
        такому  количеству, которого будет достаточно для всех элементов,
        которые  Вы  собираетесь  объединять  в набор, и установите Delta
        так, чтобы его значение допускало расширение на разумное количес-
        тво.

             См. также: Limit, TCollection.Init

             Items                                    (только для чтения)
                  Items: PItemList;

             Указатель на массив указателей на элементы.

             См. также: тип TItemList

             Limit                                     (только для чтения)
                  Limit: Integer;

             Выделенный  в  текущий  момент  размер  (в элементах) списка
        Items.

             См. также: Delta, TCollection.Init

*-                                    Методы
        -----------------------------------------------------------------

             Init
                  constructor Init(ALimit, ADelta: Integer);

             Создает  объект набора с Limit, равным ALimit, и Delta, рав-
        ным  ADelta.  Набор  выделяет  объем  памяти, достаточный для для
        работы с ALimit элементов, но набор может расширяться, увеличива-
        ясь  по  ADelta до тех пор, пока будет достаточно памяти или пока
        число элементов не достигнет MaxCollectionSize.

             См. также: TCollection.Limit, TCollection.Delta.

             Load
                  constructor Load(var S: TStream);

             Создает  и  загружает  набор  из  потока S. TCollection.Load
        вызывает метод GetItem для каждого элемента набора.

             См. также: TCollection.GetItem

             Done
                  destructor Done; virtual;

             Переопределяемость: часто используется.

             Удаляет набор и освобождает память, занимаемую всеми элемен-
        тами  набора,  вызывая  метод  TCollection.FreeAll и устанавливая
        Limit равным 0.

             См. также: TCollection.FreeAll

             At
                  function At(Index: Integer) : Pointer;

             Возвращает  указатель  на элемент с индексом Index в наборе.
        Этот  метод позволяет интерпретировать набор, как индексированный
        с  0  массив. Если индекс меньше 0 или больше или равен Count, то
        At вызывает Error с аргументом coIndexError, после чего возвраща-
        ет nil.

             См. также: TCollection.IndexOf

             AtDelete
                  procedure AtDelete(Index: Integer);

             Удаляет  элемент в позиции Index и перемещает следующие эле-
        менты  на  одну позицию вверх. Count уменьшается на 1, но память,
        выделенная  для  набора,  не сокращается. Если Index меньше 0 или
        больше  или  равен  Count, то вызывается метод Error с аргументом
        coIndexError.

             AtDelete  не  освобождает  память,  выведенную под удаленный
        элемент.  При  необходимости  одновременно  удалить  и освободить
        элемент используйте AtFree.

             См. также:      TCollection.FreeItem,      TCollection.Free,
        TCollection.Delete

             AtFree
                  procedure TCollection.AtFree (Index: Integer);

             Удаляет и освобождает элемент с индексом Index. Эквивалентно
        следующему:

                  Item := At (Index); {получаем указатель на элемент}
                  AtDelete (Index);   {удаляет указатель из набора}
                  FreeMem (Item);     {освобождает элемент}

             AtInsert
                  procedure AtInsert(Index: Integer; Item: Pointer);

             Вставляет  Item в позицию Index и передвигает следующие эле-
        менты на одну позицию вниз. Если Index меньше 0 или больше Count,
        то  AtInsert  вызывает  метод  Error с аргументом coIndexError, и
        новый Item не вставляется.

             Если Count равен Limit до вызова AtInsert, то набор вызывает
        SetLimit  для  увеличения  выделенной под него памяти. Если вызов
        SetLimit  не  может  расширить набор, то вызывается метод Error с
        аргументом coOverflow, и новый Item не вставляется.

             См. также: TCollection.At, TCollection.AtPut,
                                                TCollection.SetLimit

             AtPut
                  procedure AtPut(Index: Integer; Item: Pointer);

             Заменяет элемент в позиции Index элементом, заданным в Item.
        Если  Index  меньше  0  или больше или равен Count, то вызывается
        метод Error с аргументом coIndexError.

             См. также: TCollection.At, TCollection.AtInsert

             Delete
                  procedure Delete(Item: Pointer);

             Удаляет   элемент   Item   из   набора.   Это   эквивалентно
        AtDelete(IndexOf(Item)). Delete не освобождает память, выделенную
        под  Item.   При  необходимости  удалить  элемент с освобождением
        памяти вызывайте Free.

             См. также: TCollection.AtDelete, TCollection.DeleteAll

             DeleteAll
                  procedure DeleteAll;

             Удаляет все элементы из набора, устанавливая Count равным 0.

             См. также: TCollection.Delete, TCollection.AtDelete

             Error
                  procedure Error(Code, Info: Integer); virtual;

             Переопределяемость: иногда используется.

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

             См. также: константы набора coXXXX

             FirstThat
                  function FirstThat(Test: Pointer) : Pointer;

             FirstThat  применяет  булеву функцию, заданную указателем на
        функцию  Test, к каждому элементу набора до тех пор, пока Test не
        возвращает  True.  Возвращает  указатель на элемент, для которого
        Test возвращает True, или nil, если функция Test возвращает False
        для  всех  элементов.  Test должна указывать на локальную функцию
        типа  far, использующую только один параметр типа Pointer и возв-
        ращающую значение типа Boolean. Например:

                 function Matches (Item: Pointer): Boolean; far;

             Внимание ! Функция Test не может быть глобальной функцией.

             Предполагая, что List имеет тип TCollection, оператор:

                 P := List.FirstThat(@Matches);

        соответствует следующему:

                  I := 0;
                  while (I < List.Count) and not Matches(List.At(I))
                  do Inc(I);
                  if I < List.Count then P := List.At(I) else P := nil;

             См. также: TCollection.LastThat, TCollection.ForEach

             ForEarch
                  procedure ForEarch(Action: Pointer);

             ForEach  применяет  действие,  определенное  процедурой,  на
        которую  указывает  Action, для каждого элемента набора. Параметр
        Action  должен указывать на локальную процедуру типа far, исполь-
        зующую один параметр типа Pointer. Например:

                 procedure PrintItem(Item: Pointer); far

             Внимание! Процедура Action не может быть глобальной процеду-
        рой.

             Если List имеет тип TCollection, то оператор:

                 List.ForEach(@PrintItem);

        соответствует следующему:

                 for I := 0 to List.Count - 1 do PrintItem(List.At(I));

             См. также: TCollection.FirstThat, TCollection.LastThat

             Free
                  procedure Free(Item: Pointer);

             Удаляет  элемент  Item  из  набора и освобождает память. Это
        эквивалентно следующему:

                 Delete(Item);        {удаляет указатель из набора}
                 FreeItem(Item);      {освобождает Item}

             См. также: TCollection.FreeItem, TCollection.Delete

             FreeAll
                  procedure FreeAll;

             Удаляет  и  освобождает  память  всех  элементов набора. Для
        удаления  всех элементов набора без освобождения памяти вызывайте
        DeleteAll.

             См. также: TCollection.DeleteAll

             FreeItem
                  procedure FreeItem(Item: Pointer); virtual;

             Переопределяемость: иногда переопределяется.

             Метод  FreeItem должен освобождать память Item. По умолчанию
        TCollection.FreeItem  предполагает, что Item указывает на объект,
        порожденный TObject, и поэтому вызывает деструктор Done:

                 if Item <> nil then Dispose(PObject(Item), Done);

             Объекты,  порожденные  набором, и не использующие в качестве
        элементов  наследников  TObject,  таких, как наборы строк, должны
        переопределять FreeMem для освобождения памяти, занятой Item.

             Внимание!  Метод  FreeItem  вызывается из Free и FreeAll, но
        никогда не должен вызываться напрямую.

             См. также: TCollection.Free, TCollection.FreeAll

             GetItem
                  function TCollection.GetItem(var   S:   TStream):
                                                     Pointer; virtual;

             Переопределяемость: иногда используется.

             Читает элемент из потока S. По умолчанию TCollection.GetItem
        предполагает,  что  элементы набора порождены TObject, и вызывает
        для загрузки элемента TStream.Get:

                 GetItem := S.Get;

             Объекты,  порожденные  набором, и не использующие в качестве
        элементов  наследников  TObject,  таких, как наборы строк, должны
        переопределять  GetMem  для  чтения  из потока нужного элемента и
        возврата указателя на него.

             Load  вызывает  GetItem  для чтения каждого элемента потока.
        Этот  метод  может  быть  переопределен,  но не должен вызываться
        непосредственно.

                 См. также:        TStream.Get,         TCollection.Load,
        TCollection.Store

             IndexOf
                  functionIndexOf(Item: Pointer): Integer; virtual;

             Переопределяемость: никогда не переопределяется.

             Возвращает   индекс   для  Item.   Преобразует  операцию   в
        TCollection.At.   Если Item  не содержится  в наборе,  то IndexOf
        возвращает -1.

             См. также: TCollection.At

             Insert
                  procedure Insert(Item: Pointer); virtual;

             Переопределяемость: никогда не используется.

             Вставляет  Item  в  набор, перестраивая другие индексы, если
        это  необходимо. По умолчанию вставка производится в конец набора
        вызовом  AtInsert(Count, Item); Типы, порожденные набором, такие,
        как  отсортированные  наборы,  могут  вставлять  элементы в любые
        места.

             См. также: TCollection.AtInsert;

             LastThat
                  function LastThat(Test: Pointer): Pointer;

             LastThat  применяет  булеву  функцию, заданную указателем на
        функцию  Test, к каждому элементу набора в порядке снизу вверх до
        тех  пор,  пока Test не вернет True. Возвращает указатель на эле-
        мент,  для  которого  Test возвращает True, или nil, если функция
        Test  возвращает  False для всех элементов. Test должен указывать
        на  локальную  функцию  типа far, использующую один параметр типа
        Pointer и возвращающую значение типа Boolean, например:

                 function Matches(Item: Pointer): Boolean; far;

             Внимание! Функция Test не может быть глобальной функцией.

             Если List имеет тип TCollection, то оператор:

                 P := List.LastThat(@Matches);

        соответствует:

                 I := List.Count - 1;
                 while (I >= 0) and not Matches(List.At(I)) do Dec(I);
                 if I >= 0 then P := List.At(I) else P := nil;

             См. также: TCollection.FirstThat, TCollection.ForEach;

             Pack
                  procedure Pack;

             Удаляет из набора все указатели со значением nil.

             См. также: TCollection.Delete

             PutItem
                  procedure PutItem(var S: TStream;
                                           Item: Pointer); virtual;

             Переопределяемость: иногда используется.

             Пишет   элемент    Item   в    поток   S.    По    умолчанию
        TCollection.PutItem   предполагает,    что    элементы    наборов
        порождаются  TObject,  и  таким  образом, для сохранения элемента
        вызывает TStream.Put:

                 S.Put(Item);

             Объекты,  порожденные  набором, и не использующие в качестве
        элементов  наследников  TObject,  таких, как наборы строк, должны
        переопределять PutItem для записи элемента Item в поток.

             Store  вызывает  PutItem  для  каждого элемента набора. Этот
        метод может переопределяться, но не должен вызываться непосредст-
        венно.

             См. также:      TCollection.GetItem,      TCollection.Store,
        TCollection.Load

             SetLimit
                  procedure SetLimit(ALimit: Integer); virtual;

             Переопределяемость: используется редко.

             Расширяет или сокращает набор,  изменяя память,  необходимую
        для работы с ALimit элементами.  Если ALimit меньше Count, то она
        устанавливается равной Count, а если ALimit больше MaxCollection-
        Size,  то она устанавливается равной MaxCollectionSize. Кроме то-
        го,  если  ALimit  отличается  от  текущего  значения  Limit,  то
        SetLimit выделяется новый массив Items из Alimit элементов,  ста-
        рый массив Items копируется в новый массив и  память,  выделенная
        под старый массив, освобождается.

             См.также: TCollection.Limit,  TCollection.Count,  переменная
        MaxCollectionSize

             Store
                  procedure Store(var S: TStream);

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

             См. также: TCollection.PutItem

*-      TColorDialog                                           ColorSel
        -----------------------------------------------------------------

             Диалоговое окно цветов представляет собой специализированное
        диалоговое  окно  с заголовком "Colors", позволяющее пользователю
        изменять цвета палитры во всей программе, одновременно наблюдая в
        диалоговом окне выбранную цветовую схему.

             TColorDialog  использует набор специализированных отображае-
        мых элементов, включающий TColorItem, TColorGroup, TColorSelector
        и  TColorDisplay.  Полное описание использования диалогового окна
        цветов содержится в Главе 14.

*-                                     Поля
        -----------------------------------------------------------------

             BakLabel
                  BakLabel: PLabel;

             Указывает на метку селектора цвета фона.

             BakSel
                  BakSel: PColorSelector;

             Указывает на селектор цвета фона диалогового окна.

             Display
                  Display: PColorDisplay;

             Указывает на объект цвета дисплея в диалоговом окне. Цветной
        дисплей изображает текст выбранного в настоящий момент цвета.

             ForLabel
                  ForLabel: PLabel;

             Указывает на метку цвета изображения в диалоговом окне.

             ForSel
                  ForSel: PColorSelector;

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

             GroupIndex
                  GroupIndex: Byte;

             Указывает  ту  группу  в  списке  групп цветов, которая была
        активна последней.

             Groups
                  Groups: PColorGroupList;

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

             MonoLabel
                  MonoLabel: PMonoSelector;

             Указывает на селектор монохромных атрибутов.

             Pal
                  Pal: TPalett;

             Хранит копию изменяемой палитры.

*-                                    Методы
        -----------------------------------------------------------------

             Init
                  constructor Init (APalette: TPalette;
                                                AGroups: PColorGroup);

             Создает   диалоговое   окно   размером   62х19 с  заголовком
        'Colors',   вызывая    конструктор    Init,   унаследованный   от
        TDialog,  и  добавляя   к  флагам  Options  параметр  ofCentered.
        Устанавливает  Pal  равным  APalette.  Создает и вставляет список
        группы цветов, связанный  с  AGroups, и список элементов  цветов,
        связанный с AGroups^.Items вместе  со связанными с ними  полосами
        прокрутки и метками.   Создает  и   вставляет  селекторы    цвета
        для цветов изображения и фона,  присваивая их ForSel и BakSel,  а
        также  создает  и   вставляет  метки    для   этих    селекторов,
        присваивая  их  ForLabel  и  BakLabel.   Создает   и    вставляет
        скрытый  монохромный селектор и его метку.  Создает  и  вставляет
        кнопки Ok и Cancel, и передает фокус списку группы цветов.

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

             Load
                  constructor Load (var S: TStream);

             Создает  и  загружает  диалоговое  окно из потока S, вызывая
        сначала  конструктор Load, унаследованный от TDialog, затем читая
        указатели  на  подэлементы, введенные на основе TColorDialog, и в
        заключение читая палитру.

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

             DataSize
                  function DataSize: Word; virtual;

             Возвращает  размер  палитры, представляющий собой объем дан-
        ных,  переданных к или от диалогового окна, с помощью SetData или
        GetData.

             См. также: TColorDialog.GetData, TColorDialog.SetData

             GetData
                  procedure GetData (var Rec); virtual;

             Вызывает  GetIndexes  для  копирования  выбранных  пунктов в
        каждой  группе  в ColorIndexes, после чего копирует DataSize байт
        из Rec в Pal, преобразуя тип Rec в тип TPalette.

             См. также: TColorDialog.DataSize

             GetIndexes
                  procedure GetIndexes (var Colors: PColorIndexes);

             Делает  цветовые индексы в Colors индексированными цветами в
        каждой   из  групп  в  Groups.  TColorDialog.GetData   использует
        GetIndexes   для   установки   индексов  в  ColorIndexes  равными
        индексам в каждой   группе  из   Groups. Сохранив ColorIndexes  в
        потоке, можно восстановить  состояние  диалогового окна с помощью
        LoadIndexes и SetData.

             См. также: переменную ColorIndexes

             HandleEvent
                  procedure HandleEvent (var Event: TEvent); virtual;

             Вызывает  метод  HandleEvent, унаследованный от TDialog, для
        обработки стандартного поведения диалогового окна, затем отвечает
        на  команды  cmNewColorIndex,  устанавливая  на  цветовом дисплее
        диалогового окна новый цвет.

             См. также: TDialog.HandleEvent, TColorDisplay.SetColor

             SetData
                  procedure SetData (var Rec); virtual;

             Копирует  DataSize  байт  из Rec в Pal, преобразуя тип Rec в
        тип TPalette. Если ShowMarkers равна True, то показывает монохро-
        мный селектор и прячет цветные селекторы.

             См. также: TColorDialog.DataSize, переменную ShowMarkers

             SetIndexes
                  procedure SetIndexes (var Colors: PColorIndexes);
                                                               virtual;

             Устанавливает  индексы в каждой группе цветов из Groups рав-
        ными  соответствующим  индексам  из  Colors. TColorDialog.SetData
        вызывает  SetIndexes  для  установки  индексов  группы  цветов из
        ColorIndexes,  восстанавливая  выбранные  элементы  с  последнего
        момента, когда ColorIndexes устанавливалась из Groups.

             См. также: TColorDialog.SetData

             Store
                  procedure Store (var S: TStream);

             Записывает диалоговое окно цветов в поток S, вызывая сначала
        метод  Store, унаследованный от TDialog, а затем записывая указа-
        тели на подэлементы, введенные с помощью TColorDialog, и в заклю-
        чение записывая палитру, хранимую в Pal.

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

*-      TColorDisplay                                          ColorSel
        -----------------------------------------------------------------

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

             Подробная  информация о полях TColorDisplay и методах приве-
        дена в оперативной подсказке.

*-      Тип TColorGroup                                        ColorSel
        -----------------------------------------------------------------

             Описание
                TColorGroup = record
                  Name:     PString;
                  Index:    Byte;
                  Items:    PColorItem;
                  Next:     PColorGroup;
                end;

             Функция: Группа цветов определяет именованную группу связан-
        ных  элементов,  для  которых  пользователь может выбирать цвета.
        Name содержит имя группы, Index содержит порядковый номер цвета в
        списке  цветов,  а  Items указывает на первый элемент в связанном
        списке  элементов  цветов.  Next указывает на следующий элемент в
        связанном списке групп цветов.

             Диалоговое  окно цветов содержит окно-список групп, перечис-
        ляющее связанный список записей TColorGroup.

             Для  создания  и инициализации записей группы цветов исполь-
        зуйте функцию ColorGroup.

             См. также: функцию ColorGroup

*-      Объект TColorGroupList                                 ColorSel
        -----------------------------------------------------------------

             Список  групп  цветов  представляет собой специализированный
        объект  окна-списка,  дающий  прокручиваемый  список  именованных
        групп  цветов  для  выбора  в  диалоговом  окне  выбора   цветов.
        TColorGroupList   ведет  себя  как  обычное  диалоговое  окно, но
        представленный в  нем список  является связанным  списком записей
        TColorGroup.

             Подробная  информация о полях TColorGroupList и методах при-
        ведена в оперативной подсказке.

*-      Тип TColorIndex                                        ColorSel
        -----------------------------------------------------------------

             Описание
                TColorIndex = record
                  GroupIndex:    Byte;
                  ColorSize:     Byte;
                  ColorIndex:    array [0..255] of Byte;
                end;

             Функция:  Диалоговые  окна  выбора  цветов используют записи
        типа  TColorIndex  для  сохранения  порядкового  номера активного
        элемента в списке группы цветов и списке элементов цветов, позво-
        ляя  диалоговому  окну  восстанавливать свое предыдущее состояние
        при  загрузке.  Использовать  этот тип непосредственно никогда не
        приходится.     Он   используется   процедурами   LoadIndexes   и
        StoreIndexes.

             См. также: процедуру LoadIndexes, процедуру  StoreIndexes.

*-      Тип TColorItem                                         ColorSel
        -----------------------------------------------------------------

             Описание
                TColorItem = record
                  Name:     PString;
                  Index:    Byte;
                  Items:    PColorItem;
                end;

             Функция:  Элемент  цвета  определяет  именованный  элемент в
        группе,  для  которого  пользователь  может  выбирать цвета. Name
        содержит  имя  элемента,  Index содержит порядковый номер палитры
        цвета  программы,  определяющей  цвет элемента. Next указывает на
        следующий элемент в связанном списке элементов цветов.

             Диалоговое окно цветов содержит окно-список элементов, пере-
        числяющее связанный список записей типа TColorItem.

             Для  создания  и инициализации новых записей типа TColorItem
        используйте функцию ColorItem.

*-      Объект TColorItemList                                  ColorSel
        -----------------------------------------------------------------

             Список  элементов цветов представляет собой специализирован-
        ный  объект, унаследованный от TListViewer, дающий список элемен-
        тов  в  группе  цветов,  для  которых пользователь может выбирать
        цвета.  Список элементов цветов берется из поля Items записи типа
        TColorGroup.  Диалоговые  окна  выбора  цветов  используют список
        элементов  цветов  для  предоставления  пользователю  возможности
        выбирать группы элементов цветов для выбора цветов.

             Подробная информация о полях TColorItemList и методах приве-
        дена в оперативной подсказке.

*-      Тип TColorSel                                          ColorSel
        -----------------------------------------------------------------

             Описание
                  TColorSel = (csBackground, csForeground);

             Функция:  Объекты  селектора цветов используют перечисляемый
        тип TColorSel для описания типа селектора: фон или изображение.

             См. также: TColorSelector.SelType

*-      Объект TColorSelector                                  ColorSel
        -----------------------------------------------------------------

             Объекты  селектора  цветов  показывают  цвета, доступные для
        данного  отображаемого элемента. Существуют два их варианта: один
        для  цветов  фона, другой для цветов изображения. Диалоговые окна
        выбора цветов используют один из этих типов для показа возможного
        выбора цветов и цветов, выбранных в настоящий момент.

             Подробная информация о полях TColorSelector и методах приве-
        дена в оперативной подсказке.

*-      Тип TCommandSet                                        Views
        -----------------------------------------------------------------

             Описание: TCommandSet = set of Byte;

             Функция:  Тип TCommandSet полезен для хранения произвольного
        множества,  содержащего  до  256  команд.  Он позволяет выполнить
        простое тестирование и определить, соответствует ли данная коман-
        да  определенному критерию в программах обработки событий, и поз-
        воляет установить маски команд.

             Например,  методы  TView:  EnableCommands,  DisableCommands,
        GetCommands  и SetCommands используют аргументы типа TCommandSet.
        Набор команд можно описать и инициализировать, используя оператор
        Паскаля:

              CurCommandSet: TCommandSet = [0..255] - [cmZoom, cmClose,
                                           cmResize, cmNext];

             См. также:          cmXXXX,           TView.DisableCommands,
        TView.EnableCommands, TView.GetCommands, TView.SetCommands

*-      TDeskTop                                                  App
        -----------------------------------------------------------------

             TDeskTop-  это  простая группа, которая владеет отображаемым
        элементом  TBackground, на котором появляются окна и другие отоб-
        ражаемые  элементы  программы.  TDeskTop представляет оперативную
        область  экрана,  располагающуюся  между  верхней  полосой меню и
        нижней строкой состояния.

             Внимание! В версии 2.0 у объекта оперативной (рабочей) обла-
        сти появилось новое поле, позволяющее описывать способ мозаичного
        расположения объектов по умолчанию.

*-                                   Поля
        -----------------------------------------------------------------

             Background
                  Background: PBackground

             Указывает на объект фона оперативной области.

             TileColumnsFirst
                  TileColumnsFirst: Boolean;

             TileColumnsFirst  определяет, каким из окон будет отдаваться
        предпочтение  в случае мозаичного расположения в рабочей области:
        вертикальным  или  горизонтальным.  По умолчанию TileColumnsFirst
        равно  False, сохраняя поведение, принятое в версии 1.0, отдающей
        предпочтение  вертикальному  расположению  окон.  Установка этого
        поля  равным True приводит к отданию предпочтения горизонтальному
        расположению так, что, например, мозаичное расположение двух окон
        поместит их друг рядом с другом, а не одно под другим.

             См. также: TDesktop.Tile

*-                                    Методы
        -----------------------------------------------------------------

             Init
                  constructor Init(var Bounds: TRect);

             Создает группу TDeskTop с размером Bounds, вызывая конструк-
        тор Init, унаследованный от TGroup. Устанавливает GrowMode равной
        gfGrowHiX  +  gfGrowHiY. Для создания отображаемого элемента фона
        вызывает InitBackground, и если Background не равна nil, осущест-
        вляет его вставку.

             См. также:        TDeskTop.InitBackGround,       TGroup.Init,
        TGroup.Insert

             Cascade
                  procedure Cascade(var R: TRect);

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

             Если  рабочая область не может расположить окна каскадно, то
        она оставляет их на месте и вызывает TileError.

             См. также: ofTileable, TDeskTop.Tile, TDesktop.TileError

             HandleEvent
                  procedure HandleEvent(var Event: TEvent); virtual;

             Переопределяемость: переопределяется редко.

             Вызывает  метод  HandleEvent,  унаследованный  от  TGroup, а
        затем отрабатывает команды cmNext (обычно оперативную клавишу F6)
        и  cmPrevious циклическим проходом по окнам (начиная с выбранного
        в  настоящий момент отображаемого элемента), принадлежащим опера-
        тивной области экрана.

             См. также: TGroup.HandleEvent, константы команд cmXXXX

             InitBackGround
                  procedure InitBackGround; virtual;

             Переопределяемость: иногда переопределяется.

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

             См. также: TDeskTop.Init

             Tile
                  procedure Tile(var R: TRect);

             Переопределяемость: иногда переопределяется.

             Заново  отображает  все  отображаемые элементы с ofTileable,
        принадлежащие  рабочей  области экрана, в мозаичном формате. Если
        рабочая  область  не может расположить окна требуемым образом, то
        она оставляет их на месте и вызывает TileError.

             См. также: TDeskTop.Cascade, ofTileable, TDeskTop.TileError

             TileError
                  procedure TileError; virtual;

             Переопределяемость: иногда переопределяется.

             Метод  TileError  вызывается,  если возникла ошибка во время
        работы  TDeskTop.Tile или TDeskTop.Cascade. Вы можете переопреде-
        лить  его,  чтобы  указать  пользователю,  что программа не может
        перерасположить окна.

             См. также: TDeskTop.Tile, TDeskTop.Cascade

*-      TDialog                                                Dialogs
        -----------------------------------------------------------------

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

            - GrowMode равна 0, т.е. диалоговые окна могут увеличиваться;

            - флаги  wfMove  и  wfClose установлены, т.е. диалоговые окна
        можно перемещать и закрывать (имеется закрывающая пиктограмма);

            - обработчик событий TDialog вызывает TWindow.HandleEvent, но
        также  дополнительно  отрабатывает ответы на клавиши Esc и Enter.
        Клавиша Esc генерирует команду cmCancel, а Enter генерирует кома-
        нду cmDefault;

            - диалоговые окна не имеют номеров;

            - метод  TDialog.Valid возвращает True на команду cmCancel, в
        противном случае вызывает TGroup.Valid.

             Внимание!  В версии 2.0 в дополнение к существующей по умол-
        чанию  серой палитре диалоговые окна поддерживают синюю и голубую
        палитры.  Предыдущие  версии  TDialog  игнорировали поле Palette.
        Теперь объекты диалогового окна могут указывать палитру, присваи-
        вая Palette константы dpXXXX.

*-                                    Методы
        -----------------------------------------------------------------

             Init
                  constructor Init(var Bounds: TRect; ATitle: TTitleStr);

             Создает  диалоговое  окно  с заданным размером и заголовком,
        вызывая  конструктор Init, унаследованный от TWindow, передавая в
        качестве параметров Bounds, ATitle и wnNoNumber. GrowMode устана-
        вливается  равным  0,  а  Flags  устанавливается  равной wfMove +
        wfClose.  Это  означает,  что  по умолчанию диалоговые окна можно
        перемещать и закрывать, но нельзя изменять их размеры.

             Заметим, что TDialog не определяет собственного деструктора,
        а  использует  Close  и Done, наследуемые через TWindow, TGroup и
        TView.

             См. также: TWindow.Init

             Load
                  constructor Load (var S: TStream);

             Считывает  объект диалогового окна из потока S, вызывая сна-
        чала  конструктор Load, унаследованный от TWindow, а затем обнов-
        ляя  необходимым  образом  информацию  о  палитре. Load проверяет
        значение  флагов  Options  загруженного  диалогового окна, и если
        биты  ovVersion  равны  ofVersion10,  то  Load устанавливает поле
        Palette  равным  dpGrayDialog и обновляет значение Options, чтобы
        оно включало ofVersion20.

             См. также: TWindow.Load

             HandleEvent
                  procedure HandleEvent(var Event: TEvent); virtual;

             Переопределяемость: иногда используется.

             Обрабатывает большинство событий, вызывая метод HandleEvent,
        унаследованный от TWindow, а затем обрабатывает события от клавиш
        Enter   и  Esc.  В  частности,  клавиша  Esc  генерирует  команду
        cmCancel, а Enter посылает сообщения cmDeafult.

             Этот  метод также обрабатывает cmOK, cmCancel, cmYes и cmNo,
        прекращая режимное состояние диалогового окна.

             См. также: TWindow.HandleEvent

             GetPalette
                  function GetPalette: PPalette; virtual;

             Переопределяемость: переопределяется редко.

             Этот  метод возвращает указатель на палитру, заданную индек-
        сом палитры в поле Field. В таблице 19.39 показаны палитры, возв-
        ращаемые для различных значений Palette.

             Таблица  19.39 Возвращаемые палитры диалогового окна в зави-
        симости от значения Palette

             ------------------------------------------------------------
             Поле Palette        Возвращенная палитра
             ------------------------------------------------------------
             dpBlueDialog        CBlueDialog

             dpCyanDialog        CCyanDialog

             dpGrayDialog        CGrayDialog
             ------------------------------------------------------------

             Внимание!  В  версии 1.0 GetPalette всегда возвращала указа-
        тель  на палитру, определенную по умолчанию, CDialog. Для обеспе-
        чения  совместимости  с  предыдущими версиями CDialog по прежнему
        доступна.   Палитра,   заданная  по  умолчанию   в  версии   2.0,
        CGrayDialog, идентична CDialog.

             См. также: TWindow.Palette

             Valid
                  function Valid(Command: Word): Boolean; virtual;

             Переопределяемость: переопределяется редко.

             Возвращает  значение  True, если заданная команда- cmCancel,
        или если метод Valid, унаследованный от TWindow, возвращает True.

             См. также: TGroup.Valid

*-                                   Палитра
        -----------------------------------------------------------------

             Объекты  диалогового  окна  используют  различные  палитры в
        зависимости  от  значения  поля Palette. Обратите внимание на то,
        что  палитра  диалоговых окон CDialog, используемая в версии 1.0,
        идентична  палитре,  определенной  по  умолчанию  в  версии  2.0,
        CGrayDialog.

                           1   2   3   4   5   6   7   8   9
                         ЙНННСНННСНННСНННСНННСНННСНННСНННСННН»
        CGrayDialog      є 32і 33і 34і 35і 36і 37і 38і 39і 40є
                         МНННШНННШНННШНННШНННШНННШНННШНННШННН№
        CBlueDialog      є 64і 65і 66і 67і 68і 69і 70і 71і 72є
                         МНННШНННШНННШНННШНННШНННШНННШНННШННН№
        CCyanDialog      є 96і 97і 98і 99і100і101і102і103і104є
                         ИНСНПНСНПНСНПНСНПНСНПНСНПНСНПНСНПНСНј
                           і   і   і   і   і   і   і   і   і
            Пассивная    ДДЩ   і   і   і   і   і   і   і   А Оперативная
            рамка              і   і   і   і   і   і   і    клавиша метки
            Активная     ДДДДДДЩ   і   і   і   і   і   АДДД Подсвеченная
            рамка                  і   і   і   і   і        метка
            Пиктограмма  ДДДДДДДДДДЩ   і   і   і   АДДДДДДД Нормальная
            рамки                      і   і   і            метка
            Страница       ДДДДДДДДДДДДЩ   і   АДДДДДДДДДДДДД Статический
            прокрутки                      і                  текст
            Элементы управления ДДДДДДДДДДДЩ
            прокруткой

                       1   2   3   4   5   6   7   8   9
                     ЙНННСНННСНННСНННСНННСНННСНННСНННСННН»
        CGrayDialog  є 32і 33і 34і 35і 36і 37і 38і 39і 40є
                     МНННШНННШНННШНННШНННШНННШНННШНННШННН№
        CBlueDialog  є 64і 65і 66і 67і 68і 69і 70і 71і 72є
                     МНННШНННШНННШНННШНННШНННШНННШНННШННН№
        CCyanDialog  є 96і 97і 98і 99і100і101і102і103і104є
                     ИНСНПНСНПНСНПНСНПНСНПНСНПНСНПНСНПНСНј
                       і   і   і   і   і   і   і   і   і
        Нормальная    ДЩ   і   і   і   і   і   і   і   А Оперативная
        "кнопка"           і   і   і   і   і   і   і     клавиша кластера
        "Кнопка" по   ДДДДДЩ   і   і   і   і   і   АДДДД Выбранный
        умолчанию              і   і   і   і   і         кластер
        Выделенная    ДДДДДДДДДЩ   і   і   і   АДДДДДДДД Нормальный
        "кнопка"                   і   і   і             кластер
        Запрещенная   ДДДДДДДДДДДДДЩ   і   АДДДДДДДДДДДД Тень "кнопки"
        "кнопка"                       і
        Оперативная клавишаДДДДДДДДДДДДЩ
        "кнопки"

                        19  20  21  22  23  24  25
                      ЙНННСНННСНННСНННСНННСНННСННН»
        CGrayDialog   є 50і 51і 52і 53і 54і 55і 56є
                      МНННШНННШНННШНННШНННШНННШННН№
        CBrayDialog   є 82і 83і 84і 85і 86і 87і 88є
                      МНННШНННШНННШНННШНННШНННШННН№
        CCyanDialog   є114і115і116і117і118і119і120є
                      ИНСНПНСНПНСНПНСНПНСНПНСНПНСНј
                        і   і   і   і   і   і   і
        Нормальная    ДДЩ   і   і   і   і   і   АДД Элементы управления
        строка ввода        і   і   і   і   і       прокруткой в окне
        Выбранная     ДДДДДДЩ   і   і   і   і       протокола
        строка ввода            і   і   і   і
        Стрелки       ДДДДДДДДДДЩ   і   і   АДДДДДД Страница прокрутки
        строки ввода                і   і           окна протокола
        Стрелка протокола ДДДДДДДДДДЩ   і
                                        АДДДДДДДДДД Стороны протокола

                           19  20  21  22  23  24  25
                         ЙНННСНННСНННСНННСНННСНННСННН»
           CGrayDialog   є 50і 51і 52і 53і 54і 55і 56є
                         МНННШНННШНННШНННШНННШНННШННН№
           CBrayDialog   є 82і 83і 84і 85і 86і 87і 88є
                         МНННШНННШНННШНННШНННШНННШННН№
           CCyanDialog   є114і115і116і117і118і119і120є
                         ИНСНПНСНПНСНПНСНПНСНПНСНПНСНј
                           і   і   і   і   і   і   і
        Нормальный просмотрЩ   і   і   і   і   і   АДД Зарезервировано
        списка                 і   і   і   і   і
        Активный просмотр  ДДДДЩ   і   і   і   АДДДДДД Зарезервировано
        списка                     і   і   і
        Выделенный просмотр ДДДДДДДЩ   і   АДДДДДДДДД Информационная
                                       і              область
        Разделитель просмотра ДДДДДДДДДЩ

             См. также: Метод GetPalette для каждого типа объекта.

*-      Объект TDirCollection                                  StdDlg
        -----------------------------------------------------------------
             TDirCollection  представляет  собой  набор записей DirEntry,
        используемый   TDirListBox.   Подробная   информация   о    полях
        TDirCollection и его методах приведена в оперативной подсказке.

*-      Тип TDirEntry                                          StdDlg
        -----------------------------------------------------------------
             Описание:
                  TDirEntry = record
                       DisplayText:   PString;
                       Directory:     PString;
                  end;

             Функция:  DirEntry  представляет  собой  простой тип записи,
        содержащий строку с путем к каталогу и описания. Эти записи испо-
        льзуются  в  объектах  TDirCollection  для  хранения информации о
        каталоге для диалогового окна смены каталога.

             См. также: объект TDirCollection

*-      Объект TDirListBox                                     StdDlg
        -----------------------------------------------------------------
             TDirListBox  представляет  собой  специальный   отображаемый
        элемент  окна-списка, отображающий дерево каталогов, хранящееся в
        объекте TDirCollection для использования в TChDirDialog.

             По  умолчанию  каталоги  появляются  в окне в один столбец с
        вертикальной  полосой  прокрутки.  Подробная  информация  о полях
        TDirListBox и его методах приведена в оперативной подсказке.

*-      TDosStream                                              Objects
        -----------------------------------------------------------------
             TDosStream- это специализированный производный поток, реали-
        зующий небуфферизованный  поток файла DOS.  Конструктор позволяет
        создать или открыть файл DOS,  задав его  имя  и  режим  доступа:
        stCreate, stOpenRead, stOpenWrite или stOpen. В TDosStream введе-
        но дополнительное поле Handle- традиционный  идентификатор  файла
        DOS, используемый для доступа к открытому файлу.

             Большинство программ будут использовать буферизованный поток
        TBufStream,  порожденный от TDosStream. TDosStream переопределяет
        все абстрактные методы TStream, за исключением TStream.Flush.

*-                                     Поля
        -----------------------------------------------------------------
             Handle                                   (только для чтения)
                  Handle: Word;

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

*-                                    Методы
        -----------------------------------------------------------------

             Init
                  constructor Init(FileName: FNameStr; Mode: Word);

             Создает поток файла DOS с именем FileName и заданным режимом
        доступа. В случае успеха поле Handle устанавливается равным иден-
        тификатору файла DOS. Ошибка указывается вызовом Error с аргумен-
        том stInitError.

             Аргумент  Mode  должен принимать одно из значений: stCreate,
        stOpenRead,  stOpenWrite  или  stOpen.  Эти константы объяснены в
        этой главе в разделе "Константы потока stXXXX".

             Done
                  destructor Done; virtual;

             Переопределяемость: не переопределяется.

             Закрывает и освобождает поток файла DOS.

             См. также: TDosStream.Init

             GetPos
                  function GetPos: Longint; virtual;

             Переопределяемость: не используется.

             Возвращает значение текущей позиции в потоке. Первая позиция
        имеет номер 0.

             См. также: TDosStream.Seek

             GetSize
                  function GetSize: Longint; virtual;

             Переопределяемость: не переопределяется.

             Возвращает размер потока в байтах.

             Read
                  procedure Read(var Buf; Count: Word); virtual;

             Переопределяемость: не используются.

             Считывает  из потока Count байт в буфер Buf, начиная с теку-
        щей позиции потока.

             См. также: TDosStream.Write, stReadError

             Seek
                  procedure Seek(Pos: Longint); virtual;

             Переопределяемость: не переопределяется.

             Устанавливает  текущую  позицию  равной  Pos  байт от начала
        потока. Первая позиция имеет номер 0.

             См. также: TDosStream.GetPos, TDosStream.GetSize

             Truncate
                  procedure Truncate; virtual;

             Переопределяемость: не переопределяется.

             Удаляет  все  данные  текущего  потока от текущей позиции до
        конца потока.

             См. также: TDosStream.GetPos, TDosStream.Seek

             Write
                  procedure Write(var Buf; Count: Word); virtual;

             Записывает Count байт из буфера Buf в поток, начиная с теку-
        щей позиции.

             См. также: TDosStream.Read, stWriteError

*-      Тип TDrawBuffer                                        Views
        -----------------------------------------------------------------

             Описание:  TDrawBuffer = array[0..MaxViewWidth-1] of Word;

             Функция: Тип TDrawBuffer используется для объявления буферов
        для  методов Draw различных отображаемых элементов. Обычно данные
        и  атрибуты  сохраняются  и  форматируются  строка  за  строкой в
        TDrawBuffer, а затем выводятся на экран:

                  var
                    B: TDrawBuffer;
                  begin
                    MoveChar(B, ' ', GetColor(1), Size.X);
                                           {заполняет буфер пробелами}
                    WriteLine(0, 0, Size.X, Size.Y, B);
                                           {пишет буфер на экран}
                  end;

             См. также: TView.Draw, MoveBuf, MoveChar, MoveCStr, MoveStr

*-      Тип TEditBuffer                                        Editors
        -----------------------------------------------------------------

             Описание:
                  TEditBuffer = array [0..65519] of Char;

             TEditBuffer  определяет  массив символов для редактирования.
        Объекты TEditor и TMemo используют массивы TEditBuffer для сохра-
        нения буферов для редактирования.

*-      Объект TEditor                                         Editors
        -----------------------------------------------------------------

             TEditor реализует простой, быстрый редактор с объемом памяти
        64K для использования в программах Turbo Vision. Он имеет поддер-
        жку мыши, отмену изменений, работу с системным буфером, автомати-
        ческие режимы формирования отступов и изменение режимов вставки/-
        замены,  создание  оперативных  клавиш,  а  также поиск и замену.
        Отображаемые элементы редактора можно использовать для редактиро-
        вания файлов и для многостроковых полей комментариев в диалоговых
        окнах или бланках.

             Некоторые  другие  объекты,  такие, как TMemo и TFileEditor,
        моментально дают полезные объекты редактора, но они наследуют все
        основные функции от TEditor.

             Использование  объектов  редактора полностью описано в Главе
        15, "Редактор и текстовые отображаемые элементы".

*-                                     Поля
        -----------------------------------------------------------------

             AutoIndent
                  AutoIndent: Boolean;

             Если  AutoIndent равно True, то редактор автоматически начи-
        нает  печать  строки  текста  с той колонки, с которой начинается
        предыдущая  строка;  в противном случае новые строки начинаются с
        крайней левой позиции.

             Buffer
                  Buffer: PEditBuffer;

             Указывает на буфер, в котором объект редактора хранит редак-
        тируемый текст. Текст может содержать до 64K символов.

             См. также: тип TEditBuffer

             BufLen
                  BufLen: Word;

             BufLen  хранит  количество  символов  между началом буфера и
        текущим положением курсора.

             BufSize
                  BufSize: Word;

             BufSize  представляет  собой размер текстового буфера в бай-
        тах.

             CanUndo
                  CanUndo: Boolean;

             CanUndo  определяет,  поддерживает  ли редактор режим отмены
        изменений.  По  умолчанию  TEditor.Init  устанавливает   значение
        CanUndo   равным  True,  что  указывает  на способность редактора
        отменять изменения.

             CurPos
                  CurPos: TPoint;

             CurPos указывает строку и столбец файла, в которых находится
        курсор.  Cursor.X дает текущий столбец, а Cursor.Y- текущую стро-
        ку.

             CutPtr
                  CutPtr: Word

             CutPtr  представляет собой положение курсора в буфере редак-
        тора.

             DelCount
                  DelCount: Word;

             Количество символов в конце промежутка, которые были удалены
        из  текста. DelCount используется для отмены изменений, связанных
        с удалением символов.

             Delta
                  Delta: TPoint;

             Delta  представляет  собой  верхнюю  строку и левый столбец,
        показанные  на  отображаемом элементе. Delta.X- это левый видимый
        столбец, а Delta.Y- верхняя видимая строка.

             DrawLine
                  DrawLine: Integer;

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

             DrawPtr
                  DrawPtr: Word;

             DrawPtr представляет собой положение курсора в буфере, испо-
        льзуемом Draw.

             GapLen
                  GapLen: Word

             GapLen  представляет собой размер "промежутка" между текстом
        до курсора и текстом после курсора. Понятие промежутка объясняет-
        ся в Главе 15.

             HScrollBar
                  HScrollBar: PScrollBar;

             Указывает на объект горизонтальной полосы прокрутки, связан-
        ный  с  редактором.  Значение  nil  указывает на отсутствие такой
        полосы прокрутки.

             Indicator
                  Indicator: PIndicator;

             Указывает  на  объект  индикатора,  связанный  с редактором.
        Объект  индикатора  показывает  редактируемые  в настоящий момент
        строку и столбец.

             См. также: объект TIndicator

             InsCount
                  InsCount: Word;

             Количество  символов, вставленных в текст, с момента послед-
        него  перемещения курсора. InsCount используется для отмены изме-
        нений, связанных со вставкой.

             IsValid
                  IsValid: Boolean;

             Содержит  значение  True, если отображаемый элемент является
        допустимым. IsValid используется методом Valid.

             См. также: TEditor.Valid

             Limit
                  Limit: TPoint;

             Limit  содержит  максимальные ширину и длину текста. Limit.X
        дает  длину  самой  длинной строки, а Limit.Y- количество строк в
        файле.

             Modified
                  Modified: Boolean;

                  Имеет значение True, если буфер изменялся.

             OverWrite
                  OverWrite: Boolean

             Если  OverWrite  равно  True, то печатаемые в буфере символы
        замещают существовавшие ранее; в противном случае редактор осуще-
        ствляет вставку вводимых символов.

             Selecting
                  Selecting: Boolean;

             Selecting равно True в том случае, если пользователь отмеча-
        ет блок, как это бывает после отметки начала блока, но до отметки
        его конца. В остальные моменты времени Select равно False.

             SelEnd
                  SelEnd: Word;

             SelEnd  представляет собой положение в буфере конца выделен-
        ного текста.

             SelStart
                  SelStart: Word;

             SelStart  представляет собой положение в буфере начала выде-
        ленного текста.

             VScrollBar
                  VScrollBar: PScrollBar;

             Указывает на объект вертикальной полосы прокрутки, связанный
        с  редактором.  Значение nil указывает на отсутствие такой полосы
        прокрутки.

*-                                    Методы
        -----------------------------------------------------------------

             Init
                  constructor Init (var Bounds: TRect;
                       AHScrollBar, AVScrollBar: PScrollBar;
                       AIndicator: PIndicator;
                       ABufSize: Word);

             Создает   отображаемый   элемент с  границами, указанными  в
        Bounds,   путем   вызова  конструктора  Init,  унаследованного от
        TView.  Устанавливает  GrowMode  равным  gfGrowHiX  +  gfGrowHiY,
        Options  равным   Options  или  ofSelectable  и  EventMask равным
        evMouseDown  +  evKeyDown  +  evCommand + evBroadcast. Показывает
        курсор в редакторе и  присваивает полям HScrollBar,   VScrollBar,
        Indicator  и   BufSize   значения,    переданные    в    качестве
        параметров. Устанавливает CanUndo равным True.

             Выделяет    память    под  буфер   редактирования,   вызывая
        InitBuffer. Если  память выделить  не удается,  то Init  вызывает
        EditorDialog    для    выдачи  сообщения   "Out  of   memory"   и
        устанавливает размер  буфера равным  0. Для  инициализации буфера
        вызывает SetBufLen (0).

             См. также: TView.Init, TEditor.InitBuffer, TEditor.SetBufLen

             Load
                  constructor Load (var S: TStream);

             Создает  и  загружает  объект редактора из потока S, вызывая
        сначала конструктор Load, унаследованный от TView, а затем считы-
        вая  поля,  введенные  TEditor.  Выделяет память и инициализирует
        буфер так же, как и TEditor.Init.

             См. также: TView.Load, TEditor.InitBuffer, TEditor.SetBufLen

             Done
                  destructor Done; virtual;

             Уничтожает  буфер  редактирования, вызывая DoneBuffer, после
        чего освобождает память из-под объекта редактора вызовом деструк-
        тора Done, унаследованного от TView.

             См. также: TEditor.DoneBuffer, TView.Done

             BufChar
                  function BufChar (P: Word): Char;

             Возвращает символ буфера с номером P.

             BufPtr
                  function BufPtr (P: Word): Word;

             Возвращает  положение  в буфере символа с номером P с учетом
        возможного промежутка за символом.

             ChangeBounds
                  procedure ChangeBounds (var Bounds: TRect); virtual;

             Изменяет  границы отображаемого элемента редактора до значе-
        ния  Bounds,  после  этого  настраивает Delta с целью убедиться в
        том,  что  текст все еще видим, после чего в случае необходимости
        перерисовывает  отображаемый  элемент.  Так  же,  как и с методом
        TView, который он переопределяет, TEditor.ChangeBounds вызывается
        другими методами, но не должен вызываться непосредственно.

             ConvertEvent
                  procedure ConvertEvent (var Event: TEvent); virtual;

             Используется  HandleEvent  для обработки назначения клавиш и
        основных  операций  редактирования.  Если  Вы хотите изменить или
        расширить  существующие по умолчанию назначения клавиш, Вы должны
        переопределить ConvertEvent.

             См. также: TEditor.HandleEvent

             CursorVisible
                  function CursorVisible: Boolean;

             Возвращает значение True, если курсор видим в границах отоб-
        ражаемого элемента.

             DeleteSelect
                  procedure DeleteSelect;

             Удаляет выделенный текст, если таковой существует. Например,
        после  того,  как  ClipCut копирует выделенный текст в буфер, она
        удаляет его из буфера с помощью DeleteSelect.

             DoneBuffer
                  procedure DoneBuffer; virtual;

             Освобождает  память,  выделенную под буфер редактирования, и
        устанавливает Buffer равным nil.

             Draw
                  procedure Draw; virtual;

             Изображает  часть редактируемого текста, видимую в настоящий
        момент. То есть, она изображает строки, находящиеся внутри границ
        отображаемого элемента, учитывая значение Delta.

             GetPalette
                  function GetPalette: PPalette; virtual;

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

             HandleEvent
                  procedure HandleEvent (var Event: TEvent); virtual;

             Управляет  событиями  для  отображаемого элемента редактора,
        вызывая  сначала  метод  HandleEvent,  унаследованный от TView, а
        затем вызывая ConvertEvent для нового привязывания клавиш к кома-
        ндам, после чего обрабатывая специфическое поведение редактора.

             Обрабатываются следующие специфические события редактора:

               - мышь: Выделение текста;

               - клавиатура: Вставка/замена;

               - команда: перемещение курсора, выбор текста, редактирова-
        ние, работа с системным буфером;

               - сообщение: изменение в полосе прокрутки.

             InitBuffer
                  procedure InitBuffer; virtual;

             Вызывает  MemAlloc  для  выделения  BufSize байт динамически
        распределяемой  памяти  для  буфера  редактора, и присваивает ему
        указатель Buffer.

             InsertBuffer
                  function InsertBuffer (var P: PEditBuffer;
                            Offset, Length: Word;
                            AllowUndo, SelectText: Boolean): Boolean;

             Это  процедура  вставки  текста  низкого  уровня, вызываемая
        InsertFrom и InsertText; Вам редко придется использовать ее непо-
        средственно, если вообще придется.

             InserBuffer  производит вставку Length байт текста из P (на-
        чиная с P[Offset]) в позицию текстового буфера CurPtr, удаляя при
        этом  любой  выделенный  текст.  Если  AllowUndo  равна  True, то
        InsertBuffer    записывает    информацию,    которая     позволит
        пользователю отменить  изменения.   Еcли  SelectText равна  True,
        то  вставляемый  текст  будет  появляться  в  виде   вставленного
        выделенного блока.

             Возвращает  значение  True  в  случае успешной вставки. Если
        вставка  не  удалась  (вследствие  превышения размера буфера), то
        InsertBuffer вызывает EditorDialog для вывода предупреждения "Out
        of memory", после чего возвращает False.

             См. также: TEditor.InsertFrom, TEditor.InsertText

             InsertFrom
                  function InsertFrom (Editor: PEditor):
                                                Boolean; virtual;

             Осуществляет  вставку  текста  из  Editor в буфер редактора,
        вызывая InsertBuffer.

             См. также: TEditor.InsertBuffer

             InsertText
                  function InsertText (Text: Pointer; Length: Word;
                                           SelectText: Boolean): Boolean;

             Копирует  Length  байт  из  Text  в буфер редактора, выделяя
        вставленный текст в случае равенства SelectText True.

             ScrollTo
                  procedure ScrollTo (X, Y: Integer);

             Перемещает столбец X и строку Y в левый верхний угол отобра-
        жаемого  элемента  редактора  и  при необходимости перерисовывает
        отображаемый элемент.

             Search
                  function Search (const FindStr: String;
                                                Opts: Word): Boolean;

             Осуществляет  поиск  текста из FindStr в буфере редактирова-
        ния,  начиная  с CurPtr. Opts равно нулю для поиска, заданного по
        умолчанию, efCaseSensitive для поиска, чувствительного к регистру
        букв, или WholeWordsOnly для поиска лишь целых слов.

             Возвращает  True  и  отмечает  найденный  текст; в противном
        случае возвращает False.

             SetBufSize
                  function SetBufSize (NewSize: Word): Boolean; virtual;

             Возвращает  значение True в случае, если размер буфера может
        быть  изменен до размера NewSize. По умолчанию SetBufSize возвра-
        щает  True,  если NewSize меньше или равно BufSize. SetBufSize не
        изменяет  реального  размера  буфера; она только указывает на то,
        может  ли быть сделано такое изменение. Собственно изменение раз-
        мера буфера должно осуществляться с помощью SetBufferSize.

             См. также: функцию SetBufferSize

             SelSelect
                  procedure SelSelect (NewStart, NewEnd: Word;
                                                     CurStart: Boolean);

             Делает  текст между положениями NewStart и NewEnd выделенным
        и  при  необходимости  перерисовывает  отображаемый элемент. Если
        CurStart  равно True, то SelSelect помещает курсор в начало выде-
        ленного  блока, в противном случае курсор помещается в конец бло-
        ка.

             SetState
                  procedure SetState (AState: Word;
                                           Enable: Boolean); virtual;

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

             См. также: TView.SetState, TEditor.UpdateCommands

             Store
                  procedure Store (var S: TStream);

             Записывает объект редактора в поток S, вызывая сначала метод
        Store, унаследованный от TView, а затем записывая поля, введенные
        TEditor.

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

             TrackCursor
                  procedure TrackCursor (Center: Boolean);

             Заставляет  отображаемый  элемент прокрутить содержимое так,
        чтобы  показать  положение  курсора.  Если  Center равна True, то
        строка, в которой находится курсор, перемещается в середину отоб-
        ражаемого элемента.

             Undo
                  procedure Undo;

             Отменяет изменения, произведенные с момента последнего пере-
        мещения курсора, восстанавливая буфер редактирования к состоянию,
        которое он имел перед последним перемещением курсора.

             UpdateCommands
                  procedure UpdateCommands; virtual;

             Обновляет  команды, основанные на текущем состоянии редакто-
        ра. cmUndo разрешается только в случае, если с момента последнего
        перемещения  курсора  текст  изменялся. Делает доступными команды
        Cut,  Copy  и Paste в том случае, если в системном буфере имеется
        текст. Команда cmClear разрешается в случае, если имеется отмече-
        нный текст. Делает доступными все команды поиска и замены.

             Если  порожденные  объекты переопределяют UpdateCommands, то
        необходимо вызывать порожденный метод TEditor.UpdateCommands.

             Valid
                  function Valid (Command: Word): Boolean; virtual;

             Говорит, является ли отображаемый элемент редактора допусти-
        мым для команды, переданной в Command. По умолчанию Valid игнори-
        рует параметр Command и возвращает значение поля IsValid. IsValid
        имеет значение False только в том случае, если конструктор не мог
        выделить память для буфера редактирования.

*-                                   Палитра
        -----------------------------------------------------------------

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

                       ЙНННСННН»
          CEditor      є 6 і 7 є
                       ИНСНПНСНј
                         і   і
          Нормальный  ДДДЩ   АДДД Подсвеченный

*-      Тип TEditorDialog                                      Editors
        -----------------------------------------------------------------

             Описание:
                  TEditorDialog = function (Dialog: Integer;
                                                Info: Pointer): Word;

             Функция:  TEditorDialog  представляет собой процедурный тип,
        используемый  объектами  TEditor  для выдачи различных диалоговых
        окон.  Поскольку диалоговые окна зависят от программы, то объекты
        редактора  не изображают своих собственных диалоговых окон непос-
        редственно. Вместо этого они вызывают функцию EditorDialog, выво-
        дящую  на экран соответствующее диалоговое окно в соответствии со
        значением, переданным в параметре Dialog.

             Параметр  Dialog  должен быть одной из констант edXXXX. Info
        может  указывать  на  любые  дополнительные данные, которые могут
        потребоваться функции диалогового окна.

             Функции  диалогового окна должны обеспечить правильное пове-
        дение для всех значений параметра Dialog. Функция StdEditorDialog
        дает  удобный для использования отклик на все допустимые значения
        Dialog. В Таблице 19.40 сведены воедино все значения Info, ожида-
        емые  сообщения и возвращаемые значения для каждого значения Dia-
        log.

             Таблица 19.40. Значения параметра TEditorDialog, сообщения
                                 и возвращаемые значения

        -----------------------------------------------------------------
        Константа Dialog    Значения       Описание
        -----------------------------------------------------------------
        edOutOfMemory       Info           nil
                            Сообщение      Информирует пользователя о
                                           недостатке памяти
                            Возвращаемое   Игнорируется
                            значение

        edReadError         Info           PString, указывающая на имя
                                           файла
                            Сообщение      Информирует пользователя об
                                           ошибке чтения файла
                            Возвращаемое   Игнорируется
                            значение

        edWriteError        Info           PString, указывающая на имя
                                           файла
                            Сообщение      Информирует пользователя об
                                           ошибке записи в файл
                            Возвращаемое   Игнорируется
                            значение

        edCreateError       Info           PString, указывающая на имя
                                           файла
                            Сообщение      Информирует пользователя об
                                           ошибке создания файла
                            Возвращаемое   Игнорируется
                            значение

        edSaveModify        Info           PString, указывающая на имя
                                           файла
                            Сообщение      Запрашивает пользователя о
                                           необходимости сохранения
                                           изменений перед закрытием
                                           файла
                            Возвращаемое   cmYes для сохранения изменений,
                            значение       cmNo для отказа от сохранения
                                           изменений, cmCancel для отказа
                                           от закрытия файла

        edSaveUntitled      Info           PString, указывающая на имя
                                           файла
                            Сообщение      Запрашивает пользователя о
                                           необходимости сохранения
                                           безымянного файла
                            Возвращаемое   cmYes для сохранения файла,
                            значение       cmNo для отказа от сохранения
                                           файла, cmCancel для отказа от
                                           закрытия файла

        edSaveAs            Info           PString, указывающая на имя
                                           файла
                            Сообщение      Подсказка пользователю об
                                           имени файла
                            Возвращаемое   cmCancel при отказе от
                            значение       сохранения файла; другие
                                           значения при сохранении файла
                                           под именем из буфера, на
                                           который указывает Info

        edFind              Info           Указывает на тип TFindDialogRec
                            Сообщение      Запрос пользователю об искомом
                                           тексте и опциях поиска
                            Возвращаемое   cmCancel при отказе от поиска;
                            значение       в противном случае заполняет
                                           запись, на которую указывает
                                           Info

        edSearchFailed      Info           nil
                            Сообщение      Сообщение пользователю о том,
                                           что текст не найден
                            Возвращаемое   Игнорируется
                            значение

        edReplace           Info           Указывает на тип
                            Сообщение      TReplaceDialogRec
                                           Запрос пользователю об искомом
                                           тексте, тексте для замены и
                                           опциях поиска
                            Возвращаемое   cmCancel при отказе от поиска;
                            значение       в противном случае заполняет
                                           запись, на которую указывает
                                           Info

        edReplacePrompt     Info           Объект типа TPoint с
                                           глобальными координатами
                                           начала найденного текста
                            Сообщение      Запрос пользователю о замене
                                           текста
                            Возвращаемое   cmYes для замены текста и
                            значение       продолжения поиска; cmNo для
                                           отказа от замены, но
                                           продолжения поиска; cmCancel
                                           для отказа от замены и
                                           прекращения поиска
        -----------------------------------------------------------------

             См.  также:  константы   edXXXX,  переменную   EditorDialog,
        функцию DefEditorDialog, функцию StdEditorDialog.

*-      Объект TEditWindow                                     Editors
        -----------------------------------------------------------------

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

*-                                     Поле
        -----------------------------------------------------------------

             Editor
                  Editor: PFileEditor;

             Указывает на объект редактора, связанный с окном редактора.

*-                                    Методы
        -----------------------------------------------------------------

              Init
                  constructor Init (var Bounds: TRect;
                                 FileName: FNameStr; ANumber: Integer);

             Создает  объект  окна редактора, вызывая сначала конструктор
        Init,  унаследованный  от TWindow, для создания окна с границами,
        указанными  в  Bounds,  без  заголовка  и с номером, переданным в
        параметре  ANumber,  а затем создавая и вставляя горизонтальные и
        вертикальные  полосы  прокрутки и объект индикатора. В заключение
        Init создает объект редактора файла, передавая ему границы облас-
        ти внутри окна, полосы прокрутки, индикатор и имя файла, передан-
        ное в FileName.

             См. также: TWindow.Init, TFileEditor.Init

             Load
                  constructor Load (var S: TStream);

             Создает  и  загружает  окно  редактора  из потока S, вызывая
        сначала  конструктор  Load,  унаследованный  от  TWindow, а затем
        считывая поле редактора, введенное TEditWindow.

             См. также: TWindow.Load

             Close
                  procedure Close; virtual;

             Вызывает  метод  Close, унаследованный от TWindow, в случае,
        если  редактор  не  является  системным буфером, в случае чего он
        вызывает Hide, который прячет редактор системного буфера.

             См. также: TWindow.Close

             GetTitle
                  function GetTitle (MaxSize: Integer):
                                                     TTitleStr; virtual;

             Возвращает  имя  файла  в  редакторе или строку 'Clipboard',
        если редактируется системный буфер.

             HandleEvent
                  procedure HandleEvent (var Event: TEvent); virtual;

             Обрабатывает  события  окна редактора, вызывая сначала метод
        HandleEvent, унаследованный от TWindow, а затем обрабатывая сооб-
        щение  cmUpdateTitle, перерисовывая при этом рамку окна для изме-
        нения заголовка. Сообщение cmUpdateTitle возникает в тех случаях,
        когда имя файла изменяется в процессе его редактирования.

             См. также: TWindow.HandleEvent

             Store
                  procedure Store (var S: TStream);

             Записывает  объект  окна  редактирования  в поток S, вызывая
        сначала метод Store, унаследованный от TWindow, а затем записывая
        редактор в поток с помощью PutSubViewPtr.

             См. также: TWindow.Store, TGroup.PutSubViewPtr

*-      TEmsStream                                             Objects
        -----------------------------------------------------------------

             TEmsStream- это специализированный производный поток, реали-
        зующий  поток в расширенной памяти (EMS), порожденный от TStream.
        Дополнительные поля представляют идентификатор EMS, счетчик стра-
        ниц, размер потока и текущее положение. TEmsStream переопределяет
        6  абстрактных методов TStream, а также предоставляет специальные
        конструктор и деструктор.

             Примечание:  При отладке программы, использующей потоки EMS,
        интегрированная среда не может восстановить память EMS, распреде-
        ленную  Вашей программой в случае, если она преждевременно завер-
        шилась,  или  Вы  забыли  вызвать деструктор Done для потока EMS.
        Только  метод  Done  (или перезагрузка) могут освободить страницы
        EMS, принадлежавшие потоку.

*-                                     Поля
        -----------------------------------------------------------------

             Handle                                   (только для чтения)
                  Handle: Word;

             Идентификатор EMS для потока.

             PageCount                                (только для чтения)
                  PageCount: Word;

             Число выделенных для потока страниц, по 16К на страницу.

             Position                                 (только для чтения)
                  Position: Longint;

             Текущее положение внутри потока. Первая позиция - 0.

             Size                                      (только для чтения)
                  Size: Longint;

             Размер потока в байтах.

*-                                    Методы
        -----------------------------------------------------------------

             Init
                  constructor Init(MinSize, MaxSize: Longint);

             Создает  поток EMS с заданным минимальным размером в байтах.
        Вызывает  конструктор  Init,  унаследованный  от TStream, а затем
        устанавливает значения Handle, Size и PageCount. Вызывает Error с
        аргументом stInitError, если инициализация неудачна.

             Драйверы  EMS до версии 4.0 не поддерживают блоков расширен-
        ной памяти с изменяемыми размерами. С драйвером EMS до версии 4.0
        поток  EMS  не  может расширяться более первоначально выделенного
        размера. Для правильной поддержки как старых, так и новых драйве-
        ров  EMS, конструктор Init потока EMS берет два параметра, описы-
        вающие  минимальный  и  максимальный начальный размер выделенного
        блока  памяти  EMS.  Init всегда выделяет по крайней мере MinSize
        байт.

             - Если номер версии драйвера EMS больше или  равен  4.0,  то
        Init  выделяет только MinSize байт памяти EMS,  а затем расширяет
        блок,  как этого потребуют последующие  вызовы  TEmsStream.Write,
        игнорируя параметр MaxSize.

             - Если номер версии драйвера EMS меньше 4.0, то Init выделя-
        ет так много расширенной памяти,  как можно,  вплоть  до  MaxSize
        байт,  а  при  попытке  расширить блок с помощью TEmsStream.Write
        возвращает ошибку.

             Done
                  destructor Done; virtual;

             Переопределяемость: не переопределяется.

             Освобождает поток EMS и используемые EMS страницы.

             См. также: TEmsStream.Init

             GetPos
                  function GetPos: Longint; virtual;

             Переопределяемость: не переопределяется.

             Возвращает  значение  текущей позиции в потоке. Первая пози-
        ция- 0.

             См. также: TEmsStream.Seek

             GetSize
                  function GetSize: Longint; virtual;

             Переопределяемость: не переопределяется.

             Возвращает размер потока в байтах.

             Read
                  procedure Read(var Buf; Count: Word); virtual;

             Переопределяемость: не переопределяется.

             Читает  из  потока Count байт в буфер Buf, начиная с текущей
        позиции в потоке.

             См. также: TEmsStream.Write, stReadError

             Seek
                  procedure Seek(Pos: Longint); virtual;

             Переопределяемость: не переопределяется.

             Устанавливает  текущую  позицию в Pos байт от начала потока.
        Начало потока- 0.

             См. также: TEmsStream.GetPos, TEmsStream.GetSize

             Truncate
                  procedure Truncate; virtual;

             Переопределяемость: не переопределяется.

             Удаляет  все  данные из потока, начиная с текущей позиции до
        конца потока. Текущая позиция устанавливается равной новому концу
        потока.

             См. также: TDosStream.GetPos, TDosStream.Seek

             Write
                  procedure Write(var Buf; Count: Word); virtual;

             Переопределяемость: никогда не переопределяется.

             Записывает Count байт из буфера Buf в поток, начиная с теку-
        щей позиции.

             См. также: TStream.Read, TEmsStream.GetPos, TEmsStream.Seek

*-      Тип TEvent                                             Drivers
        -----------------------------------------------------------------

             Описание:  TEvent = record
                           What: Word;
                          case Word of
                            evNothing: ();
                            evMouse: (
                              Buttons: Byte;
                              Double: Boolean;
                              Where: TPoint);
                            evKeyDown: (
                              case Integer of
                                O: (KeyCode: Word);
                                1: (CharCode: Byte);
                            evMessage: (
                              Command: Word;
                              case Word of
                                0: (InfoPtr: Pointer);
                                1: (InfoLong: Longint);
                                2: (InfoWord: Word);
                                3: (InfoInt: Integer);
                                4: (InfoByte: Byte);
                                5: (InfoChar: Char);
                      end;

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

             См.  также: evXXXX, методы HandleEvent, GetKeyEvent,
        GetMouseEvent

*-      Объект TFileCollection                                 StdDlg
        -----------------------------------------------------------------

             TFileCollection  представляет  собой  отсортированный  набор
        записей типа TSearchRec. Диалоговые окна файлов используют объек-
        ты  TFileCollection для получения списков файлов, отсортированных
        в алфавитном порядке.

             Подробности  о полях TFileCollection и его методах приведены
        в оперативной подсказке.

*-      Объект TFileDialog                                     StdDlg
        -----------------------------------------------------------------

             TFileDialog  представляет  собой стандартное диалоговое окно
        ввода файлов.

*-                                     Поля
        -----------------------------------------------------------------

             Directory
                  Directory: PString;

             Directory указывает на строку, содержащую имя текущего ката-
        лога.

             FileList
                  FileList: PFileList;

             FileList  указывает  на  объект  списка  файлов в диалоговом
        окне.

             FileName
                  FileName: PFileInputLine;

             FileName  указывает  на  объект  строки  ввода имени файла в
        диалоговом окне.

             См. также: объект TFileInputLine

             WildCard
                  WildCard: TWildStr;

             WildCard хранит текущие диск, путь и имя файла.

*-                                    Методы
        -----------------------------------------------------------------

              Init
                  constructor Init (AWildCard: TWildStr;
                                      const ATitle, InputName: String;
                                      AOptions: Word; HistoryId: Byte);

             Создает  диалоговое  окно  файлов  с  заголовком, заданным в
        ATitle,  вызывая  конструктор  Init,  унаследованный  от TDialog.
        Инициализирует  поле WildCard значением AWildCard. Создает объект
        строки ввода файлов и присваивает его полю FileName, устанавливая
        начальное значение FileName равным WildCard. Создает объект метки
        с  использованием строки, переданной в InputName, и связывает его
        с FileName.

             Создает  объект списка файлов со связанной меткой 'Files', а
        также вертикальную полосу прокрутки.

             В  зависимости  от значений, переданных в битовых параметрах
        AOptions, Init конструирует и вставляет кнопки Ok, Open, Replace,
        Clear и Help. Существует также кнопка Cancel. Если AOptions вклю-
        чает fdNoLoadDir, то диалоговое окно не загружает в список файлов
        содержимое текущего каталога.  Используйте fdNoLoadDir в том слу-
        чае,  когда Вы хотите сохранить диалоговое окно в  потоке,  чтобы
        вместе  с  диалоговым  окном не записывать в поток все содержимое
        каталога.

             Объект панели информации о файлах конструируется и вставляе-
        тся в нижней части диалогового окна.

             См. также: TWindow.Init, константы fdXXXX

             Load
                  constructor Load (var S: TStream);

             Создает  и загружает объект TFileDialog из потока S, вызывая
        сначала  конструктор  Load,  унаследованный  от  TDialog, а затем
        считывая  поля,  введенные  TEditWindow,  и  информацию о текущем
        каталоге.

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

             Done
                  destructor Done; virtual;

             Освобождает память от объекта диалогового окна файлов, осво-
        бождая сначала строку Directory, а затем вызывая деструктор Done,
        унаследованный от TDialog.

             GetData
                  function GetData (var: Rec); virtual;

             Считывает  строку  из  Rec, преобразует ее к типу PathStr, и
        расширяет ее до полного имени файла, вызывая GetFileName.

             См. также: TFileDialog.GetFileName

             GetFileName
                  procedure GetFileName (var S: PathStr); virtual;

             Расширяет  имя  выбранного в настоящий момент файла в полное
        имя,  включающее имя дисковода, путь и имя файла, и сохраняет его
        в S.

             HandleEvent
                  procedure HandleEvent (var Event: TEvent); virtual;

             Обрабатывает  большую  часть событий, вызывая метод HandleE-
        vent,  унаследованный  от  TDialog,  а  затем обрабатывая команды
        cmFileOpen,  cmFileReplace и cmFileClear вызовом EndModal с конс-
        тантой  команды в качестве параметра, возвращая тем самым команду
        отображаемому элементу, вызвавшему диалоговое окно файлов.

             См. также: TDialog.HandleEvent, TGroupEndModal

             SetData
                  procedure SetData (var Rec); virtual;

             Вызывает метод SetData, унаследованный от TDialog, для того,
        чтобы  обеспечить всем отображаемым элементам возможность считать
        данные  из  Rec,  а  после  этого в случае, если оставшиеся в Rec
        данные представляют собой имя файла, проверяет допустимость этого
        имени, вызывая Valid, и делая FileName выбранным подэлементом.

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

             Store
                  procedure Store (var S: TStream);

             Записывает объект диалогового окна файлов в поток S, вызывая
        сначала метод Store, унаследованный от TDialog, а затем записывая
        поля, введенные TFileDialog.

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

             Valid
                  function Valid (Command: Word): Boolean; virtual;

             Возвращает  True  в  случае, если Command равно cmValid, что
        указывает  на успешное создание объекта. Для всех других значений
        Command,  Valid вызывает сначала функцию Valid, унаследованную от
        TDialog.  Если  TDialog.Valid возвращает True, то Valid проверяет
        текущую строку FileName на предмет допустимости имени файла. Если
        имя файла является допустимым, то Valid возвращает значение True;
        в  противном случае она выдает окно сообщений "Invalid file name"
        и возвращает False.

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

*-      TFileEditor                                            Editors
        -----------------------------------------------------------------

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

*-                                     Поле
        -----------------------------------------------------------------

             FileName: FNameStr;

             FileName представляет собой имя редактируемого файла.

*-                                    Методы
        -----------------------------------------------------------------

              Init
                  constructor Init (var Bounds: TRect;
                                 AHScrollBar, AVScrollBar: PScrollBar;
                                 AIndicator: PIndicator;
                                 AFileName: FNameStr);

             Создает  объект редактора, вызывая сначала конструктор Init,
        унаследованный  от TEditor, передавая параметры Bounds, AHScroll-
        Bar,  AVScrollBar и AIndicator с размером буфера, равным 0, после
        чего  расширяет AFileName до полного имени файла и загружает файл
        с помощью LoadFile.

             См. также: TEditor.Init, TFileEditor.LoadFile

             Load
                  constructor Load (var S: TStream);

             Создает  и  загружает  объект  редактора файлов из потока S,
        вызывая  сначала  конструктор  Load, унаследованный от TEditor, а
        затем  считывая имя файла. Если имя файла является допустимым, то
        Load загружает файл в буфер с помощью LoadFile.

             См. также: TEditor.Load

             DoneBuffer
                  destructor DoneBuffer; virtual;

             Если    буфер  не   равен  nil,   то  DoneBuffer    вызывает
        DisposeBuffer для освобождения буфера.

             См. также: процедуру DisposeBuffer

             HandleEvent
                  procedure HandleEvent (var Event: TEvent); virtual;

             Обрабатывает  события  для редактора файлов, вызывая сначала
        метод HandleEvent, унаследованный от TEditor, а затем обрабатывая
        события команд для сохранения редактируемого файла.

             См. также: TEditor.HandleEvent

             InitBuffer
                  procedure InitBuffer; virtual;

             Выделяет  в динамически распределяемой памяти буфер для фай-
        ла, вызывая NewBuffer.

             См. также: процедуру NewBuffer

             LoadFile
                  function LoadFile: Boolean;

             Возвращает True в случае, если файл не существует (это озна-
        чает,  что  пользователь  редактирует  новый файл) или он успешно
        загружен; в противном случае возвращает False. Считывает текст из
        файла  с  именем  FileName  в  буфер редактирования, устанавливая
        длину буфера равной размеру прочитанного файла.

             Save
                  function Save: Boolean;

             Сохраняет  содержимое буфера редактирования на диск, вызывая
        SaveAs  в  случае,  если  файл не имеет имени, или SaveFile, если
        файл уже имеет имя.

             См. также: TFileEditor.Save, TFileEditor.SaveFile

             SaveAs
                  function SaveAs: Boolean

             Вызывает EditorDialog доля вызова диалогового окна получения
        имени  файла для редактируемого текста. Если пользователь не зак-
        роет  диалоговое  окно,  то  SaveAs изменит заголовок диалогового
        окна, чтобы он отражал новое имя файла, а затем вызывает SaveFile
        для  сохранения  содержимого  буфера. SaveAs возвращает значение,
        возвращенное SaveFile.

             См. также: процедуру EditorDialog, TFileEditor.SaveFile

             SaveFile
                  function SaveFile: Boolean;

             Если  EditorFlag  содержит  бит  efBackupFiles,  то SaveFile
        переименовывает  первоначальный  файл  в  файл  с тем же именем и
        расширением.BAK.  Записывает  содержимое  буфера редактирования в
        файл  с  именем  FileName и устанавливает значение флага Modified
        равным  False.  Возвращает  True в случае, если сохранение прошло
        удачно, в противном случае возвращает False после выдачи соответ-
        ствующего диалогового окна, объясняющего причину неудачи.

             SetBufSize
                  function SetBufSize (NewSize: Word): Boolean; virtual;

             Увеличивает  или  уменьшает  размер буфера редактирования на
        величину, кратную 4K, при необходимости настраивая GapLen.

             Store
                  procedure Store (var S: TStream);

             Записывает объект редактора в поток S, вызывая сначала метод
        Store,  унаследованный  от TEditor, а затем записывая имя файла и
        выбранные смещения текста.

             UpdateCommands
                  procedure UpdateCommands; virtual;

             Вызывает  метод UpdateCommands, унаследованный от TEditor, а
        затем  делает  доступными  команды cmSave и cmSaveAs, относящиеся
        только к редактору фалов.

             Valid
                  function Valid (Command: Word): Boolean; virtual;

             Если  cmCommand  равно  cmValid,  то  возвращается  значение
        IsValid,  которое  равно False лишь  в том случае,  если редактор
        файлов  не   смог  создать  буфер  или  считать файл. В противном
        случае Valid проверяет  значение   поля  Modified  для   проверки
        того,  нужно  ли  сохранить   измененный   файл  перед  закрытием
        буфера. Если значение Modified   равно  True,  то  Valid вызывает
        диалоговое  окно,  дающее  пользователю   возможность   сохранить
        изменения. Если пользователь закрывает диалоговое окно,  то Valid
        возвращает False,  оставляя редактор открытым; в противном случае
        буфер либо сохраняется,  либо его содержимое теряется,  в зависи-
        мости от выбора пользователя, и Valid возвращает True.

*-      TFileInfoPane                                          StdDlg
        -----------------------------------------------------------------

             TFileInfoPane  представляет  панель  с  информацией о файле,
        отображаемый элемент, отражающий информацию о выбранном в настоя-
        щий момент файле в списке файлов TFileDialog.

             Подробности  о полях TFileInfoPane и его методах приведены в
        оперативной подсказке.

*-      TFileInputLine                                         StdDlg
        -----------------------------------------------------------------

             TFileInputLine  представляет собой специальную строку ввода,
        используемую  TFileDialog,  которая  обновляет  свое содержимое в
        ответ  на  команду  cmFileFocused от TFileList. Строки ввода имен
        файлов  позволяют редактировать имена файлов, которые могут вклю-
        чать пути и метасимволы.

             Подробности о полях TFileInputLine и его методах приведены в
        оперативной подсказке.

*-      TFileList                                              StdDlg
        -----------------------------------------------------------------

             TFileList  представляет  собой  отсортированное окно-список,
        которое  предполагает,  что  оно   содержит  в  качестве   набора
        TFileCollection.  При  выборе  имени  файла  объект  списка файла
        выдает  сообщение   cmFileFocused,   которое   извещает   объекты
        TFileInputLine и TFileInfoPane о том, что им необходимо  обновить
        свое  содержимое  в  соответствии  с  вновь  выбранным файлом. По
        умолчанию список файлов является   окном-списком в две колонки  с
        необязательной горизонтальной полосой прокрутки под ним.

             Подробности  о  полях  TFileList  и  его методах приведены в
        оперативной подсказке.

*-      TFilterValidator                                       Validate
        -----------------------------------------------------------------

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

*-                                     Поле
        -----------------------------------------------------------------

             ValidChars
                  ValidChars: TCharSet;

             Содержит  набор  всех  символов,  которые пользователь может
        печатать.  Например,  для разрешения ввода только цифр необходимо
        установить ValidChars равным ['0'..'9']. ValidChars устанавливае-
        тся  равным  параметру  AValidChars,  передаваемому  конструктору
        Init.

*-                                    Методы
        -----------------------------------------------------------------

              Init
                  constructor Init (AValidChars: TCharSet);

             Создает  объект  фильтра  определителя  допустимости  ввода,
        вызывая сначала конструктор Init, унаследованный от TValidator, а
        затем устанавливая ValidChars равным AValidChars.

             Load
                  constructor Load (var S: TStream);

             Создает и загружает объект фильтра определителя допустимости
        ввода из потока S, вызывая сначала конструктор Load, унаследован-
        ный  от TValidator, а затем считывая набор допустимых символов из
        ValidChars.

             См. также: TValidator.Load

             Error
                  procedure Error; virtual;

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

             IsValid
                  function IsValid (const S: string): Boolean; virtual;

             Возвращает  True в случае, если все символы в S содержатся в
        списке  допустимых символов ValidChar; в противном случае возвра-
        щает False.

             IsValidInput
                  function IsValidInput (var S: string;
                            SuppressFill: Boolean): Boolean; virtual;

             Проверяет каждый символ в строке S на предмет его нахождения
        в списке допустимых символов ValidChar. Возвращает True в случае,
        если  все  символы  из S являются допустимыми; в противном случае
        возвращает False.

             Store
                  procedure Store (var S: TStream);

             Сохраняет  объект  фильтра определителя допустимости ввода в
        потоке S, записывая ValidChars.

*-      Тип TFindDialogRec                                     Editors
        -----------------------------------------------------------------

             Описание
                  TFindDialogRec = record
                       Find: String [80];
                       Options: Word;
                  end;

             Функция:   Диалоговые   окна   поиска   текста,   вызываемые
        EditorDialog  при   передаче edFind, получают в  качестве второго
        параметра  указатель   на  TFindDialogRec.  Find  содержит строку
        поиска,  заданную   по  умолчанию.  Options  содержит   некоторые
        комбинации констант  флагов   редактора   efXXXX, описывающих то,
        как должен приводиться поиск.

             См. также: тип TEditorDialog

*-      TFrame                                                   Views
        -----------------------------------------------------------------

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

*-                                    Методы
        -----------------------------------------------------------------

             Init
                  constructor Init(var Bounds: TRect);

             Вызывает  конструктор Init, унаследованный от TView, а затем
        устанавливает GrowMode равным gfGrowHiX + gfGrowHiY,  а EventMask
        равным EventMask or evBroadcast,  так, чтобы объекты TFrame обра-
        батывали сообщения-уведомления по умолчанию.

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

             Draw
                  procedure Draw; virtual;

             Переопределяемость: используется редко.

             Рисует рамку с цветовыми атрибутами и пиктограммами, соотве-
        тствующими текущим значениям флагов State (активный, неактивный и
        перемещаемый).  Добавляет  пиктограммы  распахивания,  закрытия и
        изменения размера в зависимости от значений Flags окна-владельца.
        Добавляет  заголовок  из поля Title окна-владельца,  если таковое
        существует.  Активные окна рисуются с двойной рамкой и пиктограм-
        мами, а неактивные окна с одинарной рамкой и без пиктограмм.

             См. также: константы флагов состояния sfXXXX, константы фла-
        гов окна wfXХXX

             GetPalette
                  function GetPalette: Palette; virtual;

             Переопределяемость: используется редко.

             Возвращает  указатель  на  палитру  рамки,  установленную по
        умолчанию, CFrame.

             HandleEvent
                  procedure HandleEvent(var Event: TEvent); virtual;

             Переопределяемость: переопределяется редко.

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

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

             SetState
                  procedure SetState (AState: Word;
                                           Enable: Boolean); virtual;

             Переопределяемость: переопределяется редко.

             Вызывает TView.SetState,  затем,  если  новое  состояние   -
        sfActive  или  sfDragging,  то  вызывает DrawView для перерисовки
        отображаемого элемента.

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

*-                                   Палитра
        -----------------------------------------------------------------

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

                       1   2   3   4   5
                     ЙНННСНННСНННСНННСННН»
           CFrame    є  1і  1і 1 і 2 і 3 є
                     ИНСНПНСНПНСНПНСНПНСНј
                       і   і   і   і   і
           Пассивная ДДЩ   і   і   і   АДДДДДД Пиктограммы
           рамка           і   і   і
           Пассивный ДДДДДДЩ   і   АДДДДДДДДДД Активный заголовок
           заголовок           і
           Активная  ДДДДДДДДДДЩ
           рамка

*-      TGroup                                                   Views
        -----------------------------------------------------------------

             Объекты  TGroup  и порожденные ими (которые мы для краткости
        называем  группами)  являются  основной  управляющей  силой Turbo
        Vision.  Группа  представляет собой специальные тип отображаемого
        элемента.  В  дополнение  ко всем полям и методам, порожденным от
        TView,  группа  имеет  добавочные  поля  и методы (включая многие
        переопределения),  позволяющие  управлять  динамически связанными
        списками  отображаемых элементов (включая другие группы) как если
        бы они были одним объектом. Мы часто говорим о подэлементах груп-
        пы, даже если эти подэлементы сами являются группами.

             Хотя  группа  имеет  прямоугольную  границу от своего предка
        TView, группа видима только посредством отображения своих подэле-
        ментов. Группа отображает себя через методы Draw своих подэлемен-
        тов.  Группа  владеет  своими  подэлементами, и вместе они должны
        обеспечивать  зарисовку (заполнение) всего прямоугольника группы,
        определенного  в  Bounds.  Во  время работы программы подэлементы
        создаются,  вставляются в группы и отображаются в результате дея-
        тельности  пользователя и событий, генерируемых программой. Подэ-
        лементы могут быть легко скрыты, а также удалены из группы дейст-
        виями пользователя (такими, как закрытие окна или выход из диало-
        гового окна).

             Три  порожденных  от TGroup типа объектов, а именно TWindow,
        TDeskTop и TApplication (посредством TProgram) иллюстрируют  кон-
        цепцию группы и подгруппы.  TApplication обычно владеет объектами
        оперативной области  TDeskTop,  строки  состояния  TStatusLine  и
        отображаемого  элемента  меню  TMenuView.  TDeskTop  порожден  от
        TGroup и таким образом,  может владеть объектами TWindow, которые
        в свою очередь владеют объектами TFrame, TScrollBar и т.д.

             Объекты  TGroup передают рисование и обработку событий своим
        подэлементам, как это объясняется в Главе 8 "Отображаемые элемен-
        ты" и 9 "Программирование, обусловленное событиями".

             Многие  из  основных методов TView переопределяются в TGroup
        естественным  образом.  Например,  сохранение  и чтение группы из
        потока   может  быть  достигнуто  одним  вызовом  TGroup.Store  и
        TGroup.Load,   которые   в  свою  очередь  итеративно сохраняют и
        загружают подэлементы группы.

             Объекты TGroup обычно не имеют экземпляров; Вы будете созда-
        вать    экземпляры  типов   объектов,  порожденных   от   TGroup:
        TApplication, TDeskTop и TWindow.

*-                                     Поля
        -----------------------------------------------------------------

             Buffer                                   (только для чтения)
                  Buffer: PVideoBuf;

             Указывает  на  буфер,  используемый  для  кэширования образа
        экрана  группы,  или  равен nil, если группа не имеет кэш-буфера.
        Кэш-буфера  создаются  и  уничтожаются  автоматически,  если флаг
        ofBuffered в поле Options не сброшен.

             См. также: TGroup.Draw, TGroup.Lock, TGroup.Unlock

             Current                                   (только для чтения)
                  Current: PView;

             Указывает  на  выбранный  в  настоящий момент подэлемент или
        равен nil, если нет выбранного отображаемого подэлемента.

             См. также: sfSelected, TView.Select

             Last                                     (только для чтения)
                  Last : PView;

             Указывает  на  последний подэлемент группы (самый дальний от
        вершины  в циклическом порядке). Поле Next последнего подэлемента
        указывает  на  первый подэлемент, поле Next которого указывает на
        следующий подэлемент и т.д., формируя циклический список.

             Phase                                    (только для чтения)
                  Phase: (phFocused, phPreProcess, phPostProcess);

             Текущая фаза обработки для активного события. Подэлементы, в
        которых  установлены флаги ofPreProcess и/или ofPostProcess могут
        проверять  значение  Owner^.Phase,  чтобы  определить, в какой из
        фаз:  phPreProcess,  phFocused  или  phPostProcess  был вызван их
        HandleEvent.

             См. также: ofPreProcess, ofPostProcess, TGroup.HandleEvent

*-                                    Методы
        -----------------------------------------------------------------

             Метод Init
                  constructor Init(var Bounds: TRect);

             Создает объект группы с заданными границами, вызывая сначала
        метод  Init,  унаследованный  от  TView,  а  затем устанавливая в
        Options   флаги   ofSelectable   и  ofBuffered,  и  устанавливает
        EventMask равным $FFFF.

             См. также: TView.Init, TGroup.Load

*-          Load
                  constructor Load(var S: TStream);

             Загружает  всю группу из потока, вызывая сначала метод Load,
        унаследованный  от TView, а затем используя S.Get для чтения каж-
        дого  подэлемента.  После  загрузки  всех  подэлементов выполняет
        проход  по подэлементам для установки всех считанных указателей с
        использованием GetPeerViewPtr.

             Если  тип  объекта,  порожденного  от TGroup, содержит поля,
        которые  указывают  на  подэлементы,  то для чтения этих полей он
        должен использовать GetSubViewPtr внутри Load.

             Если  указатель  на  владельца  равен nil, то после загрузки
        всех подэлементов загружается Awaken.

             См. также:  TView.Load, TGroup.Store,  TGroup.GetSubViewPtr,
        TStream.Get

*-          Done
                  destructor Done; virtual;

             Переопределяемость: часто переопределяется.

             Скрывает  группу,  используя  метод Hide, освобождает каждый
        элемент  группы, и наконец вызывает деструктор Done, унаследован-
        ный от TView.

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

*-          Awaken
                  procedure Awaken; virtual;

             Вызывает  методы Awaken для каждого из подэлементов группы в
        циклическом порядке.

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

*-          ChangeBounds
                  procedure ChangeBounds(var Bounds: Trect); virtual;

             Переопределяемость: не переопределяется.

             Изменяет  границы группы в соответствии со значением Bounds,
        а  затем  вызывает CalcBounds и ChangeBounds для каждого элемента
        группы.

             См. также: TView.CalcBounds, TView.ChangeBounds

*-          DataSize
                  function DataSize: Word; virtual;

             Переопределяемость: переопределяется редко.

             Возвращает  общий  размер   группы,  вызывая  и   накапливая
        DataSize для каждого подэлемента.

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

*-          Delete
                  procedure Delete(P: PView);

             Удаляет подэлемент P из группы и перерисовывает другие подэ-
        лементы, если это необходимо. Поля Owner и Next в Р устанавливаю-
        тся  равными nil. Delete, однако, не освобождает память, выделен-
        ную под P.

             См. также: TGroup.Insert

*-          Draw
                  procedure Draw; virtual;

             Переопределяемость: не переопределяется.

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

             См. также: TGroup.Buffer, TGroup.Redraw

*-          EndModal
                  procedure EndModal(Command: Word); virtual;

             Переопределяемость: никогда не переопределяется.

             Если группа - это текущий режимный отображаемый элемент,  то
        его режимное состояние завершается. Command передается в ExecView
        (который сделал данный отображаемый элемент режимным),  который в
        свою  очередь возвращает Command в качестве результата.  Если эта
        группа не является текущим режимный отображаемый элемент,  то она
        вызывает метод EndModal, унаследованный от TView.

             См. также: TGroup.ExecView, TGroup.Execute

*-          EventError
                  procedure EventError(var Event: TEvent); virtual;

             Переопределяемость: иногда переопределяется.

             EventError  вызывается каждый раз, когда в цикле обработчика
        событий  встречается  событие,  которое  он  не может обработать.
        Действие  по  умолчанию:  Если  Owner  группы  не  равен  nil, то
        EventError  вызывает  EventError   своего  владельца. Обычно  эта
        цепочка  возвращается  назад  к  EventError  из  TApplication. Вы
        можете переопределить EventErrоr, для выполнения требуемого дейс-
        твия.

             См. также: TGroup.Execute, TGroup.ExecView, sfModal

*-          ExecView
                  function ExecView(P: PView): Word;

             ExecView представляет  собой режимный вариант нережимных ме-
        тодов Insert и Delete. В отличие от Insert, после вставки отобра-
        жаемого  элемента  в  группу ExecView ожидает,  пока отображаемый
        элемент будет выполнен,  а затем удаляет его и возвращает резуль-
        тат выполнения. ExecView используется в ряде мест в Turbo Vision,
        например      для       реализации       TApplication.Run       и
        TProgram.ExecuteDialog.

             ExecView  сохраняет текущий контекст (выбранный отображаемый
        элемент, режимный отображаемый элемент и набор команд),  делает Р
        режимным, вызывая Р^.SetState(sfModal, True), вставляет Р в груп-
        пу (если  он  еще  не  вставлен)  и  вызывает  P^.Execute.  Когда
        P^.Execute возвращает управление, группа восстанавливается в пре-
        дыдущее состояние и результат P^.Execute возвращается как резуль-
        тат вызова ExecView.  Если P равно nil,  то ExecView возвращается
        значение cmCancel.

             См. также: TGroup.Execute, sfModal

*-          Execute
                  function Execute: Word; virtual;

             Переопределяемость: используется редко.

             Execute  представляет  собой основной цикл обработки событий
        группы.  Она  постоянно  получает  события, используя GetEvent, и
        обрабатывает  их, используя HandleEvent. Цикл событий завершается
        группой  или подэлементом с помощью вызова EndModal. Перед завер-
        шением работы, однако, Exec вызывает Valid для проверки того, что
        режимное состояние в самом деле может быть завершено.

             Реализация   TGroup.Execute  показана  ниже.  Заметим,   что
        EndState-    это    поле    типа    private  в   TGroup,  которое
        устанавливается вызовом EndModal.

                 function TGroup.Execute: Word;
                 var
                   E: TEvent;
                 begin
                   repeat
                     EndState := 0;
                     repeat
                       GetEvent(E);
                       HandleEvent(E);
                       if E.What <> evNothing then EventError(E);
                     until EndState <> 0;
                   until Valid(EndState);
                   Execute := EndState;
                 end;

             См. также:        TGroup.GetEvent,       TGroup.HandleEvent,
        TGroup.EndModal, TGroup.Valid

*-          First
                  function First: PView;

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

             См. также: TGroup.Last

*-          FirstThat
                  function FirstThat(P: Pointer): PView;

             FirstThat  применяет  булеву функцию, заданную указателем на
        функцию  P,  к  каждому  подэлементу в циклическом порядке до тех
        пор, пока P не вернет True.  Результат - указатель на подэлемент,
        для которого P возвращает True, или nil, если функция P возвраща-
        ет  False для всех подэлементов.  P должен указывать на локальную
        функцию типа far, использующую параметр типа Pointer, и возвраща-
        ющую значение типа Boolean. Например:

                 function MyTestFunc(P: PView): Boolean; far;

              Метод  SubViewAt,  показанный ниже, возвращает указатель на
        первый подэлемент, содержащий данную точку.

                 function TMyGroup.SubViewAt(Where: TPoint): PView;

                   function ContainsPoint(P: PView): Boolean; far;
                   var
                     Bounds: TRect;
                   begin
                     P^.GetBounds(Bounds);
                     ContainsPoint := (P^.State and sfVisible <> 0) and
                       Bounds.Contains(Where);
                   end;

                 begin
                   SubViewAt := FirstThat(@ContainsPoint);
                 end;

             См. также: TGroup.ForEach

*-          FocusNext
                  function FocusNext (Forwards: Boolean): Boolean;

             Если  Forwards равно True, то FocusNext передает фокус ввода
        следующему подэлементу, который можно выбрать (у которого устано-
        влен  бит  ofSelectable),  в  циклическом  порядке. Если Forwards
        равно  False,  то  метод  передает фокус предыдущему подэлементу,
        который  может  быть  выбран.  В случае успеха возвращает True; в
        противном случае возвращает False.

             Если  у отображаемого элемента установлен бит ofValidate, то
        она  вызывает  Valid (cmReleaseFocus) для определения того, может
        ли  фокус  быть отобран. Если Valid возвращает значение False, то
        отображаемый  элемент оставляет фокус у себя, и FocusNext возвра-
        щает False.

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

*-          ForEach
                  procedure ForEach (P: Pointer);

             ForEach применяет действие, заданное указателем на процедуру
        P, к каждому подэлементу группы в циклическом порядке. Параметр P
        должен  указывать  на локальную процедуру типа far, имеющую пара-
        метр типа Pointer, например:

                 procedure MyActionProc(P: PView); far;

             Метод  MoveSubViews  перемещает  все  подэлементы  группы на
        величину,  заданную  в  Delta. Обратите внимание на использование
        Lock и UnLock для ограничения числа выполняемых операций по пере-
        рисовке для предотвращения неприятного мерцания.

                 procedure TMyGroup.MoveSubViews(Delta: TPoint);

                 procedure DoMoveView(P: PView); far;
                 begin
                 P^.MoveTo(P^.Origin.X + Delta.X, P^.Origin.Y + Delta.Y);
                 end;

                 begin
                   Lock;
                   ForEach(@DoMoveView);
                   UnLock;
                 end;

             См. также: TGroup.FirstThat

*-         GetData
                  procedure GetData(var Rec); virtual;

             Переопределяемость: используется редко.

             Вызывает GetData для каждого подэлемента в обратном цикличе-
        ском,  увеличивая положение, заданное в Rec, на DataSize для каж-
        дого подэлемента.

             См. также: TView.GetData, TGroup.SetData

*-          GetHelpCtx
                  function GetHelpCtx: Word; virtual;

             Переопределяемость: переопределяется редко.

             Возвращает  контекст  подсказки  для  выбранного в настоящий
        момент  отображаемого элемента, вызывая метод GetHelpCtx выделен-
        ного подэлемента. Если ни один из отображаемых элементов не имеет
        контекста  подсказки, то GetHelpCtx возвращает значение собствен-
        ного поля HelpCtx.

*-          GetSubViewPtr
                  procedure GetSubViewPtr(var S: TStream; var P);

             Загружает указатель   на   подэлемент   Р   из   потока   S.
        GetSubViewPtr должна использоваться  только  внутри  конструктора
        Load, для чтения значений указателей, которые были записаны вызо-
        вом PutSubViewPtr из метода Store.

             См. также: TView.PutSubViewPtr, TGroup.Load, TGroup.Store

*-          HandleEvent
                  procedure HandleEvent(var Event: TEvent); virtual;

             Переопределяемость: часто используется.

             Группа    обрабатывает    события,  передавая   их   методам
        HandleEvent одного или более подэлементов. Однако  действительный
        маршрут зависит от класса события:

             - для активных событий (по умолчанию evKeyDown и  evCommand,
        см. переменную FocusedEvents) обработка событий выполняется в три
        фазы:

                - предварительная обработка. Поле Phase группы устанавли-
                  вается равным phPreProcess,  и событие передается мето-
                  дам HandleEvent всех подэлементов, у которых установлен
                  флаг ofPreProcess;

                - основная   обработка.   Phase   устанавливается  равным
                  phFocused,  и событие передается HandleEvent отображае-
                  мого элемента, выбранного в настоящий момент;

                - фаза  после  обработки.  Phase  устанавливается  равным
                  phPostProcess, и событие передается методам HandleEvent
                  всех   подэлементов,   для   которых   установлен  флаг
                  ofPostProcess;

             - для позиционированных событий (по умолчанию  evMouse,  см.
        переменную  PositionalEvents),  событие  передается в HandleEvent
        первого подэлемента (в циклическом порядке),  ограничивающий пря-
        моугольник которого содержит точку в Event.Where.

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

             Примечание:  Если поле EventMask подэлемента маскирует класс
        события,  то TGroup.HandleEvent никогда не будет посылать события
        этого  класса  подэлементу.  Например,  по умолчанию EventMask из
        TView  запрещает  evMouseUp,  evMouseMove  и evMouseAuto, поэтому
        TGroup.HandleEvent  никогда не будет посылать такие события стан-
        дартному TView.

             См. также:  FocusedEvents, PositionalEvents, константы собы-
        тий evXXXX, методы TView.EventMask, HandleEvent

*-          Insert
                  procedure Insert(P: PView);

             Вставляет  отображаемый  элемент,  заданный  указателем Р, в
        список  подэлементов  группы.  Новый  подэлемент помещается перед
        всеми  другими  отображаемыми  подэлементами.  Если в подэлементе
        установлены  флаги  ofCenterX или ofCenterY, то он центрируется в
        группе  по  соответствующей  оси. Если отображаемый элемент имеет
        установленный  флаг  sfVisible,  то  он будет показан в группе; в
        противном  случае он остается невидимым до тех пор, пока не будет
        показан специально. Если отображаемый элемент имеет установленным
        флаг  ofSelectable, то он становится текущим выбранным подэлемен-
        том.

             См. также: TGroup.Delete, TGroup.ExecView

*-          InsertBefore
                  procedure InsertBefore(P, Target: PView);

             Вставляет  отображаемый элемент Р перед отображаемым элемен-
        том,  заданным Target. Если Target имеет значение nil, то отобра-
        жаемый элемент размещается после всех других отображаемых элемен-
        тов группы.

             См. также: TGroup.Insert, TGroup.Delete

*-          Lock
                  procedure Lock;

             Блокирует  группу, задерживая все записи, производимые подэ-
        лементами на экран до тех пор, пока группа не будет разблокирова-
        на.  Lock не имеет действия, если группа не имеет кэш-буфера (см.
        ofBuffered  и  TGroup.Buffer).  Lock работает, увеличивая счетчик
        блокировок,  который соответственно уменьшается с помощью UnLock.
        Когда  вызов UnLock уменьшает счетчик до 0, вся группа пишется на
        экран, используя образ, созданный в кэш-буфере.

             Накапливая частые операции перерисовки между вызовами Lock и
        UnLock,  можно  сократить или полностью избавиться от неприятного
        мерцания экрана. Например, TDeskTop.Tile и TDeskTop.Cascade испо-
        льзуют Lock и UnLock для уменьшения мерцания.

             Примечание:  Количества  вызовов  Lock  и UnLock должны быть
        равны,  иначе  группа  может остаться в постоянно заблокированном
        состоянии,  что  приведет к тому, что она не сможет быть выведена
        на экран, когда это понадобится.

             См. также: TGroup.Unlock

*-          PutSubViewPtr
                  procedure PutSubViewPtr(var S: TStream; P: PView);

             Сохраняет указатель   подэлемента   Р   в  потоке  S.  Метод
        PutSubViewPtr должен использоваться только  внутри  метода  Store
        для записи значений указателей,  которые позже будут читаться вы-
        зовами GetSubViewPtr в конструкторе Load.

             См. также: TGroup.GetSubViewPtr, TGroup.Store, TGroup.Load

*-          Redraw
                  procedure Redraw;

             Перерисовывает  подэлементы  группы  в  циклическом порядке.
        TGroup.Redraw  отличается  от  TGroup.Draw  тем,  что перерисовка
        никогда не производится выводом из кэш-буфера.

             См. также: TGroup.Draw

*-          SelectNext
                  procedure SelectNext(Forwards: Boolean);

             Если  Forwards равно True, то SelectNext будет выбирать (де-
        лать  текущим)  следующий  выбираемый  подэлемент  (подэлемент, у
        которого установлен бит ofSelectable) группы в циклическом поряд-
        ке. Если Forwards равно False, то метод выбирает предыдущий выби-
        раемый подэлемент.

             Внимание!  SelectNext игнорирует допустимость и всегда выби-
        рает следующий подэлемент. При необходимости контролировать допу-
        стимость выбора при изменении фокуса, вместо SelectNext необходи-
        мо использовать FocusNext.

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

*-          SetData
                  procedure  SetData(var Rec); virtual;

             Переопределяемость: используется редко.

             Вызывает SetData для каждого подэлемента в обратном цикличе-
        ском  порядке,  увеличивая положение, заданное в Rec из DataSize,
        для каждого подэлемента.

             См. также: TGroup.GetData, TView.SetData

*-          SetState
                  procedure SetState(AState: Word;
                                           Enable: Boolean); virtual;

             Переопределяемость: переопределяется редко.

             Сначала  вызывает  метод  TView,  унаследованный от State, а
        затем обновляет подэлементы следующим образом:

             - если  AState  имеет  значение  sfActive,   sfExposed   или
        sfDragging, то для каждого подэлемента для его обновления вызыва-
        ется SetState;

             - если AState имеет значение  sfFocused,  то  для  установки
        флага  sfFocused  вызывается  SetState для выбранного в настоящий
        момент подэлемента.

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

*-          Store
                  procedure Store(var S: TStream);

             Сохраняет  всю группу в потоке, сначала вызывая метод Store,
        унаследованный от TView, а затем используя TStream.Put для вывода
        каждого подэлемента.

             Если  тип  объекта,  порожденный  от  TGroup, содержит поля,
        которые  указывают  на  подэлементы,  то для записи этих полей он
        должен использовать PutSubViewPtr внутри его метода Store.

             См. также: TView.Store, TGroup.PutSubViewPtr, TGroup.Load

*-          Unlock
                  procedure Unlock;

             Разблокирует  группу, уменьшая значение счетчика блокировок.
        Если  счетчик блокировки становится равным 0, то вся группа выво-
        дится на экран, используя образ, созданный в кэш-буфере.

             См. также: TGroup.Lock

*-          Valid
                  function Valid(Command: Word): Boolean; virtual;

             Вызывает  метод  Valid для каждого подэлемента в циклическом
        порядке  и возвращает True в случае, если вызовы Valid всех подэ-
        лементов  возвращают  True;  в противном случае возвращает False.
        TGroup.Valid  используется  в  конце  цикла  обработки  событий в
        TGroup.Execute   для   подтверждения    того,   что    завершение
        разрешено. Режимное состояние не может быть завершено до тех пор,
        пока все вызовы Valid не вернут True.  Подэлемент  может  вернуть
        False, если он хочет, чтобы управление осталось у него.

             См. также: TView.Valid, TGroup.Execute

*-      THistory                                                Dialogs
        -----------------------------------------------------------------

             Объект  THistory  реализует список ранее выполненных команд,
        действий или выборов для их повтора. Объекты THistory связываются
        с объектом строки ввода TInputLine и со списком протокола. Инфор-
        мация  списка протокола хранится в блоке динамически распределяе-
        мой  области памяти. Когда блок заполняется, наиболее старые эле-
        менты протокола удаляются, а новые добавляются.

             Объект  THistory  показывается  в  виде  пиктограммы (|щ|) в
        конце строки ввода. Когда пользователь выбирает мышью пиктограмму
        протокола,   Turbo  Vision   открывает  окно  протокола   (смотри
        THistoryWindow)  с просмотром протокола (смотри  THistoryViewer),
        содержащем список вводимых ранее команд.

             Различные строки ввода могут использовать один список преды-
        стории, используя одинаковый номер идентификатора ID.

*-                                     Поля
        -----------------------------------------------------------------

             HistoryID                                (только для чтения)
                  HistoryID: Word;

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

             Link                                     (только для чтения)
                  Link: PInputLine;

             Указатель на связанный объект TInputLine.

*-                                    Методы
        -----------------------------------------------------------------

             Init
                  constructor Init(var   Bounds:   TRect;
                                 ALink:  PInputLine; AHistoryId: Word);

             Создает объект THistоry заданного размера, вызывая конструк-
        тор  Init,  унаследованный  от  TView, а затем устанавливает поля
        Link и HistoryId равными ALink и AHistoryId. Поле Options устана-
        вливается равным ofPostProcess, а EventMask - равным evBroadcast.

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

             Load
                  constructor Load(var S: TStream);

             Создает  и  инициализирует  объект  предыстории из потока S,
        вызывая конструктор Load, унаследованный от TView, и читая Link и
        HistoryId из S.

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

             Draw
                  procedure Draw; virtual;

             Переопределяемость: переопределяется редко.

             Рисует пиктограмму предыстории, используя палитру, назначен-
        ную по умолчанию.

             GetPalette
                  function GetPalette: PPalette; virtual;

             Переопределяемость: иногда переопределяется.

             Возвращает  указатель  на  используемую по умолчанию палитру
        CHistory.

             HandleEvent
                  procedure HandleEvent

             HandleEvent  обрабатывает  большую  часть  событий,  вызывая
        метод  HandleEvent,  унаследованный от TView, а затем отвечает на
        два специальных события:

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

             - если связанная строка ввода теряет фокус ввода или пиктог-
        рамма предыстории получает неявную  команду  cmRecordHistory,  то
        HandleEvent вызывает RecordHistory для записи текущего содержимо-
        го строки ввода в блок предыстории.

             См.  также:  TView.HandleEvent,  THistory.InitHistoryWindow,
        THistory.RecordHistory

             InitHistoryWindow
                  function InitHistoryList

             function InitHistory (var Bounds: TRect):
                                                PHistoryWindow; virtual;

             Создает объект окна предыстории с ограничивающим прямоуголь-
        ником,  переданным в Bounds, и ID предыстории из HistoryID, возв-
        ращая  указатель  на  вновь  созданное  окно. Также устанавливает
        контекст  подсказки  для  окна  предыстории на контекст подсказки
        связанной  строки  ввода.  Обработчик  событий  THistory вызывает
        InitHistoryWindow в ответ на нажатия кнопок мыши над пиктограммой
        предыстории  или  нажатия некоторых комбинаций клавиш в связанной
        строке ввода.

             См. также: THistoryWindow.Init, THistory.HandleEvent

             RecordHistory
                  procedure RecordHistory (const S: String); virtual;

             Добавляет  строку S к списку предыстории, связанному с отоб-
        ражаемым элементом, описанным HistoryID.

             См. также: процедуру HistoryAdd

             Store
                  procedure Store(var S:TStream);

             Сохраняет   объект  предыстории  в  потоке  S, вызывая метод
        Store,   унаследованный  от  TView,  а  затем  записывает  Link и
        HistoryId в S.

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

*-                                   Палитра
        -----------------------------------------------------------------

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

                                 1    2
                              ЙННННСНННН»
                 CHistory     є 22 і 23 є
                              ИННСНПНСННј
                 Стрелка ДДДДДДДДЩ   АДДДДДДД Стороны

*-      THistoryViewer                                          Dialogs
        -----------------------------------------------------------------

             THistoryViewer является прямым потомком TListViewer, исполь-
        зуемым  системой  списка  предыстории.  Он  используется системой
        списка  протокола  и  появляется внутри окна протокола при выборе
        мышью пиктограммы протокола. Для детального описания взаимодейст-
        вия  THistory,  THistoryWindow  и  THistoryViewer смотри описание
        THistory в этой главе.

             Подробности о поле THistoryViewer и его методах приводится в
        контекстной подсказке.

*-      THistoryWindow                                          Dialogs
        -----------------------------------------------------------------

             THistoryWindow представляет собой специализированный потомок
        (наследник)  TWindow, используемый для хранения объекта просмотра
        списка  протокола,  когда пользователь выбирает мышью пиктограмму
        протокола, расположенную сразу за строкой ввода. По умолчанию это
        окно  не  имеет  заголовка  и  номера. Рамка окна протокола имеет
        закрывающую  пиктограмму,  поэтому окно может быть закрыто, но не
        может изменить размер или "распахиваться".

             Подробности  по использованию списков протоколов и связанных
        с ними объектов см. THistory в этой главе.

*-      TIndicator                                             Editors
        -----------------------------------------------------------------

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

*-                                     Поля
        -----------------------------------------------------------------

             Location
                  Location: TPoint;

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

             Modified
                  Modified: Boolean;

             Modified  равно True в случае, если текст в связанном редак-
        торе  изменялся.  Draw  проверяет  значение Modified и показывает
        специальный  символ,  чтобы предупредить пользователя о состоянии
        буфера редактирования.

*-                                    Методы
        -----------------------------------------------------------------

             Init
                  constructor Init (var   Bounds:   TRect);

             Создает  индикатор с границами, указанными в Bounds, вызывая
        конструктор  Init,  унаследованный  от TView, а затем привязывает
        отображаемый  элемент к левому нижнему углу окна владельца, уста-
        навливая GrowMode равным gfGrowLoY + gfGrowHiY.

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

             Draw
                  procedure Draw; virtual;

             Рисует  индикатор в форме: строка: столбец, за которыми сле-
        дует символ  в случае, если Modified равно True.

             GetPalette
                  function GetPalette: PPalette; virtual;

             Возвращает  указатель  на  используемую по умолчанию палитру
        CIndicator.

             SetState
                  procedure SetState (AState: Word;
                                           Enable: Boolean); virtual;

             Вызывает  метод SetState, унаследованный от TView, для обра-
        ботки  нормальной  установки  состояния,  а  затем перерисовывает
        индикатор  в случае, если флаг sfDragging установлен, что означа-
        ет,  что  индикатор  требует  перерисовки  с использованием цвета
        перемещаемой рамки, а не нормального.

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

             SetValue
                  procedure SetValue (ALocation: TPoint;
                                                     AModified: Boolean);

             Устанавливает значение Location равным ALocation, а Modified
        - равным AModified, и перерисовывает индикатор. Объекты редактора
        вызывают  эти  методы для того,  чтобы значения индикаторов соот-
        ветствовали текущим.

*-                                   Палитра
        -----------------------------------------------------------------

             Пиктограммы  протокола  используют  палитру, определенную по
        умолчанию, CIndicator, для отображения 2 и 3-го элементов станда-
        ртной палитры программы. Это те же самые цвета, которые использу-
        ются рамками окна.

                                 1    2
                              ЙННННСНННН»
                 CIndicator   є  2 і  3 є
                              ИННСНПНСННј
               НормальнаяДДДДДДДДЩ   АДДДДДДД Перемещаемая

*-      TInputLine                                              Dialogs
        -----------------------------------------------------------------

             Объект TInputLine обеспечивает базовый редактор строк ввода.
        Он управляет вводом с клавиатуры, а также нажатием кнопок и пере-
        мещениями "мыши" при отметке блоков и в целом ряде функций редак-
        тирования строки (см. TInputLine.HandleEvent). Существующий ранее
        текст удаляется и заменяется первым вводом, являющимся текстовым.
        Если MaxLen больше размера по Х (Size.X), то поддерживается гори-
        зонтальная прокрутка, которая указывается правой и левой стрелка-
        ми.

             Методы  GetData и SetData доступны для записи и чтения строк
        данных (посредством поля указателя Data) в данную запись.

             Строки  ввода  часто  имеют  связанные с ними объекты меток,
        списков предыстории и, возможно, объектов определителя допустимо-
        сти ввода.

             TInputLine можно изменить для обработки типов данных, отлич-
        ных от строк. Чтобы сделать это, необходимо добавить новые поля и
        переопределяете  методы  Init,  Load,  Store,  Valid,   DataSize,
        GetData и SetData.

*-                                     Поля
        -----------------------------------------------------------------

             CurPos                                       (чтение/запись)
                  CurPos: Integer;

             Индекс точки вставки текста (т.е.  текущего положения курсо-
        ра).

             См. также: TInputLine.SelectAll

             Data                                         (чтение/запись)
                  Data: PString;

             Указатель на строку, содержащую редактируемую информацию.

             FirstPos                                     (чтение/запись)
                  FirstPos: Integer;

             Индекс первого отображаемого символа.

             См. также: TInputLine.SelectAll

             MaxLen                                   (только для чтения)
                  MaxLen: Integer;

             Максимальная  длина,  допустимая  для  строки,  включая байт
        длины.

             См. также: TInputLine.DataSize

             SelEnd                                   (только для чтения)
                  SelEnd: Integer;

             Индекс конца выделенной области (т.е. указатель на последний
        символ отмеченного блока).

             См. также: TInputLine.SelectAll

             SelStart                                 (только для чтения)
                  SelStat: Integer;

             Индекс начала выделенной области (т.е. первый символ отмече-
        нного блока).

             См. также: TInputLine.SelectAll

             Validator
                  Validator: PValidator;

             Указывает на объект определителя допустимости ввода, связан-
        ный со строкой ввода, или nil, если строка ввода не имеет объекта
        определителя  допустимости.  Для  присваивания значения Validator
        необходимо вызвать метод SetValidator, а не делать это напрямую.

             См. также: TInputLine.SetValidator

*-                                    Методы
        -----------------------------------------------------------------

             Init
                  constructor Init(var Bounds: TRect; AMaxLen: Integer);

             Создает прямоугольник  ввода с заданными значениями аргумен-
        тов,  вызывая конструктор  Init,  унаследованный  от  TInputLine.
        State устанавливается равным sfCursorVis, Options устанавливается
        равным (ofSelectable + ofFirstClick),  и  MaxLen  устанавливается
        равным AMaxLen. Выделяет AMaxLen + 1 байт памяти, а поле Data ус-
        танавливается равным указателю на эту память.

             См. также:           TView.Init,          TView.sfCursorVis,
        TView.ofSelectable, TView.ofFirstClick

             Load
                  constructor Load(var S: TStream);

             Создает  и  инициализирует  объект строки ввода из потока S,
        вызывая  сначала  конструктор  Load,  унаследованный  от TView, а
        затем  читает  целочисленные  поля  из  потока, используя S.Read.
        Выделяет  MaxLen+1  байт  памяти для Data, а затем считывает из S
        байт длины строки и данные с помощью S.Read. Метод Load использу-
        ется совместно с TInputLine.Store для сохранения и восстановления
        объектов TInputLine из TStream.

             Переопределяйте  этот  метод,  если Вы определяете потомков,
        содержащих дополнительные поля.

             См. также: TView.Load, TInputLine.Store, TStream.Read

             Done
                  destructor Done; virtual;

             Переопределяемость: используется редко.

             Освобождает  память,  выделенную  под  Data,  затем вызывает
        Done,  унаследованный  от  TView,  для уничтожения объекта строки
        ввода.

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

             DataSize
                  function DataSize: Word; virtual;

             Переопределяемость: иногда переопределяется.

             Возвращает  размер  записи для вызовов GetData и SetData. По
        умолчанию  возвращается MaxLen+1. Переопределите этот метод, если
        Вы определили потомков для обработки других типов данных.

             См. также: TInputLine.GetData, TInputLine.SetData

             Draw
                  procedure Draw; virtual;

             Переопределяемость: переопределяется редко.

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

             GetData
                  procedure GetData(var Rec); virtual;

             Переопределяемость: иногда переопределяется.

             Возвращает значение строки ввода. По умолчанию GetData запи-
        сывает DataSize байт из строки Data^ в Rec. GetData можно переоп-
        ределять  при  определении  порожденных  объектов, обрабатывающих
        нестроковые типы данных. Например, строка ввода чисел может прео-
        бразовать  введенную  строку к числовому отображаемому элементу и
        скопировать  это  число  в Rec. При переопределении GetData нужно
        также  переопределять  SetData,  чтобы  она считывала те же самые
        данные,  которые  вернула  GetData,  а  также DataSize, чтобы она
        возвращала размер переданных данных.

             См. также: TInputLine.DataSize, TInputLine.SetData

             GetPalette
                  function GetPalette: PPalette; virtual;

             Переопределяемость: иногда переопределяется.

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

             HandleEvent
                  procedure HandleEvent(var Event: TEvent); virtual;

             Переопределяемость: иногда используется.

             Вызывает метод HandleEvent, унаследованный от TView, а затем
        обрабатывает  все  события  от "мыши" и клавиатуры в случае, если
        выбрана  строка  ввода.  Этот метод реализует стандартные функции
        редактирования.

             Функции  редактирования  включают в себя: отметку блока "мы-
        шью"  с  помощью нажатия кнопок и ее перемещения; удаление блока;
        управление  режимами вставки и замены с автоматическим изменением
        формы  курсора;  автоматическую  и "ручную" прокрутку (зависит от
        относительных размеров строки Data и Size.X); "ручную" горизонта-
        льную  прокрутку  с  помощью  "мыши"  с использованием пиктограмм
        стрелок;  "ручное"  перемещение курсора с помощью стрелок, клавиш
        Home и End (и их стандартных эквивалентов с использованием клави-
        ши  Ctrl); удаление символа и блока с помощью Del и Ctrl+G. Отоб-
        ражаемый  элемент  перерисовывается,  как  это необходимо, и поля
        TInputLine изменяются соответствующим образом.

             См. также:          sfCursorIns,          TView.HandleEvent,
        TIputLine.SelectAll

             SelectAll
                  procedure SelectAll(Enable: Boolean);

             Устанавливает  значения  CurPos, FirstPos и SelStart равными
        0.  Если  Enable  равно  True,  то  SelEnd устанавливается равным
        Length(Data^),  выделяя   таким  образом  всю строку ввода.  Если
        Enable  равно   False,   то   SelEnd  устанавливается  равным  0,
        отменяя  таким  образом   выделение    всей   строки.    Наконец,
        отображаемый элемент перерисовывается вызовом DrawView.

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

             SetData
                  procedure SetData(var Rec); virtual;

             Переопределяемость: иногда переопределяется.

             По умолчанию считывает DataSize байт из Rec в строку Data^ и
        вызывает  SelectAll(True)  для того, чтобы сделать вновь заданный
        текст  выделенным. Переопределите этот метод, если Вы определяете
        потомка  для  обработки  нестроковых  типов данных, использующего
        этот  метод  для  преобразования  Вашего типа данных в строку для
        последующего редактирования с помощью TInputLine.

             См. также:      TInputLine.DataSize,     TInputLine.GetData,
        TView.DrawView

             SetState
                  procedure AetState(AState:  Word;
                                           Enable: Boolean); virtual;

             Переопределяемость: используется редко.

             Вызывается  в случае, когда строка ввода должна быть отобра-
        жена  заново вследствие изменения State. Вызывает метод SetState,
        унаследованный от TView, для установки или сброса бит(а), переда-
        нного  в  AState  в  поле  State строки ввода. Затем, если AState
        равно  sfSelected  или  если AState равно sfActive и строка ввода
        является sfSelected, то вызывается SelectAll(Enable).

             См. также: TView.SetState, TView.DrawView

             SetValidator
                  procedure SetValidator (AValid: PValidator);

             Если  со строкой ввода уже связан объект определителя допус-
        тимости  ввода, то SetValidator уничтожает любой такой существую-
        щий   объект,  вызывая  его  метод  Free.  Устанавливает значение
        Validator   равным   AValid.  Для  уничтожения  всех существующих
        объектов определителя допустимости без создания нового необходимо
        передать значение nil.

             Store
                  procedure Store(var S: TStream);

             Сохраняет  отображаемый  элемент  в  потоке, вызывая сначала
        метод  Store, унаследованный от TView, а затем записывает 5 цело-
        численных  полей и строку Data с помощью вызовов S.Write. Исполь-
        зуется  совместно с TInputLine.Load для сохранения и чтения всего
        объекта TInputLine. Переопределите этот метод, если Вы определяе-
        те потомка, который содержит дополнительные поля.

             См. также: TView.Store, TInputLine.Load, TStream.Write

             Valid
                  function Valid (Command: Word): Boolean; virtual;

             Если  со  строкой не связан объект определителя допустимости
        ввода или если Command равно cmCancel, то Valid возвращает значе-
        ние,  которое  было  возвращено  методом Valid, унаследованным от
        TView.

             Если  строка  ввода  имеет  объект определителя допустимости
        ввода,  то  она  проверяет возвращенное им значение. Если Command
        равно  cmValid, то Valid возвращает True в случае, если у опреде-
        лителя  допустимости  Status  равен  vsOK; в противном случае она
        возвращает  False.  Если Command отлична от cmValid или cmCancel,
        то  Valid передает Data^ методу Valid объекта определителя допус-
        тимости.  Если  этот  метод  возвращает значение False, то строка
        ввода  вызывает Select для взятия фокуса ввода, и возвращает зна-
        чение False.

             См. также: TView.Valid, TValidator.Valid

*-                                   Палитра
        -----------------------------------------------------------------

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

                             1    2    3    4
                          ЙННННСННННСННННСНННН»
              CInputLine  є 19 і 19 і 20 і 21 є
                          ИННСНПННСНПННСНПННСНј
                             і    і    і    і
              Пассивный ДДДДДЩ    і    і    АДДД Стрелка
              Активный  ДДДДДДДДДДЩ    АДДДДДДДД Выделенный

*-      Тип TItemList                                          Objects
        -----------------------------------------------------------------

             Описание: TItemList = array[0..MaxCollectionSize - 1] of
                                                               Pointer;

             Функция:  Массив  общих  указателей,  используемых внутренне
        объектами TCollection.

*-      TLabel                                                  Dialogs
        -----------------------------------------------------------------

             Объект TLabel представляет собой текст в отображаемом элеме-
        нте,  который  может  быть  выбран  (подсвечен) с помощью "мыши",
        клавишами курсора или клавишами активации Alt-буква. Метка обычно
        присоединяется  с  помощью указателя PView к другому управляющему
        отображаемому  элементу,  такому,  как  строка ввода, кластер или
        объект  просмотр  списка  для  дачи пользователю пояснений. Выбор
        (или  нажатие)  метки  будет  осуществлять  выбор присоединенного
        управляющего элемента. Метка также будет подсвечиваться при выбо-
        ре соответствующего управляющего элемента.

*-                                     Поля
        -----------------------------------------------------------------

             Light                                    (только для чтения)
                  Light: Boolean;

             Если  True,  то  метка и связанный с ней управляющий элемент
        будут выбираться и подсвечиваться.

             Link                                     (только для чтения)
                  Link: PView;

             Указывает  на элемент управления, связанный с этой меткой.

*-                                    Методы
        -----------------------------------------------------------------

             Init
                  constructor Init(var Bounds:  TRect;
                                           AText:  String; ALink: PView);

             Создает объект метки с заданными размером и текстом, вызывая
        сначала  конструктор Init, унаследованный от TStaticText, а затем
        устанавливает поле Link для связанного элемента управления равным
        ALink.  Поле  Option  устанавливается  равным  ofPreProcess   and
        ofPostProcess.   EventMask  устанавливается  равным  evBroadcast.
        Значение  поля    AText   назначается  полю   Text  через   метод
        TStaticText.Init.  В  AText  можно  задать  клавишу активации для
        метки, окружив соответствующую букву символами тильд "~".

             Внимание!  Никогда не следует создавать объект метки со свя-
        зью, равной nil. Для создания меток без связей используйте объек-
        ты со статическим текстом.

             См. также: TStaticText.Init

             Load
                  constructor Load(var S: TStream);

             Создает  и загружает объект TLabel из потока S, вызывая сна-
        чала  конструктор  Load,  унаследованный  от TStaticText, а затем
        вызывая GetPeerViewPtr(S, Link) для переустановки связи со связа-
        нным элементом управления.

             См. также: TLabel.Store

             Draw
                  procedure Draw; virtual;

             Переопределяемость: никогда не используется.

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

             GetPalette
                  function GetPalette: PPalette; virtual;

             Переопределяемость: иногда переопределяется.

             Возвращает  указатель  на  используемую по умолчанию палитру
        CLabel.

             HandleEvent
                  procedure HandleEvent(var Event: TEvent); virtual;

             Переопределяемость: не переопределяется.

             Обрабатывает большинство событий, вызывая метод HandleEvent,
        унаследованный  от  TStaticText.  Если  метка  получает сообщение
        evMouseDown  или событие от клавиши активации, то выбирается свя-
        занный элемент управления. Этот метод также отвечает на сообщения
        cmReceivedFocus и cmReleasedFocus от связанного элемента управле-
        ния для настройки значения поля Light и перерисовки метки.

             См. также: TView.HandleEvent, константы команд cmXXXX

             Store
                  procedure Store(var S: TStream);

             Сохраняет  отображаемый  элемент в потоке S, вызывая сначала
        метод  Store,  унаследованный  от TStaticText, а затем записывает
        связь со связанным элементом управления, вызывая PutPeerViewPtr.

             См. также: TLabel.Load

*-                                   Палитра
        -----------------------------------------------------------------

             Метки  используют палитру, назначенную по умолчанию, CLabel,
        для  отображения элементов 7, 8 и 9 палитры стандартного диалого-
        вого окна.

                             1    2    3    4
                          ЙННННСННННСННННСНННН»
              CLabel      є  7 і  8 і  9 і  9 є
                          ИННСНПННСНПННСНПННСНј
                             і    і    і    і
            Нормальный текст Щ    і    і    АДДД Выделенная оперативная
            Выделенный текст ДДДДДЩ    і         клавиша
                                       АДДДДДДДД Обычная оперативная
                                                 клавиша

*-      TListBox                                               Dialogs
        -----------------------------------------------------------------

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

             TListBox  имеет  дополнительное  поле  List,  которого нет в
        TListViewer.  List указывает на объект набора, содержащий выводи-
        мые  и  выбираемые  элементы. Ответственность за вставку данных в
        TCollection  лежит  на Вас также, как и действия, выполняемые при
        выборе элемента.

             TListViewer  наследует метод Done от TView, поэтому Вы также
        отвечаете  за  освобождение содержимого List по окончании работы.
        Вызов  NewList  будет  освобождать  старый  список, поэтому вызов
        NewList(nil) и последующее освобождение окна-списка будут освобо-
        ждать все.

*-                                     Поле
        -----------------------------------------------------------------

             List                                     (только для чтения)
                  List: PCollection;

             List  указывает  на набор элементов для просмотра. Это может
        быть набор PString, представляющий элементы текста.

*-                                    Методы
        -----------------------------------------------------------------

             Init
                  constructor Init(var Bounds: TRect; ANumCols: Word;
                                                AScrollBar: PScrollBar);

             Создает  окно  списка с заданным размером, числом столбцов и
        вертикальной  полосой  прокрутки,  на которую указывает указатель
        AScrollBar.  Этот  метод  вызывает  метод Init, унаследованный от
        TListViewer, с аргументом горизонтальной полосы прокрутки, равным
        nil.

             Поле  List  устанавливается  равным  nil  (пустой список), а
        Range  устанавливается  равным  0.  Ваша  программа должна задать
        подходящий набор, содержащий строки (или другие объекты для выво-
        да). Поле List указывает на этот набор вследствие вызова NewList.

             См. также: TListViewer.Init, TListBox.NewList

             Load
                  constructor Load(var S: TStream);

             Создает  объект  окна-списка  и  загружает его значениями из
        потока  S,  вызывая  сначала  конструктор Load, унаследованный от
        TListViewer, а затем считывает List из S с помощью S.Get.

             См. также: TListViewer.Load, TListBox.Store, TStream.Get

             DataSize
                  function DataSize: Word; virtual;

             Переопределяемость: иногда переопределяется.

             Возвращает  размер  считываемых  и  записываемых  данных для
        записей,   передаваемых  в   GetData  и  SetData.  По   умолчанию
        TListBox.DataSize   возвращает   размер   указателя, плюс  размер
        слова (для List и выбранного элемента).

             См. также: TListBox.GetData, TListBox.SetData

             GetData
                  procedure GetData(var Rec); virtual;

             Переопределяемость: иногда переопределяется.

             Записывает  данные  объекта  TListBox в запись. По умолчанию
        этот метод пишет в Rec текущие поля List и Focused.

             См. также: TListBox.DataSize, TListBox.SetData

             GetText
                  function GetText(Item: Integer;
                                      MaxLen: Integer): String; virtual;

             Переопределяемость: иногда переопределяется.

             Возвращает  строку  с  номером  Item из объекта TListBox. По
        умолчанию  возвращаемая  строка  получается из элемента с номером
        Item  в  наборе  строк с использованием PString(List^.At(Item))^.
        Если List содержит не строковые объекты, то Вам необходимо перео-
        пределить  этот метод. Если List равно nil, то GetText возвращает
        пустую строку.

             См. также: TCollection.At

             NewList
                  procedure NewList(AList: PCollection); virtual;

             Переопределяемость: переопределяется редко.

             Если AList не равно nil, то новый список, заданный с помощью
        AList,  замещает  текущий список List. Поле Range устанавливается
        равным  полю  Count нового TCollection, и первый элемент получает
        фокус ввода вызовом FocusItem(0). Наконец, новый список отобража-
        ется  вызовом DrawView. Заметим, что если предыдущее поле List не
        равно nil, то перед присваиванием нового значения оно освобождае-
        тся.

             См. также:      TListBox.SetData,      TListViewer.SetRange,
        TListViewer.FocusItem, TView.DrawView

             SetData
                  procedure SetData(var Rec); virtual;

             Переопределяемость: иногда используется.

             Заменяет текущий список значениями List и Focused, считанны-
        ми из Rec. SetData вызывает NewList так, чтобы новый список отоб-
        ражался с правильным активным элементом. Как и в случае с GetData
        и  DataSize, Вам может понадобиться переопределить этот метод для
        своей программы.

             См. также:        TListBox.DataSize,       TListBox.GetData,
        TListBox.NewList

             Store
                  procedure Store(var S:TStream);

             Записывает  окно  списка  в  поток  S, вызывая сначала метод
        Store,  унаследованный  от TListView, а затем выводит набор в по-
        ток, вызывая S.Put(List).

             См. также: TListBox.Load, TListViewer.Store, TStream.Put

*-                                   Палитра
        -----------------------------------------------------------------

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

                          1   2   3   4   5
                        ЙНННСНННСНННСНННСННН»
           CListViewer  є 25і 26і 27і 28і 29є
                        ИНСНПНСНПНСНПНСНПНСНј
                          і   і   і   і   і
           Активный   ДДДДЩ   і   і   і   АДД Разделитель
           Неактивный ДДДДДДДДЩ   і   АДДДДДД Выделенный
           Текущий    ДДДДДДДДДДДДЩ

*-      TListViewer                                               Views
        -----------------------------------------------------------------

             TListViewer  представляет собой базовый тип, производными от
        которого являются различные объекты просмотра списков, такие, как
        TListBox.  Базовые поля и методы TListViewer обеспечивают следую-
        щие функциональные возможности:

             - отображаемый элемент для вывода связанных списков  элемен-
        тов (но не списков);

             - управление одной или двумя полосами прокрутки;

             - возможности прокрутки списков в двух измерениях;

             - загрузка  и  сохранения отображаемого элемента и его полос
        прокрутки в/из потока;

             - возможность выбора (подсветки) элемента списка  с  помощью
        "мыши" или клавиатуры;

             - метод Draw, выполняющий копирование с изменением размера и
        прокруткой.

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

             TListViewer не располагает собственным механизмом сохранения
        списка. TListViwer можно использовать для вывода на экран прокру-
        чиваемых  списков массивов, связанных списков или подобных струк-
        тур  данных. Можно также использовать потомков TListViwer (таких,
        как  TListBox), которые связывают набор с объектом просмотра (ви-
        зуализатором) списка.

*-                                     Поля
        -----------------------------------------------------------------

             Focused                                  (только для чтения)
                  Focused: Integer;

             Номер текущего элемента. Элементы нумеруются от 0 до Range -
        1.  Init устанавливает Focused равным 0 (первый элемент), а затем
        его можно изменить с помощью кнопки "мыши" или клавиши пробела.

             HScrollBar                               (только для чтения)
                  HScrollBar: PScrollBar;

             Указатель на связанную с данным отображаемым элементом гори-
        зонтальную полосу прокрутки. В случае значения nil (пусто) полоса
        прокрутки отсутствует.

             NumCols                                  (только для чтения)
                  NumCols: Integer;

             Число столбцов в окне просмотра списка.

             Range                                    (только для чтения)
                  Range: Integer;

             Текущее  общее число элементов в списке. Элементы нумеруются
        от 0 до Range - 1.

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

             TopItem                                      (чтение/запись)
                  TopItem: Integer;

             Номер  первого  выводимого элемента. Элементы нумеруются с 0
        до Range - 1. Этот номер зависит от числа столбцов, размера обла-
        сти просмотра и значения Range.

             См. также: Range

             VScrollBar                                (только для чтения)
                  VScrollBar: PScrollBar;

             Указатель  на связанную с данным отображаемым элементом вер-
        тикальную  полосу прокрутки. В случае значения nil (пусто) полоса
        прокрутки отсутствует.

*-                                    Методы
        -----------------------------------------------------------------

             Init
                  constructor Init(var Bounds: TRect; ANumCols: Integer;
                                 AHscrollBar, AVScrollBar: PScrollBar);

             Создает  и инициализирует объект TListViewer с заданным раз-
        мером, вызывая сначала конструктор Init, унаследованный от TView.
        Поле  NumCols устанавливается равным ANumCols. Options устанавли-
        вается равным (ofFirstClick + ofSelectable), благодаря чему нажа-
        тия  кнопок "мыши", которые используются при выборе отображаемого
        элемента, будут передаваться HandleEvent. EventMask устанавливае-
        тся  равным evBroadcast. Начальные значения Range и Focused равны
        0.  Значения VScrollBar и HScrollBar устанавливаются равными вер-
        тикальным  и/или  горизонтальным  полосам прокрутки, переданным в
        аргументах AVScrollBar и AHScrollBar.

             Если  Вы устанавливаете допустимые полосы прокрутки, то Init
        настроит  их  поля  ArStep  и  PgStep  в  соответствии с размером
        TListViewer   и   числом  столбцов.  Например,  для  TListViewer,
        состоящего из   одного   столбца,   по   умолчанию   вертикальное
        значение PgStep равно Size.Y - 1, а вертикальное значение  ArStep
        равно 1.

             См. также: TView.Init, TScrollBar.SetStep.

             Load
                  constructor Load(var S: TStream);

             Создает  и  загружает  объект  просмотра списка из потока S,
        вызывая  сначала  конструктор  Load,  унаследованный  от TView, а
        затем считывает полосы прокрутки с помощью вызова GetPeerViewPtr,
        после чего считывает целочисленные поля с помощью S.Read.

             См. также: TView.Load, TListViewer.Store

             ChangeBounds
                  procedure ChangeBounds(var Bounds: TRest); virtual;

             Переопределяемость: не используется.

             Изменяет  размер  объекта  просмотра  списков, вызывая метод
        ChangeBounds,  унаследованный от TView. В случае наличия горизон-
        тальной полосы прокрутки данный метод настраивает значение PgStep
        как это необходимо.

             См. также: TView.ChangeBounds. TScrollBar.ChangeStep.

             Draw
                  procedure Draw; virtual;

             Переопределяемость: не используется.

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

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

             FocusItem
                  procedure FocuseItem(Item: Integer); virtual;

             Переопределяемость: не используется.

             Устанавливая значение поля Focused равным Item, делает зада-
        нный  элемент  текущим. Этот метод также устанавливает поле Value
        вертикальной  полосы  прокрутки  (если она имеется) равным Item и
        настраивает поле TopItem.

             См. также: TListViewer.IsSelected, TScrollBar.SetValue.

             GetPalette
                  function GetPalette: PPalette; virtual;

             Переопределяемость: иногда используется.

             Возвращает  указатель  на  используемую по умолчанию палитру
        CTListViewer.

             GetText
                  function GetText(Item: Integer;
                                      MaxLen: Integer): String; virtual;

             Переопределяемость: всегда переопределяется.

             Это  абстрактный метод. Производные типы должны обеспечивать
        механизм  для  возврата строки для элемента (Item), длина которой
        не превышает MaxLen.

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

             HandleEvent
                  procedure HandleEvent(var Event: TEvent); virtual;

             Переопределяемость: используется редко.

             HandleEvent  обрабатывает  большую  часть  событий,  вызывая
        метод HandleEvent, унаследованный от TView. Нажатия кнопок "мыши"
        и  "автоматические"  перемещения по списку будут изменять текущий
        элемент.  Элемент можно выбрать с помощью двойного нажатия кнопки
        "мыши".  Обрабатываются также события от клавиатуры: клавиша про-
        бела  осуществляет  выбор текущего элемента, а клавиши управления
        курсором, PgUp, PgDn, Ctrl+PgDn, Ctrl+PgUp, Home, End используют-
        ся  для  установки  текущего элемента. Наконец события, вызванные
        полосами  прокрутки, обрабатываются путем изменения текущего эле-
        мента  и новым отображением области просмотра, как это потребует-
        ся.

             См. также: TView.HandleEvent, TLiatViewer.FocusItem

             IsSelected
                  function IsSelected(Item: Integer): Boolean; virtual;

             Переопределяемость: иногда переопределяется.

             Возвращает значение True, если заданный элемент Item являет-
        ся  текущим, то есть Item = Focused. Может быть переопределен для
        создания объекта просмотра с множественным выбором.

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

             SelectItem
                  procedure SelectItem(Item: Integer); virtual;

             Переопределяемость: иногда используется.

             Осуществляет выбор элемента списка с индексом Item и уведом-
        ляет  об этом равнозначные ему объекты. Метод SelectItem, опреде-
        ленный по умолчанию, посылает своему владельцу cmListItemSelected
        следующим образом:

             Message (Owner, evBroadcast, cmListItemSelected, $Self);

             См. также: TListViever.FocusItem

             SetRange
                  procedure SetRange(ARange: Integer);

             Устанавливает поле Range равным ARange. Если объект просмот-
        ра  использует  вертикальную  полосу  прокрутки,  то ее параметры
        соответствующим  образом  настраиваются.  Если текущий элемент не
        попадает  в новый диапазон Range, то поле Focused устанавливается
        равным нулю.

             См. также: TListViewer.Range, TScrollBar.SetParams

             SetState
                  procedure SetState(AState: Word;
                                           Enable: Boolean); virtual;

             Переопределяемость: используется редко.

             Если Enable имеет значение True, то вызывает метод SetState,
        унаследованный от  TView,   для   изменения   состояния   объекта
        TListViewer.  В зависимости от значения аргумента AState, это мо-
        жет привести к тому,  что область просмотра будет выведена на эк-
        ран   или  "скрыта".  Кроме  того,  если  AState  имеет  значение
        sfSelected and sfActive, то полосы прокрутки отображаются заново.
        Если AState имеет значение sfSelected,  но не sfActive, то полосы
        прокрутки будут "скрыты".

             См. также: TView.SetState, TScrollBar.Show, TScrollBar.Hide

             Store
                  procedure Store(var S: TStream);

             Записывает  объект просмотра списка в поток S, вызывая метод
        Store, унаследованный от TView, а затем записывает объекты полосы
        прокрутки  (если  таковые  имеются)  с помощью PutPeerViewPtr, и,
        наконец, используя S.Write, сохраняет целочисленные поля.

             См. также: TView.Store, TListViewer.Load

*-                                   Палитра
        -----------------------------------------------------------------

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

                               1   2   3   4   5
                             ЙНННСНННСНННСНННСННН»
              CListViewer    є 25і 26і 27і 28і 29є
                             ИНСНПНСНПНСНПНСНПНСНј
                               і   і   і   і   і
                Активен   ДДДДДЩ   і   і   і   АДДДДДДДД Разделитель
                Неактивен ДДДДДДДДДЩ   і   АДДДДДДДДДДДД Выбранный
                Текущий   ДДДДДДДДДДДДДЩ

*-      TLookupValidator                                       Validate
        -----------------------------------------------------------------

             Определитель  допустимости  соответствия  сравнивает строки,
        вводимые    пользователем,   с   перечнем   допустимых  значений.
        TLookupValidator  представляет   собой  абстрактный   тип объекта
        контроля допустимости, на базе которого можно создавать  полезные
        определители   допустимости.   Копии TLookupValidator  никогда не
        создаются.   При   создании    типа   определителя   допустимости
        необходимо   указать   список     допустимых     элементов      и
        переопределить  метод  Lookup  так,  чтобы   он   возвращал  True
        только  в случае совпадения элемента, введенного   пользователем,
        с элементом  списка. Одним  из примеров  работающего определителя
        допустимости,   порожденного   от   TLookupValidator,    является
        TStringLookupValidator.

*-                                    Методы
        -----------------------------------------------------------------

             IsValid
                  function IsValid (const S: string): Boolean; virtual;

             Вызывает  Lookup  для  поиска  строки  S в списке допустимых
        элементов  ввода.  Возвращает  True  в случае, если Lookup вернет
        True,  что  означает,  что  Lookup  нашла S в списке; в противном
        случае возвращает False.

             См. также: TLookupValidator.Lookup

             Lookup
                  function Lookup (const S: string): Boolean; virtual;

             Производит  поиск  строки  S  в  списке допустимых элементов
        ввода  и  возвращает  True  в случае, если находит S; в противном
        случае  возвращает  False.  Метод  Lookup объекта LookupValidator
        является  абстрактным  методом,  который всегда возвращает False.
        Порожденные  типы  определителя  допустимости соответствия должны
        переопределять  Lookup  для  обеспечения  поиска,  основанного на
        истинном списке приемлемых элементов.

*-      Объект TMemo                                           Editors
        -----------------------------------------------------------------

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

*-                                    Методы
        -----------------------------------------------------------------

             Load
                  constructor Load(var S: TStream);

             Считывает  объект  комментария  из потока S, вызывая сначала
        конструктор  Load,  унаследованный  от TEditor, а затем считывает
        длину буфера текста и текст, связанный с редактором.

             См. также: TEditor.Load

             DataSize
                  function DataSize: Word; virtual;

             Возвращает  размер  данных, переданных GetData и SetData. По
        умолчанию  этот  размер составляет длину буфера плюс размер слова
        длины.

             См. также: TMemo.GetData, TMemo.SetData

             GetData
                  procedure GetData (var Rec); virtual;

             Копирует  DataSize  байт  из  буфера редактора текста в Rec.
        GetData рассматривает Rec как запись TMemoData, устанавливая поле
        Length равным BufLen, а затем копирует текст из текстового буфера
        в поле Buffer. Если текст не заполняет всего буфера, то Rec запо-
        лняется  нулевыми  символами.  GetData позволяет программе читать
        текст из поля комментария в диалоговом окне или бланке с данными.

             См. также: TMemo.DataSize, TMemo.SetData

             GetPalette
                  function GetPalette: PPalette; virtual;

             Возвращает  указатель  на  используемую по умолчанию палитру
        CMemo.

             HandleEvent
                  procedure HandleEvent(var Event: TEvent); virtual;

             Переопределяемость: используется редко.

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

             См. также: TEditor.HandleEvent

             SetData
                  procedure SetData (var Rec); virtual;

             Копирует  DataSize  байт информации из Rec для инициализации
        буфера  данных.  SetData  рассматривает Rec как запись TMemoData,
        используя  поле Length для установки размера буфера комментария и
        копируя символы в поле Buffer до конца буфера редактирования.

             Store
                  procedure Store(var S: TStream);

             Записывает  объект  комментария  в  поток S, вызывая сначала
        метод  Store, унаследованный от TEditor, а затем записывает длину
        буфера редактирования и текст из буфера.

             См. также: TEditor.Store

*-                                   Палитра
        -----------------------------------------------------------------

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

                               1   2
                             ЙНННСННН»
              CMemo          є 26і 27є
                             ИНСНПНСНј
                               і   і
                НормальныйДДДДДЩ   АДДДДДДД Подсвеченный

*-      Тип TMemoData                                          Editors
        -----------------------------------------------------------------

             Описание:
                  TMemoData = record
                       Length:   Word;
                       Buffer:   TEditBuffer;
                  end;

             Функция:  Объекты  TMemo используют записи TMemoData в своих
        методах  GetData и SetData для чтения и записи длины их текстовых
        буферов и реального текста буфера.

*-      Тип TMenu                                              Menus
        -----------------------------------------------------------------

             Описание:  TMenu = record
                           Items:     PMenuItem;
                           Default:   PMenuItem);
                         end;

             Функция:  Тип  TMenu  представляет один уровень дерева меню.
        Поле Items указывает на список записей TMenuItems, а поле Default
        указывает  на выбираемый по умолчанию элемент внутри этого списка
        (элемент выбирается по умолчанию при открытии этого меню). Объект
        TMenuView (потомками которого являются TMenuBar и TMenuBox) имеет
        поле  Menu,  которое указывает на TMenu. Записи TMenu создаются и
        удаляются с помощью подпрограмм NewMenu и DisposeMenu.

             См. также:  TMebuView,  TMenuItem,   NewMenu,   DisposeMenu,
        поле TMenuView.Menu

*-      TMenuBar                                                 Menu
        -----------------------------------------------------------------

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

             - с помощью нажатия кнопки "мыши";

             - с помощью клавиши F10 и клавиш активации;

             - с помощью выбора (подсветки) элемента  и  нажатия  клавиши
        Enter;

             - с помощью оперативных клавиш.

             В  верхней  части  строки  меню  выводятся основные значения
        выбора меню. Это реализуется с помощью объекта TMenuBar, владель-
        цем которого обычно является объект TAplication. Подменю выводят-
        ся  в объектах типа TMenuBox. TMenuBar и TMenuBox являются потом-
        ками  абстрактного  типа  TMenuView (это непосредственный потомок
        TView).

             Для  большинства программ Turbo Vision Вам не придется рабо-
        тать  непосредственно  с  объектами  меню. Переопределив один раз
        метод программы InitMenuBar для введения структуры меню с исполь-
        зованием  вложенных  вызовов  New, NewSubMenu, NewItem и NewLine,
        определенное  по умолчанию поведение меню обрабатывает создание и
        управление отображаемыми элементами меню.

*-                                    Методы
        -----------------------------------------------------------------

             Init
                  constructor Init(var Bounds: TRect; AMenu: PMenu);

             Создает  строку  меню  с заданными границами Bounds, вызывая
        конструктор  Init,  унаследованный  от  TMenuView.  Устанавливает
        GrowMode  равным  gfGrowHiX.  Чтобы работали оперативные клавиши,
        поле Options устанавливается равным ofPreProcess. Поле Menu уста-
        навливается равным AMenu, обеспечивая пункты меню.

             См. также:  TMenuView.Init, флаги увеличения размера gfXXXX,
        флаги параметров ofXXXX, TMenuView.Menu

             Done
                  destructor Done; virtual;

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

             См. также: TMenuView.Done, процедуру DisposeMenu

             Draw
                  procedure Draw; virtual;

             Переопределяемость: используется редко.

             Отображает  строку  меню, используя назначенную по умолчанию
        палитру.  Чтобы  установить  для меню правильные значения цветов,
        считываются поля Name и Disabled каждой записи TMenuItem в связа-
        нном списке. Текущий (подсвеченный) элемент Current подсвечивает-
        ся.

             GetItemRect
                  procedure GetItemRect(Item: PMenuItem;
                                                var R: TRect); virtual;

             Переопределяемость: не переопределяется.

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

             См. также: TMenuView.GetItemRect

*-                                   Палитра
        -----------------------------------------------------------------

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

                                 1    2    3    4    5    6
                              ЙННННСННННСННННСННННСННННСНННН»
                CMenuView     є  2 і  3 і  4 і  5 і  6 і  7 є
                              ИННСНПННСНПННСНПННСНПННСНПННСНј
                                 і    і    і    і    і    і
        Обычный текст  ДДДДДДДДДДЩ    і    і    і    і    АДД Выбранная
        Текст запрещен ДДДДДДДДДДДДДДДЩ    і    і    і     клавиша
        Текст клавиши  ДДДДДДДДДДДДДДДДДДДДЩ    і    і     активации
        активации                               і    АДД Выбранный зап-
                                                і        рещенный текст
                                                АДДДДД Выбранный обычный
                                                       текст

*-      TMenuBox                                                   Menu
        -----------------------------------------------------------------

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

*-                                    Методы
        -----------------------------------------------------------------

             Init
                  constructor Init(var Bounds: TRect; AMenu: PMenu;
                                                AParentMenu: PMenuView);

             Init  настраивает  параметр  Bounds  таким образом, чтобы он
        соответствовал  длине и высоте элементов в AMenu, а затем создает
        вертикальное  меню,  вызывая  конструктор Init, унаследованный от
        TMenuView.

             Бит ofPreProcess поля Options устанавливается таким образом,
        что  будут  работать  оперативные клавиши. State устанавливается,
        чтобы  включить ofShadow. Поле Menu устанавливается равным AMenu,
        что обеспечивает выбор элементов меню. Поле ParentMenu устанавли-
        вается равным AParentMenu.

             См. также: TMenuView.Init, флаги состояния sfXXXX, флаги па-
        раметров ofXXXX, TMenuView.Menu, TMenuView.ParentMenu.

             Draw
                  procedure Draw; virtual;

             Переопределение: переопределяется редко.

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

             GetItemRect
                  procedure GetItemRect(Item:  PMenuItem;
                                                var R: TRect); virtual;

             Переопределение: используется редко.

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

             См. также: TMenuView.GetItemRect

*-                                   Палитра
        -----------------------------------------------------------------

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

                                 1    2    3    4    5    6
                              ЙННННСННННСННННСННННСННННСНННН»
                CMenuView     є  2 і  3 і  4 і  5 і  6 і  7 є
                              ИННСНПННСНПННСНПННСНПННСНПННСНј
                                 і    і    і    і    і    і
        Обычный текст  ДДДДДДДДДДЩ    і    і    і    і    АДД Выбранная
        Текст запрещен ДДДДДДДДДДДДДДДЩ    і    і    і     клавиша
        Текст клавиши  ДДДДДДДДДДДДДДДДДДДДЩ    і    і     активации
        активации                               і    АДД Выбранный зап-
                                                і      рещенный текст
                                                АДДДДД Выбранный обычный
                                                       текст

*-      Тип TMenuItem                                          Menus
        -----------------------------------------------------------------

             Описание:  TMenuItem = record
                           Next: PMenuItem;
                           Name: PString;
                           Command: Word;
                           Disabled: Boolean;
                           KeyCode: Word;
                           HelpCtx: Word;
                           case Integer of
                             0: (Param: PString);
                             1: (SubMenu: PMenu);
                           end;
                         end;

             Функция:  Тип  TMenuItem  представляет  собой  элемент меню,
        который  может быть обычным элементом, подменю или строкой-разде-
        лителем. Next указывает на следующий TMenuItem в списке элементов
        меню, или равен nil, если это последний элемент. Поле Name указы-
        вает  на строку, содержащую имя элемента меню или равно nil, если
        элемент  меню  является  строкой-разделителем.  Command  содержит
        событие-команду  (см.  константы cmXXXX), генерируемую при выборе
        элементов меню или 0, если элемент меню представляет собой подме-
        ню.  Disabled  равно  True, если пункт меню недоступен, и False в
        противном  случае. KeyCode содержит скан-код оперативной клавиши,
        связанной  с  пунктом  меню или 0, если с пунктом меню не связана
        оперативная  клавиша.  HelpCtx содержит номер контекста подсказки
        пункта  меню  (значение  hcNoContext указывает на то, что элемент
        меню не имеет контекста подсказки). Если пункт меню - это обычный
        пункт,  то  поле  Param  содержит  указатель  на строку параметра
        (отображаемый справа от элемента в TMenuBox) или nil,  если  эле-
        мент не имеет строки параметров.  Если элемент меню - это подменю
        (Command = 0), то Submenu указывает на структуру подменю.

             Записи TMenuItem создаются с использованием функций NewItem,
        NewLine и NewSubmenu.

             См. также: TMenu, TMenuView, NewItem, NewLine, NewSubMenu

*-      Тип TMenuStr                                           Menus
        -----------------------------------------------------------------

             Описание: TMenuStr = string[31];

             Функция:  Тип  строки,  используемый  NewItem  и NewSubMenu.
        Максимальный размер заголовка элемента меню составляет 31 символ.

             См. также: NewItem, NewSubMenu

*-      TMenuView                                                  Menu
        -----------------------------------------------------------------

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

*-                                     Поля
        -----------------------------------------------------------------

             Current                                  (только для чтения)
                  Current: PMenuItem;

             Указатель на выбранный в текущий момент пункт меню.

             Menu                                     (только для чтения)
                  Menu: PMenu;

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

             См. также:  TMenuView.FindItem,  TMenuView.GetItemRect,  тип
        TMenu

             ParentMenu                               (только для чтения)
                  ParentMenu: PMenuView;

             Указатель  на  отображаемый  элемент  меню, который является
        владельцем данного меню. Заметим, что TMenuView не является груп-
        пой.  Принадлежность здесь представляет собой гораздо более прос-
        тую концепцию, чем принадлежность в TGroup, и позволяет использо-
        вать  вложенные  меню:  выбирать подменю и возвращаться обратно в
        порождающие меню. Например, выбор в строке меню обычно приводит в
        выводу  "опускающегося"  меню.  Строка  меню представляет собой в
        этом случае порождающее меню для вертикального меню.

*-                                    Методы
        -----------------------------------------------------------------

             Init
                  constructor Init(var Bounds: TRect);

             Создает  отображаемый элемент меню с размерами Bounds, вызы-
        вая  конструктор  Init,  унаследованный  от  TView. Устанавливает
        EventMask  равным  evBroadcast.  Данный метод не предназначен для
        создания экземпляров объектов TMenuView. Он разработан скорее для
        вызова порожденными типами, такими, как TMenuBar и TMenuBox.

             См.   также:    TView.Init,   evBroadcast,    TMenuBar.Init,
        TMenuBox.Init.

             Load
                  constructor TMenuView.Load(var S: TStream);

             Создает  объект  отображаемого элемента меню и загружает его
        из  потока S, вызывая сначала конструктор Load, унаследованный от
        TView, а затем считывая элементы списка меню.

             См. также: TView.Load, TMenuView.Store

             Execute
                  function Execute: Word; virtual;

             Переопределение: не переопределяется.

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

             См. также: TGroup.ExecView

             FindItem
                  function FindItem(Ch: Char): PMenuItem;

             Возвращает  указатель на элемент меню, имеющий клавишу акти-
        вации  Ch  (подсвеченный символ). Если такой пункт меню не найден
        или  данный пункт меню недоступен, возвращает значение nil. Заме-
        тим, что регистр символа Ch (строчная или прописная буква) значе-
        ния не имеет.

             GetItemRect
                  procedure GetIterRect(Item: PMenuItem;
                                                var R: TRect); virtual;

             Переопределение: переопределяется всегда.

             Данный  метод возвращает в R прямоугольник, занимаемый теку-
        щим  пунктом  меню. Он используется для определения того, была ли
        кнопка  "мыши"  нажата  на  данном пункте меню. Чтобы отвечать на
        события  "мыши",  потомки  TMenuView должны переопределять данный
        метод.

             См. также: TMenuBar.GetItemRect, TMenuBox.GetItemRect

             GetHelpCtx
                  function GetHelpCtx: Word; virtual;

             Переопределение: иногда переопределяется.

             По  умолчанию данный метод возвращает контекст подсказки для
        данного пункта меню. Если это hcNoContext, то проверяется текущий
        контекст  в  порождающем меню. Если порождающее меню отсутствует,
        то GetHelpCtx возвращает hcNoContext.

             См. также: константы контекста подсказки hcXXXX

             GetPalette
                  function GetPalette: PPalette; virtual;

             Переопределение: иногда переопределяется.

             Возвращает  указатель  на  заданную  по  умолчанию   палитру
        CMenuBar.

             HandleEvent
                  procedure HandleEvent(var Event: TEvent); virtual;

             Переопределение: не переопределяется.

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

             См. также: TView.HandleEvent, TViewPutEvent

             HotKey
                  function HotKey(KeyCode: Word): PMenuItem;

             Возвращает  указатель на пункт меню, связанный с оперативной
        клавишей,  определяемой параметром KeyCode. Если такого пункта не
        существует  или  пункт  недоступен,  то  возвращает значение nil.
        Оперативные  клавиши  представляют  собой  обычно  функциональные
        клавиши  или  комбинации  с  клавишей  Alt, определяемые вызовами
        NewItem  и  NewSubMenu  в  InitMenuBar. Данный метод используется
        HandleEvent  для определения того, выбирается ли при нажатии кла-
        виши пункт меню.

             NewSubView
                  function NewSubView (var Bounds: TRect;
                            AMenu: PMenu; AParentMenu: PMenuView):
                                                PMenuView; virtual;

             Создает новое вертикальное меню с заданными значениями пара-
        метров  Bounds,  AMenu  и  AParentMenu, и возвращает указатель на
        него.

             Store
                  procedure Store(var S: TStream);

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

             См. также: TMenuView.Load

*-                                   Палитра
        -----------------------------------------------------------------

             Все  отображаемые элементы меню используют для отображения 2
        -  7 записей стандартной палитры прикладной программы назначенную
        по умолчанию палитру CMenuView.

                                 1    2    3    4    5    6
                              ЙННННСННННСННННСННННСННННСНННН»
                CMenuView     є  2 і  3 і  4 і  5 і  6 і  7 є
                              ИННСНПННСНПННСНПННСНПННСНПННСНј
                                 і    і    і    і    і    і
        Обычный текст  ДДДДДДДДДДЩ    і    і    і    і    АДД Выбранные
        Текст недоступныйДДДДДДДДДДДДДЩ    і    і    і     оперативные
        Текст оперативнойДДДДДДДДДДДДДДДДДДЩ    і    і     клавиши
              клавиши                           і    АДД Выбранный
                                                і     недоступный текст
                                                АДДДД Выбранный обычный
                                                      текст

*-      Объект TMonoSelector                                   ColorSel
        -----------------------------------------------------------------

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

             Подробности  о TMonoSelector включены в оперативную подсказ-
        ку.

*-      TMultiCheckBoxes                                       Dialogs
        -----------------------------------------------------------------

                                        Поля
        -----------------------------------------------------------------

             Flags
                  Flags: Word;

             Flags  представляет  собой  битовое поле, содержащее одну из
        констант cfXXXX.

             См. также: константы cfXXXX

             SelRange
                  SelRange: Byte;

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

             States
                  States: PString

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

*-                                    Методы
        -----------------------------------------------------------------

             Init
                  constructor Init(var Bounds:  TRect; AStrings:  PSItem;
                                      ASelRange: Byte; AFlags: Word;
                                                const AStates: String);

             Создает кластер многопозиционных кнопок с независимой фикса-
        цией,   вызывая  сначала  конструктор  Init,  унаследованный   от
        TCluster, а затем устанавливает  значения полей SelRange и  Flags
        равными  значениям,  переданным  в  параметрах ASelRange и AFlags
        соответственно, и выделяет динамическую память под копию  AStates
        и присваивает это значение States.

             ASelRange  показывает  число  состояний, которое может иметь
        каждая  кнопка  с независимой фиксацией. AFlags является одной из
        констант  cfXXXX,  указывающих, сколько бит из Value представляют
        каждую  многопозиционную  кнопку  с независимой фиксацией. AState
        содержит символ, показываемый для каждого возможного состояния.

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

             Load
                  constructor Load(var S: TStream);

             Создает  и загружает кластер многопозиционных кнопок с неза-
        висимой  фиксацией из потока S, вызывая сначала конструктор Load,
        унаследованный  от  TCluster,  а  затем  считывая значения полей,
        введенных TMultiCheckBoxes.

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

             Done
                  destructor Done; virtual;

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

             DataSize
                  function DataSize: Word; virtual;

             Возвращает  размер  данных,  переданных  GetData  и SetData,
        который равен SizeOf (Longint).

             См. также: TMultiChechBoxes.GetData, TMultiCheckBoxes.SetData

             Draw
                  procedure Draw; virtual;

             Переопределяемость: никогда не используется.

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

             GetData
                  procedure GetData (var Rec); virtual;

             Преобразует Rec в тип Longint и копирует в него Value.

             MultiMark
                  function MultiMark (Item: Integer): Byte; virtual;

             Возвращает  состояние кнопки с независимой фиксацией с номе-
        ром Item в кластере.

             Press
                  procedure Press (Item: Integer); virtual;

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

             SetData
                  procedure SetData (var Rec); virtual;

             Преобразует  Rec  в  тип  Longint  и копирует его значение в
        Value, после чего вызывает DrawView для перерисовки кнопок, чтобы
        отразить их новое состояние.

             Store
                  procedure Store(var S: TStream);

             Записывает  кластер многопозиционных кнопок в поток S, вызы-
        вая  сначала  метод  Store,  унаследованный  от TCluster, а затем
        записывает поля, введенные TMultiCheckBoxes.

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

*-      Тип TNode                                              Outline
        -----------------------------------------------------------------

             Описание:
                  TNode = record
                       Next:     PNode;
                       Text:     PString;
                       ChildList:PNode;
                       Expanded: Boolean;
                  end;

             Функция:  Объекты  иерархической структуры используют записи
        типа  TNode  для  хранения  списков связанных строк, составляющих
        иерархическую структуру. Каждая узловая запись содержит текст для
        этого  элемента иерархической структуры в ее поле Text. ChildList
        указывает  на  первый элемент в списке подчиненных узлов или nil,
        если  нет  элементов,  подчиненных  этому узлу. Next указывает на
        следующий узел того же уровня, что и текущий. Expanded равно True
        в случае, если отображаемый элемент иерархической структуры пока-
        зывает   подчиненные   отображаемые  элементы,  перечисленные   в
        ChildList, или False, если подчиненные узлы невидимы.

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

             См. также: процедуру DisposeNode, функцию NewNode

*-      TObject                                                 Objects
        -----------------------------------------------------------------

             TObject представляет собой начальную точку иерархии объектов
        Turbo  Vision. Как базовый объект, он не имеет порождающих объек-
        тов,   но  имеет  много  порожденных.  Фактически, за исключением
        TPoint   и   TRect,   все   стандартные   объекты  Turbo   Vision
        являются в итоге  производными  от TObject. Любой объект, который
        использует средства  потоков Turbo Vision, должен отлеживать свою
        "родословную" от TObject.

*-                                    Методы
        -----------------------------------------------------------------

             Init
                  constructor Init;

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

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

             Done
                  destructor Done; virtual;

             Выполняет  необходимую  очистку  и  освобождение  памяти для
        динамических объектов.

             Free
                  procedure Free;

             Уничтожает объект и вызывает деструктор Done.

*-      TOutLine                                               OutLine
        -----------------------------------------------------------------

             TOutLine  реализует  простой,  но полезный тип визуализатора
        иерархических структур. Он предполагает, что иерархическая струк-
        тура представляет собой связанный список записей типа TNode, так,
        что  каждый узел состоит из строки текста, указателя на порожден-
        ные узлы и указателя на следующий узел того же уровня.

*-                                     Поле
        -----------------------------------------------------------------
             Root
                  Root: PNode;

             Указывает на корневой узел дерева иерархии.

*-                                    Методы
        -----------------------------------------------------------------

             Init
                  constructor Init (var Bounds: TRect;
                                 AHScrollBar, AVScrollBar: PScrollBar;
                                                          ARoot: PNode);

             Создает  отображаемый элемент иерархической структуры, пере-
        давая  Bounds, AHScrollBar и AVScrollBar конструктору Init, унас-
        ледованному от TOutlineViewer. Устанавливает Root равным ARoot, а
        затем вызывает Update, для установки пределов прокрутки отобража-
        емого элемента, основываясь на данных, содержащихся в иерархичес-
        кой структуре.

             См. также: TScroller.Init

             Done
                  destructor Done; virtual;

             Уничтожает  отображаемый  элемент  иерархической  структуры,
        уничтожая  сначала корневой узел, который последовательно уничто-
        жает  все  порожденные  узлы,  а  затем вызывает деструктор Done,
        унаследованный от TScroller.

             См. также: TScroller.Done

             Adjust
                  procedure Adjust (Node: Pointer;
                                           Expand: Boolean); virtual;

             Устанавливает  значение  поля Expanded из Node равным значе-
        нию, переданному в Expand. Если Expand равно True, то порожденные
        узлы,  связанные  с  Node,  делаются  видимыми. Если Expand равно
        False, то порожденные Node узлы делаются невидимыми.

             GetRoot
                  function GetRoot: Pointer; virtual;

             Возвращает  Root, указывающий на вершину списка узлов иерар-
        хии.

             GetNumChildren
                  function GetNumChildren (Node: Pointer): Integer;
                                                               virtual;

             Возвращает количество узлов в списке ChildList узла Node или
        ноль в случае, если ChildList равно nil.

             GetChild
                  function GetChild (Node: Pointer;
                                           I: Integer): Pointer; virtual;

             GetText
                  function GetText (Node: Pointer): String; virtual;

             Возвращает строку, на которую указывает поле Text узла Node.

             HasChildren
                  function HasChildren (Node: Pointer): Boolean; virtual;

             Возвращает  True в случае, если ChildList узла Node не равен
        nil; в противном случае возвращает False.

             IsExpanded
                  function IsExpanded (Node: Pointer): Boolean; virtual;

             Возвращает значение поля Expanded узла Node.

*-      TOutlineViewer                                         Outline
        -----------------------------------------------------------------

             Тип объекта визуализатора иерархических структур обеспечива-
        ет абстрактные методы для отображения, раскрытия и прохождения по
        элементам  иерархической  структуры.  TOutlineViewer,  однако, не
        делает   предположений    об   элементах    структуры.    Потомки
        TOutlineViewer,  такие,   как TOutline, отображают  иерархические
        структуры со специфическими типами элементов.

*-                                     Поле
        -----------------------------------------------------------------

             Foc
                  Foc: Integer;

             Указывает номер активного узла иерархической структуры.

*-                                    Методы
        -----------------------------------------------------------------

             Init
                  constructor Init (var Bounds: TRect;
                                 AHScrollBar, AVScrollBar: PScrollBar);

             Создает  объект визуализатора иерархической структуры, вызы-
        вая  сначала конструктор Init, унаследованный от TScroller, пере-
        давая  Bounds,  AHScrollBar и AVScrollBar. Устанавливает GrowMode
        равным gfGrowHiX + gfGrowHiY и устанавливает Foc равным нулю.

             См. также: TScroller.Init

             Adjust
                  procedure Adjust (Node: Pointer;
                                           Expand: Boolean); virtual;

             Adjust  представляет собой абстрактный метод, которые порож-
        денные типы визуализатора иерархических структур должны переопре-
        делять   для   отображения порожденных  узлов в  случае равенства
        Expand  True,  и  скрыть  их  в  случае  равенства  Expand False.
        Вызывается  в случае, когда пользователь раскрывает или  скрывает
        содержимое  узла  Node.   Если  HasChildren  возвращает для  Node
        значение False, то Adjust  никогда не будет вызываться  для этого
        узла.

             См. также: TOutlineViewer.HasChildren

             CreateGraph
                  function CreateGraph (Level: Integer; Lines: Longint;
                                Flags: Word; LevWidth, EndWidth: Integer;
                                            const Chars: String): String;

             Выводит   графическую  строку,  пригодную  для  возврата  из
        GetGraph.  Level  указывает   уровень  иерархической   структуры.
        Lines представляет  собой набор бит, описывающих уровень, имеющий
        метку  "продолжение"    (обычно    это    вертикальная    линия).
        Например, если установлен  бит   3,  то  уровень   3 продолжается
        за пределы этого уровня.

             Flags  дает  дополнительную информацию о том, как изображать
        окончания  графика  (см. константы ovXXXX). LevWidth представляет
        собой  число символов, которое надо отступить для каждого уровня.
        EndWidth представляет собой длину последних символов.

             График делится на две части: метки уровня и окончание графи-
        ка узлов. Метки уровня состоят из символа Метки Уровня, разделен-
        ного Заполнителем Уровня. То, какие метки присутствуют, определя-
        ется Lines.

             Окончание  графика  создается  помещением одного из символов
        Конец  первого, за которым следуют EndWidth - 4 символов Заполни-
        теля  конца,  за  которыми  следует  символ Конец порожденного, а
        затем - символ Скрыть/Раскрыть. Если EndWidth равно 2, то исполь-
        зуются  символы  Конец  первого и Скрыть/Раскрыть.  Если EndWidth
        равно 1, то используется только символ Скрыть/Раскрыть. Flags оп-
        ределяет символы, которые будут выбираться.

             В строке  Chars содержатся следующие символы:

                     1    2     3     4    5   6    7    8
                   ЙННННСННННСНННННСНННННСНННСНННННСНННСНННН»
                   є    і і  і  Г  і  А  і - і  -  і + і  - є
                   ИНСННПНШННПНСПННПННШННПНСНПННСННПНСНПНСННј
        Заполнитель  і    і    і      і    і    і    і   А Раскрытый
        уровня  ДДДДДЩ    і    і      і    і    і    і
                          і    і      і    і    і    і
        Метка             і    і      і    і    і    АДДД Скрытый
        уровня ДДДДДДДДДДДЩ    і      і    і    і
                               і      і    і    і
        Конец                  і      і    і    і           Конец
        первого                і      і    і    АДДДДДДДДДДДпорожденного
        (не последний) ДДДДДДДДЩ      і    і
                                      і    і                  Заполнитель
        Конец                         і    АДДДДДДДДДДДДДДДДД конца
        первого                       і
        (последний) ДДДДДДДДДДДДДДДДДДЩ

        -----------------------------------------------------------------
          Символ      Обычный вид     Описание
        -----------------------------------------------------------------
          Заполнитель         ' '     Используется между маркерами уровня
          уровня

          Метка                'і'    Используется для отметки уровней,
          уровня                      активных в настоящий момент.

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

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

          Заполнитель          '-'    Используется в качестве заполнителя
          конца                       концевой части изображения узла

          Конец                '-'    В случае EndWidth>LevWidth этот
          порожденного                символ будет помещен в верхнюю
                                      часть маркеров для следующего
                                      уровня. Если он используется, то
                                      это обычно T.

          Скрытый              '+'    Помещается в качестве последнего
                                      символа последнего узла в случае,
                                      если уровень имеет потомков, и они
                                      не раскрыты.

          Раскрытый            '-'    Помещается в качестве последнего
                                      символа последнего узла в случае,
                                      если уровень имеет потомков, и они
                                      раскрыты.
        -----------------------------------------------------------------

             Например,  GetGraph вызывает CreateGraph со следующими пара-
        метрами:

             CreateGraph (Level, Lines, Flags, 3, 3,
                                      ' '#179#195#192#196#196'+'#196);

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

             CreateGraph (Level, Lines, Flags, 3, 3,
                                      ' '#186#204#200#205#205'+'#205);

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

             CreateGraph (Level, Lines, Flags, 2, 4,
                                      ' '#179#195#192#196#194'+'#196);

             Draw
                  procedure Draw; virtual;

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

             Строка,  содержащая  активный  узел  структуры, изображается
        более  отчетливым  цветом. Узлы, потомки которых не отображаются,
        показываются выделенными.

             См. также: TOutlineViewer.GetGraph, TOutlineViewer.GetText

             ExpandAll
                  procedure ExpandAll (Node: Pointer);

             Если узел Node имеет порожденные узлы, то ExpandAll последо-
        вательно  раскрывает  Node,  вызывая  Adjust с параметром True, а
        затем  раскрывает  все  порожденные  узлы,  вызывая ExpandAll для
        каждого из них.

             См. также: TOutlineViewer.Adjust

             FirstThat
                  function FirstThat (Test: Pointer): Pointer;

             FirstThat последовательно проходит по узлам структуры, вызы-
        вая  функцию, на которую указывает Test, до тех пор, пока Test не
        вернет True. Test должен указывать на локальную функцию типа far,
        имеющую следующий синтаксис:

             function MyIter (Cur: Pointer; Level, Position: Integer;
                                           Lines: LongInt; Flags: Word):
                                                          Boolean; far;

             Параметры означают следующее:

             Cur       Указатель на проверяемый узел.

             Level     Уровень узла (сколько узлов находится над ним),
                       отсчитываемый от  нуля. Может  быть использован  в
                       вызове GetGraph или CreateGraph.

             Position  Порядок узла, в котором он отображается. Может
                       использоваться  в  вызове  Focused  или  Selected.
                       Если находится в диапазоне, то Position -  Delta.Y
                       представляет  собой  положение,  в  котором   узел
                       изображается в отображаемом элементе.

             Lines     Биты, указывающие активные уровни. Может
                       использоваться в вызовах GetGraph или CreateGraph.
                       Указывает, какую  горизонтальную линию  необходимо
                       рисовать.

             Flags     Различные флаги рисования (см. константы ovXXXX).
                       Могут  использоваться  в   вызовах  GetGraph   или
                       CreateGraph.

             Focused
                  procedure Focused (I: Integer); virtual;

             Вызывается  в каждом случае, когда узел становится активным.
        Параметр I указывает положение узла структуры, который стал акти-
        вным. По умолчанию Focused просто устанавливает Foc равным I.

             ForEach
                  function ForEach (Action: Pointer): Pointer;

             Проходит  последовательно по всем узлам. Action указывает на
        локальную процедуру типа far, которую ForEach вызывает для каждо-
        го  узла иерархической структуры. Синтаксис этой итеративной про-
        цедуры следующий:

             procedure MyIter (Cur: Pointer; Level, Position: Integer;
                                      Lines: LongInt; Flags: Word); far;

             Параметры означают следующее:

             Cur       Указатель на проверяемый узел.

             Level     Уровень узла (сколько узлов находится над ним),
                       отсчитываемый от нуля.  Может использоваться в вы-
                       зове GetGraph или CreateGraph.

             Position  Порядок узла, в котором он отображается. Может
                       использоваться  в  вызове  Focused  или  Selected.
                       Если находится в диапазоне, то Position -  Delta.Y
                       представляет  собой  положение,  в  котором   узел
                       изображается в отображаемом элементе.

             Lines     Биты, указывающие активные уровни. Может
                       использоваться в вызовах GetGraph или CreateGraph.
                       Указывает, какую  горизонтальную линию  необходимо
                       рисовать.

             Flags     Различные флаги рисования (см. константы ovXXXX).
                       Могут  использоваться  в   вызовах  GetGraph   или
                       CreateGraph.

             GetChild
                  function GetChild (Node: Pointer; I: Integer):
                                                     Pointer; virtual;

             GetChild представляет собой абстрактный метод, который поро-
        жденные типы визуализаторов иерархических структур должны переоп-
        ределять  для  возврата  указателя  на  I-го потомка данного узла
        Node.

             Если  HasChildren  возвращает  False, что означает тот факт,
        что  Node  не имеет порожденных узлов, то GetChild для этого узла
        вызываться не будет. Можно смело надеяться на то, что если визуа-
        лизатор  иерархической  структуры вызывает GetChild, то этот узел
        имеет по крайней мере I порожденных узлов.

             См. также: TOutlineViewer.HasChildren

             GetGraph
                  function GetGraph (Level: Integer;
                                 Lines: Longint; Flags: Word): String;

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

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

             GetNumChildren
                  function GetNumChildren (Node: Pointer):
                                                     Integer; virtual;

             GetNumChildren представляет собой абстрактный метод, который
        порожденные  типы  визуализаторов  иерархических  структур должны
        переопределять  для возврата количества порожденных узлов в Node.
        Если  HasChildren  возвращает  для  Node False, то GetNumChildren
        никогда не будет вызываться.

             См. также: TOutlineViewer.HasChildren

             GetNode
                  function GetNode (I: Integer): Pointer;

             Возвращает  указатель  на  I-й  узел в структуре; т.е. узел,
        изображаемый в I линиях от верхней части всей структуры.

             GetPalette
                  function GetPalette: PPalette; virtual;

             Возвращает  указатель  на установленную по умолчанию палитру
        иерархических структур, COutlineViewer.

             GetRoot
                  function GetRoot: Pointer; virtual;

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

             GetText
                  function GetText (Node: Pointer): String; virtual;

             GetText представляет собой абстрактный метод, который порож-
        денные  типы визуализаторов иерархических структур должны переоп-
        ределять для возврата текста Node.

             HandleEvent
                  procedure HandleEvent (var Event: TEvent); virtual;

             Обрабатывает    большую    часть  событий,   вызывая   метод
        HandleEvent,   унаследованный   от   TScroller,   а  обрабатывает
        некоторые события от мыши и клавиатуры.

             HasChildren
                  function HasChildren (Node: Pointer): Boolean; virtual;

             HasChildren  представляет  собой  абстрактный метод, который
        порожденные  типы  визуализаторов  иерархических  структур должны
        переопределять для возврата True в случае, если Node имеет порож-
        денные узлы, и False, если не имеет.

             Если  HasChildren  возвращает False для данного узла, то для
        этого  узла  никогда  не  вызываются  следующие  функции: Adjust,
        ExpandAll, GetChild, GetNumChildren и IsExpanded.

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

             IsExpanded
                  function IsExpanded (Node: Pointer): Boolean; virtual;

             IsExpanded  представляет  собой  абстрактный  метод, который
        порожденные  типы  визуализаторов  иерархических  структур должны
        переопределять  для возврата True в случае, если порожденные узлы
        Node  следует  изображать.  Если  HasChildren возвращает для Node
        False, то IsExpanded никогда не будет вызываться для этого узла.

             IsSelected
                  function IsSelected (I: Integer): Boolean; virtual;

             Возвращает  True  в  случае,  если узел выбран. По умолчанию
        TOutlineViewer предполагает, что иерархическая структура допуска-
        ет  выбор  одного элемента, поэтому она возвращает True в случае,
        если  Node является Focused. Для реализации множественного выбора
        необходимо переопределять IsSelected.

             Selected
                  procedure Selected (I: Integer); virtual;

             Вызывается  при  каждом выборе узла пользователем при помощи
        клавиатуры  или  мыши. Параметр I указывает положение в структуре
        вновь выбранного элемента.

             По  умолчанию  Selected  не  делает ничего; порожденные типы
        могут  переопределять Selected для выполнения определенных дейст-
        вий в ответ на выбор.

             SetState
                  procedure SetState (AState: Word;
                                           Enable: Boolean); virtual;

             Устанавливает  или  сбрасывает  флаги  состояния  AState для
        отображаемого элемента, вызывая метод SetState, унаследованный от
        TScroller.  Если  новое  состояние  включает изменение фокуса, то
        SetState вызывает DrawView для перерисовки структуры.

             См. также: TScroller.SetState

             Update
                  procedure Update;

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

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

*-                                   Палитра
        -----------------------------------------------------------------

             Объекты  визуализатора иерархических структур используют для
        отображения 6 - 8 записей стандартной палитры окна назначенную по
        умолчанию палитру COutlineViewer.

                                    1    2    3    4
                                 ЙННННСННННСННННСНННН»
              COutlineViewer     є  6 і  7 і  8 і  8 є
                                 ИННСНПННСНПННСНПННСНј
                                    і    і    і    і
           Обычный цвет   ДДДДДДДДДДЩ    і    і    АДДД Цвет не раскрытого
           Цвет активного   ДДДДДДДДДДДДДЩ    АДДДДДДДДДЦвет выбранного

*-      Тип TPalette                                           Views
        -----------------------------------------------------------------

             Описание: TPalette = String;

             Функция:  Тип строки, используемый для описания палитр Turbo
        Vision.

             См. также: методы GetPalette

*-      TParamText                                              Dialogs
        -----------------------------------------------------------------

             Объект    TParamText    является  производным   от   объекта
        TStaticText,  который  для  форматированного  вывода   использует
        параметризованные текстовые строки, применяя для этого  процедуру
        FormatStr.

*-                                     Поля
        -----------------------------------------------------------------

             ParamCont
                  ParamCont: Integer;

             ParamCount  указывает  число   параметров,  содержащихся   в
        ParamList.

             См. также: TParamText.ParamList

             ParamList
                  ParamList: Pointer;

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

*-                                    Методы
        -----------------------------------------------------------------

             Init

                  constructor Init(var Bounds: TRect; AText: String;
                                                AParamCount: Integer);

             Создает  объект  статического  текста,  вызывая  конструктор
        Init, унаследованный от TStaticText, с заданным параметром Bounds
        и  текстовой  строкой  AText,  которая  может содержать описатели
        формата в форме %[-][nnn]X, и будет замещаться параметрами, пере-
        данными  во  время  выполнения.  Число  параметров,  переданных в
        ParamCount, присваивается полю ParamCount.

             Описатели  формата  подробно  описаны в разделе, посвященном
        процедуре FormatStr.

             См. также: TStaticText.Init, процедуру FormatStr

             Load
                  constructor Load(var S: TStream);

             Создает объект TParamText и загружает его значение из потока
        S,   вызывая    сначала  конструктор   Load,  унаследованный   от
        TStaticText, а затем читает из потока поле ParamCount.

             См. также: TStaticText.Load

             DataSize
                  function DataSize: Word; virtual;

             Возвращает  размер  данных,  требуемый  параметрами объекта,
        т.е. ParamCount*SizeOf(LongInt).

             GetText
                  procedure GetText(var S: String); virtual;

             Создает  форматированную строку текста в S, выполняя объеди-
        нение параметров, заданных в ParamList, в текстовую строку Text с
        помощью вызова FormatStr(S, Text^, ParamList^).

             См. также: процедуру FormatStr

             SetData
                  procedure SetData(var Rec); virtual;

             Этот  отображаемый  элемент читает DataSize байт в ParamList
        из Rec.

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

             Store
                  procedure Store(var S: TStream);

             Сохраняет  объект  в  потоке S, вызывая сначала метод Store,
        унаследованный  от  TStaticText,  а  затем записывая в поток поле
        ParamCount.

             См. также: TStaticText.Store

*-                                   Палитра
        -----------------------------------------------------------------

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

                                       1
                                     ЙННН»
                     CStaticText     є 6 є
                                     ИНСНј
                           Текст  ДДДДДЩ

*-      TPoint                                                 Objects
        -----------------------------------------------------------------

             TPoint- это простой объект, представляющий точку на экране.

*-                                     Поля
        -----------------------------------------------------------------

             X
                  X: Integer;

             Х - это номер столбца точки на экране.

             Y
                  Y: Integer;

             Y - это номер строки точки на экране.

*-      Тип TPicResult                                         Validate
        -----------------------------------------------------------------

             Описание:
                  TPicResult = (prComplete, prIncomplete, prEmpty,
                            prError, prSyntax, prAmbiguous,
                            prIncompNoFill);

             Функция: TPicResult является типом результата, возвращаемого
        методом Picture, унаследованным от TPXPictureValidator.

             См. также: TPXPictureValidator.Picture

*-      TProgram                                                   App
        -----------------------------------------------------------------

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

             Объект TProgram является производным от TGroup, поскольку он
        должен содержать объекты TDeskTop, TStatusLine и TMenuBar.

             Внимание!  Базовый  объект программы TProgram имеет в версии
        2.0 три новых метода. CanMoveFocus используется внутренне програ-
        ммой  для  определения  того, можно ли открыть окно в тот момент,
        когда  пользователь  находится  в окне определителя допустимости.
        Другие  два  метода представляют собой надежное средство введения
        окон и запуска диалоговых окон в оперативной области экрана.

*-                                    Методы
        -----------------------------------------------------------------

             Init
                  constructor Init;

             Переопределяемость: иногда переопределяется.

             Устанавливает  глобальную  переменную  Application    равной
        @Self;  вызывает InitScreen для инициализации переменных, завися-
        щих  от  режима экрана; вызывает конструктор Init, унаследованный
        от TGroup, передавая прямоугольник Bounds, равный полному экрану;
        устанавливает   поле  State  равным  sfVisible  +  sfSelected   +
        sfFocused   +   sfModal +  sfExposed; устанавливает  поле Options
        равным 0.   Устанавливает   поле Buffer  равным адресу  экранного
        буфера, заданного в ScreenBuffer. Наконец, вызывает  InitDeskTop,
        InitStatusLine   и   InitMenuBar  и  вставляет  эти  отображаемые
        элементы в группу TProgram.

             См. также:        TGroup.Init,         TProgram.InitDeskTop,
        TProgram.InitStatusLine, TProgram.InitMenuBar

             Done
                  destructor Done; virtual;

             Переопределяемость: иногда переопределяется.

             Освобождает объекты DeskTop, MenuBar и StatusLine и устанав-
        ливает  глобальную  переменную Application равной nil, после чего
        вызывает деструктор Done, унаследованный от TGroup.

             См. также: TGroup.Done

             CanMoveFocus
                  function CanMoveFocus: Boolean;

             CanMoveFocus  возвращает значение True в случае, если опера-
        тивная  область  экрана может беспрепятственно изменить выбранное
        окно. Этот метод определяет, возможно ли сделать это путем вызова
        оперативной  областью  экрана  метода  Valid  ее активного окна с
        командой cmReleasedFocus.

             Если  окно  содержит недопустимые данные, которые, возможно,
        не будут признаны допустимыми в случае, если пользователь переме-
        стит  фокус из этого окна, то его метод Valid должен вернуть зна-
        чение False, тем самым препятствуя потере окном фокуса.

             ExecuteDialog
                  function ExecuteDialog (P: PDialog;
                                                Data: Pointer): Word;

             Вызывает ValidView с целью удостовериться в том, что P явля-
        ется  допустимым диалоговым окном, после чего запускает P в рабо-
        чей  области.   При  закрытии   диалогового  окна   пользователем
        ExecuteDialog уничтожает  диалоговое окно  и возвращает  команду,
        завершившую режимное  состояние,  возвращенную   ExexView.   Если
        ValidView  возвращает nil,  что означает,  что диалоговое окно не
        было допустимым, ExecuteDialog возвращает cmCancel.

             Если  значение Data отлично от nil, то ExecuteDialog автома-
        тически обрабатывает установку и считывание управляющих элементов
        диалогового  окна, используя в качестве записи данных Data^. Сна-
        чала  для  установки управляющих элементов ExecuteDialog вызывает
        P^.SetData.  Если  пользователь не прекращает работу с диалоговым
        окном,   то   перед   уничтожением   объекта   диалогового   окна
        ExecuteDialog вызывает P^.GetData  для считывания новых  значений
        управляющих элементов диалогового окна.

             Внимание! Необходимо вызывать метод объекта прикладной прог-
        раммы  ExecuteDialog,  а  не  непосредственно  Desktop^.ExecView.
        ExecuteDialog  представляет  собой  гораздо  более удобный способ
        обработки  установки  и считывания значений органов управления, и
        также имеет встроенную проверку допустимости.

             См. также: TProgram.ValidView, TGroup.ExecView

             GetEvent
                  procedure GetEvent(var Event: TEvent); virtual;

             Переопределяемость: используется редко.

             По  умолчанию  метод TView.GetEvent просто вызывает GetEvent
        своего владельца и, поскольку TProgram (или TApplication) в коне-
        чном  итоге являются владельцем любого отображаемого элемента, то
        любой  вызов  GetEvent  будет приводить к TProgram.GetEvent (если
        только  какой-либо отображаемый элемент попутно не переопределяет
        GetEvent).

             TРrogram.GetEvent  вначале  проверяет,  не  сгенерировал  ли
        PutEvent  отложенное событие. Если да, то GetEvent возвращает это
        отложенное  событие.  Если  нет  отложенного события, то GetEvent
        вызывает GetMouseEvent. Если возвращается evNothing, то вызывает-
        ся  GetKeyEvent;  если  оба они возвращают evNothing, указывая на
        то,   что  нет  ввода  от  пользователя,  то  GetEvent   вызывает
        TProgram.Idle,  чтобы   запустить  "фоновые" задачи,  выполняемые
        во время ожидания прикладной программой ввода от пользователя. До
        возврата GetEvent передает все события evKeyDown и evMouseDown  в
        StatusLine, для  преобразования  событий  от оперативных клавиш в
        соответствующие evCommand.

             См. также: TProgram.PutEvent, GetMouseEvent, GetKeyEvent

             GetPalette
                  function GetPalette: PPalette; virtual;

             Переопределяемость: иногда переопределяется.

             Возвращает указатель на палитру, заданную индексом палитры в
        глобальной переменной AppPalette. TProgram поддерживает три пали-
        тры:  apColor, apBlackWhite и apMonochrome. Переменная AppPalette
        инициализируется TProgram.InitScreen.

             См. также: TProgram.InitScreen, AppPalette, константы apXXXX

             HandleEvent
                  procedure HandleEvent(var Event: TEvent); virtual;

             Переопределяемость: всегда переопределяется.

             Обрабатывает    большую    часть  событий,   вызывая   метод
        HandleEvent, унаследованный  от TGroup.  Обрабатывает события  от
        клавиатуры от Alt+1 до Alt+9, генерируя evBroadcast со  значением
        Command,  равным   cmSelectWindowNum   и   значением  InfoInt   в
        диапазоне  1..9.    TWindow.HandleEvent    реагирует  на    такие
        сообщения, выбирая окно с данным номером.

             Обрабатывает  событие evCommand со значением Command, равным
        cmQuit, вызывая EndModal(cmQuit), что приводит к завершению прик-
        ладной программы.

             TProgram.Handle  почти  всегда переопределяется для введения
        обработки команд, специфичных для Вашей прикладной программы.

             См. также: TGroup.HandleEvent

             Idle
                  procedure Idle; virtual;

             Переопределяемость: иногда переопределяется.

             Idle  вызывается из TProgram.GetEvent каждый раз, когда оче-
        редь  событий  пуста, позволяя программе выполнять фоновые задачи
        при ожидании ввода от пользователя.

             По  умолчанию  TProgram.Idle  вызывает   StatusLine^.Update,
        чтобы  разрешить строке состояния обновлять себя в соответствии с
        текущим  контекстом подсказки. Затем, если набор команд изменился
        после  последнего  вызова TProgram.Idle, генерируется evBroadcast
        со значением Command, равным cmCommandSetChanged, чтобы разрешить
        отображаемому  элементу,  который зависит от этого набора команд,
        разрешить или запретить себя.

             Внимание! Если Вы переопределяете Idle, убедитесь в том, что
        Вы вызываете наследуемый метод Idle. Убедитесь также, что задачи,
        выполняемые Вашим методом Idle, не занимают слишком много времени
        в  программе, поскольку это будет блокировать ввод пользователя и
        сильно замедлит время реакции программы.

             InitDeskTop
                  procedure InitDeskTop; virtual;

             Переопределяемость: переопределяется редко.

             Создает объект TDeskTop для прикладной программы и сохраняет
        указатель  на  него  в   глобальной  переменной  DeskTop.   Метод
        InitDeskTop   вызывается   в   TProgram.Init и  никогда не должен
        вызываться  напрямую.  InitDeskTop  может  быть переопределен для
        создания потомка  TDeskTop,  определенного пользователем,  вместо
        определенного по умолчанию.

             См. также: TProgram.Init, TDeskTop, TWindow.Init

             InitMenuBar
                  procedure InitMenuBar; virtual;

             Переопределяемость: всегда переопределяется.

             Создает  объект TMenuBar для программы и сохраняет указатель
        на  него в глобальной переменной MenuBar. Метод InitMenuBar вызы-
        вается в TProgram.Init и никогда не должен вызываться непосредст-
        венно.  Программа  почти  всегда  переопределяет  InitMenuBar для
        создания  пользовательской  полосы  меню  вместо  определенной по
        умолчанию пустой.

             См. также: TProgram.Init, TMenuBar, TWindow.Init

             InitScreen
                  procedure InitScreen; virtual;

             Переопределяемость: иногда переопределяется.

             Вызывается  из TProgram.Init и TProgram.SetScreenMode каждый
        раз,  когда  режим  экрана  инициализируется  или изменяется. Это
        метод, который в действительности выполняет обновление и настрой-
        ку  переменных,  определяемых режимом экрана, для размера "тени",
        маркеров и палитры прикладной программы.

             См. также: TProgram.Init, TProgram.SetScreenMode

             InitStatusLine
                  procedure InitStatusLine; virtual;

             Переопределяемость: всегда переопределяется.

             Создает  объект TStatusLine для программы и сохраняет указа-
        тель  на  него в глобальной переменной StatusLine. InitStatusLine
        вызывается  в TProgram.Init и никогда не должен вызываться напря-
        мую.  InitStatusLine  почти  всегда переопределяется для создания
        полосы состояния, определенной пользователем, вместо определенной
        по умолчанию.

             См. также: TProgram.Init, TStatusLine

             InsertWindow
                  function InsertWindow (P: PWindow): PWindow;

             Вызывает  ValidView  с целью убедиться в том, что P является
        допустимым окном, и если это так, вызывает CanMoveFocus для того,
        чтобы проверить, вызовет ли введение нового окна проблемы в акти-
        вном окне, связанные с допустимостью. Если CanMoveFocus возвраща-
        ет True, то InsertWindow вводит P в оперативную область и возвра-
        щает P. Если CanMoveFocus возвращает False, то InsertWindow унич-
        тожает P и возвращает nil.

             Внимание! Необходимо вызывать метод объекта прикладной прог-
        раммы  InsertWindow,   а  не   непосредственно   Desktop^.Insert.
        InsertWindow  не  только  осуществляет  автоматическую   проверку
        допустимости объектов окон, но она также использует  CanMoveFocus
        для защиты данных в активном окне.

             См. также: TProgram.CanMoveFocus, TGroup.Insert

             OutOfMemory
                  procedure OutOfMemory; virtual;

             Переопределяемость: часто переопределяется.

             Метод  OutOfMemory  вызывается  из TProgram.ValidView каждый
        раз,  когда  LowMemory  имеет  значение  True. OutOfMemory должна
        предупредить  пользователя  о  том,  что  для выполнения операции
        недостаточно   памяти.   Например,  с  использованием   программы
        MessageBox из модуля StdDlg:

                 procedure TMyApp.OutOfMemory;
                 begin
                   MessageBox('Not enough memory to complete operation.',
                              nil, mfError + mfOKButton);
                 end;

              См. также: TProgram.ValidView, LowMemory

             PutEvent
                  procedure PutEvent(var Event: TEvent); virtual;

             Переопределяемость: переопределяется редко.

             По  умолчанию  TView.PutEvent просто вызывает метод PutEvent
        своего  владельца и, поскольку объект TProgram (или TApplication)
        в конечном счете является владельцем любого отображаемого элемен-
        та,  то каждый вызов PutEvent будет приводить к TProgram.PutEvent
        (если   только  отображаемый  элемент  попутно  не  переопределил
        PutEvent).

             Метод  Program.PutEvent  сохраняет  копию  записи PutEvent в
        буфере, и следующий вызов GetEvent будет возвращать эту копию.

             См. также: TProgram.GetEvent, TView.PutEvent

             Run
                  procedure Run; virtual;

             Переопределяемость: используется редко.

             Выполняет  TProgram, вызывая метод Execute (который TProgram
        наследует от TGroup).

             См. также: TGroup.Execute

             SetScreenMode
                  procedure SetScreenMode(Mode: Word);

             Устанавливает режим экрана. Mode - одна из констант (smCO80,
        smBW80 или smMono) с необязательными smFont8x8 для выбора 43- или
        50-строчного режима адаптеров EGA или VGA. SetScreenMode "скрыва-
        ет" курсор "мыши", вызывает SetVideoMode для изменения режима эк-
        рана, вызывает InitScreen для инициализации переменных, зависящих
        от режима экрана, присваивает ScreenBuffer TProgram.Buffer, вызы-
        вает ChangeBounds с новым прямоугольником экрана и,  наконец, по-
        казывает курсор "мыши".

             См. также:  TProgram.InitScreen,   SetVideoMode,   константы
        smXXXX

             ValidView
                  function TProgram.ValidView(P: PView): PView;

             Проверяет допустимость  вновь созданных отображаемых элемен-
        тов, возвращая Р в случае, если отображаемый элемент является до-
        пустимым, и nil - если нет. Во-первых, если Р имеет значение nil,
        возвращается значение nil.  Во-вторых, если LowMemory равно True,
        то при вызове ValidView отображаемый элемент, заданный в Р, осво-
        бождается,  вызывается метод OutOfMemory и возвращается  значение
        nil. В-третьих, если вызов P^.Valid(cmValid) возвращает False, то
        отображаемый элемент освобождается и возвращается значение nil. В
        противном  случае  отображаемый  элемент считается допустимым,  и
        возвращается указатель на этот отображаемый элемент Р.

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

             См. также: LowMemory, TProgram.OutOfMemory, методы Valid

*-                                   Палитры
        -----------------------------------------------------------------

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

             Внимание!  В  версии  2.0 стандартные палитры программы были
        расширены,  и включают диалоговые окна синего и голубого цветов в
        дополнение  к существующим по умолчанию серым. Палитры версии 1.0
        CColor,  CBlackWhite и CMonochrome по-прежнему включены в App для
        обеспечения  совместимости  с  существующими программами, которые
        расширили существующие по умолчанию палитры.

             В   версии   2.0   палитры   CAppColor,   CAppBlackWhite   и
        CAppMonochrome  идентичны  палитрам версии 1.0, однако элементы с
        64 по 127 новые.

             Первый  элемент  используется в TBackground для цветов фона.
        Элементы со 2 по 7 используются меню и строкой состояния.

                          1   2   3   4   5   6   7
                        ЙНННСНННСНННСНННСНННСНННСННН»
        CAppColor       є$71і$70і$78і$74і$20і$28і$24є
                        МНННПНННПНННПНННПНННПНННПННН№
                        МНННСНННСНННСНННСНННСНННСННН№
        CAppBlackWhite  є$70і$70і$78і$7Fі$07і$07і$0Fє
                        МНННПНННПНННПНННПНННПНННПННН№
                        МНННСНННСНННСНННСНННСНННСННН№
        CAppMonochrome  є$70і$07і$07і$0Fі$70і$70і$70є
                        ИНСНПНСНПНСНПНСНПНСНПНСНПНСНј
           Фон        ДДДДЩ   і   і   і   і   і   АДД Выбор клавиши
           Нормальный текст ДДЩ   і   і   і   і        активации
           Запрещенный текст ДДДДДЩ   і   і   АДДДДДД Запрещенный выбор
           Текст клавиши    ДДДДДДДДДДЩ   АДДДДДДДДДД Нормальный выбор
            активации

             Элементы в 8 по 15 используются синими окнами.

                          8   9   10  11  12  13  14  15
                        ЙНННСНННСНННСНННСНННСНННСНННСННН»
        CAppColor       є$17і$1Fі$1Aі$31і$31і$1Eі$71і$00є
                        МНННПНННПНННПНННПНННПНННПНННПННН№
                        МНННСНННСНННСНННСНННСНННСНННСННН№
        CAppBlackWhite  є$07і$0Fі$07і$70і$70і$07і$70і$00є
                        МНННПНННПНННПНННПНННПНННПНННПННН№
                        МНННСНННСНННСНННСНННСНННСНННСННН№
        CAppMonochrome  є$07і$0Fі$07і$70і$70і$07і$70і$00є
                        ИНСНПНСНПНСНПНСНПНСНПНСНПНСНПНСНј
           Рамка пассивна Щ   і   і   і   і   і   і   АД Зарезервировано
           Рамка активна ДДДДДЩ   і   і   і   і   АД Выделенный текст
                                  і   і   і   і      прокрутки
           Пиктограмма  ДДДДДДДДДДЩ   і   і   АДДДДД Нормальный текст
           рамки                      і   і          прокрутки
           Страница полосы    ДДДДДДДДЩ   АДДДДДДДДД Зарезервировано
           прокрутки

             Элементы с 16 по 23 используются голубыми окнами.

                          16  17  18  19  20  21  22  23
                        ЙНННСНННСНННСНННСНННСНННСНННСННН»
        CAppColor       є$37і$3Fі$3Aі$13і$13і$3Eі$21і$00є
                        МНННПНННПНННПНННПНННПНННПНННПННН№
                        МНННСНННСНННСНННСНННСНННСНННСННН№
        CAppBlackWhite  є$07і$0Fі$07і$70і$70і$07і$70і$00є
                        МНННПНННПНННПНННПНННПНННПНННПННН№
                        МНННСНННСНННСНННСНННСНННСНННСННН№
        CAppMonochrome  є$07і$0Fі$07і$70і$70і$07і$70і$00є
                        ИНСНПНСНПНСНПНСНПНСНПНСНПНСНПНСНј
           Рамка пассивна Щ   і   і   і   і   і   і   АДД Зарезервировано
           Рамка активна ДДДДДЩ   і   і   і   і   АД Выделенный текст
                                  і   і   і   і      элемента прокрутки
           Пиктограмма  ДДДДДДДДДДЩ   і   і   АДДДД Нормальный текст
           рамки                      і   і         элемента прокрутки
           Страница полосы    ДДДДДДДДЩ   АДДДДДДДД Зарезервировано
           прокрутки

             Элементы с 24 по 31 используются серыми окнами.

                          24  25  26  27  28  29  30  31
                        ЙНННСНННСНННСНННСНННСНННСНННСННН»
        CAppColor       є$70і$7Fі$7Aі$13і$13і$70і$7Fі$00є
                        МНННПНННПНННПНННПНННПНННПНННПННН№
                        МНННСНННСНННСНННСНННСНННСНННСННН№
        CAppBlackWhite  є$70і$7Fі$7Fі$70і$07і$70і$07і$00є
                        МНННПНННПНННПНННПНННПНННПНННПННН№
                        МНННСНННСНННСНННСНННСНННСНННСННН№
        CAppMonochrome  є$70і$70і$70і$07і$07і$70і$07і$00є
                        ИНСНПНСНПНСНПНСНПНСНПНСНПНСНПНСНј
           Рамка пассивна Щ   і   і   і   і   і   і   АДД Зарезервировано
           Рамка активна ДДДДДЩ   і   і   і   і   АД Выделенный текст
                                  і   і   і   і      элемента прокрутки
           Пиктограмма  ДДДДДДДДДДЩ   і   і   АДДДД Нормальный текст
           рамки                      і   і         элемента прокрутки
           Страница полосы    ДДДДДДДДЩ   АДДДДДДДД Зарезервировано
           прокрутки

             Элементы  с  32  по  63 используются диалоговыми окнами. См.
        TDialog для отдельных элементов.

                         32  33  34  35  36  37  38  39  40
                       ЙНННСНННСНННСНННСНННСНННСНННСНННСННН»
        CAppColor      є$17і$1Fі$1Aі$31і$31і$31і$1Eі$71і$00є
                       МНННПНННПНННПНННПНННПНННПНННПНННПННН№
                       МНННСНННСНННСНННСНННСНННСНННСНННСННН№
        CAppBlackWhite є$07і$0Fі$07і$70і$70і$70і$07і$70і$00є
                       МНННПНННПНННПНННПНННПНННПНННПНННПННН№
                       МНННСНННСНННСНННСНННСНННСНННСНННСННН№
        CAppMonochrome є$07і$0Fі$07і$70і$70і$70і$07і$70і$00є
                       ИНСНПНСНПНСНПНСНПНСНПНСНПНСНПНСНПНСНј
          Рамка пассивнаяЩ   і   і   і   і   і   і   і   АДД Опер.клавиша
                             і   і   і   і   і   і   і       метки
          Рамка активнаяДДДДДЩ   і   і   і   і   і   АД Подсвеченная
                                 і   і   і   і   і      метка
          Пиктограмма  ДДДДДДДДДДЩ   і   і   і   АДДДДД Нормальная
          рамки                      і   і   і          метка
          Страница прокрутки  ДДДДДДДЩ   і   АДДДДДДДДД Статический текст
          Элементы управления ДДДДДДДДДДДЩ
          прокруткой

                          41  42  43  44  45  46  47  48  49
                        ЙНННСНННСНННСНННСНННСНННСНННСНННСННН»
        CAppColor       є$17і$1Fі$1Aі$31і$31і$31і$1Eі$71і$00є
                        МНННПНННПНННПНННПНННПНННПНННПНННПННН№
                        МНННСНННСНННСНННСНННСНННСНННСНННСННН№
        CAppBlackWhite  є$07і$0Fі$07і$70і$70і$70і$07і$70і$00є
                        МНННПНННПНННПНННПНННПНННПНННПНННПННН№
                        МНННСНННСНННСНННСНННСНННСНННСНННСННН№
        CAppMonochrome  є$07і$0Fі$07і$70і$70і$70і$07і$70і$00є
                        ИНСНПНСНПНСНПНСНПНСНПНСНПНСНПНСНПНСНј
           Нормальная ДДДДЩ   і   і   і   і   і   і   і   АДД Оперативная
           "кнопка"           і   і   і   і   і   і   і  клавиша кластера
           "Кнопка" по ДДДДДДДЩ   і   і   і   і   і   АДДДДД Выделенный
           умолчанию              і   і   і   і   і          кластер
           Выбранная  "кнопка" ДДДЩ   і   і   і   АДДДДДДДДД Нормальный
                                      і   і   і             кластер
           Запрещенная "кнопка" ДДДДДДЩ   і   АДДДДДДДДДДДД Тень
                                          і                 "кнопки"
           Оперативная клавиша ДДДДДДДДДДДЩ
           "кнопки"

                                50  51  52  53  54  55  56
                              ЙНННСНННСНННСНННСНННСНННСННН»
        CAppColor             є$1Fі$2Fі$1Aі$20і$72і$31і$31є
                              МНННПНННПНННПНННПНННПНННПННН№
                              МНННСНННСНННСНННСНННСНННСННН№
        CAppBlackWhite        є$0Fі$70і$0Fі$07і$70і$70і$70є
                              МНННПНННПНННПНННПНННПНННПННН№
                              МНННСНННСНННСНННСНННСНННСННН№
        CAppMonochrome        є$07і$70і$07і$07і$70і$07і$07є
                              ИНСНПНСНПНСНПНСНПНСНПНСНПНСНј
           Обычная строка ввода Щ   і   і   і   і   і   АД Элементы
                                    і   і   і   і   і     управления
                                    і   і   і   і   і     прокруткой окна
                                    і   і   і   і   і     протокола
           Выделенная строка ввода ДЩ   і   і   і   АДДДДД Страница
                                        і   і   і          прокрутки
                                        і   і   і          окна протокола
           Стрелки строки ввода ДДДДДДДДЩ   і   АДДДДДДДДД Стороны
           Стрелка протокола ДДДДДДДДДДДДДДДЩ              протокола

                             57  58  59  60  61  62  63
                           ЙНННСНННСНННСНННСНННСНННСННН»
        CAppColor          є$30і$2Fі$3Eі$31і$13і$00і$00є
                           МНННПНННПНННПНННПНННПНННПННН№
                           МНННСНННСНННСНННСНННСНННСННН№
        CAppBlackWhite     є$07і$70і$0Fі$07і$07і$00і$00є
                           МНННПНННПНННПНННПНННПНННПННН№
                           МНННСНННСНННСНННСНННСНННСННН№
        CAppMonochrome     є$07і$70і$0Fі$07і$07і$00і$00є
                           ИНСНПНСНПНСНПНСНПНСНПНСНПНСНј
        Обычный просмотр  ДДДЩ   і   і   і   і   і   АДД Зарезервировано
        списка                   і   і   і   і   і
        Активный просмотр ДДДДДДДЩ   і   і   і   АДДДДДД Зарезервировано
        списка                       і   і   і
        Выделенный просмотр списка ДДЩ   і   АДДДДДДДДДД Информационная
        Разделитель просмотра списка ДДДДЩ               область



Яндекс цитирования