Глава 21. Объектные типы ObjectWindows (продолжение)

         Тип TMessage                                      модуль OWindows
        -----------------------------------------------------------------

             Описание:

             TMessage = record
                Reseiver: HWnd;
                Message: Word;
                case Integer of
                   0: (WParam: Word;
                       LParam: Longint;
                       Result: Longint);
                   1: (WParamLo: Byte;
                       WParamHi: Byte;
                       LParamLo: Word;
                       LParamHi: Word;
                       ResultLo: Word;
                       ResultHi: Word);
                end;

             Назначение: Цикл сообщения в TApplication упаковывает инфор-
        мацию сообщения  Windows в записи TMessage перед передачей инфор-
        мации вместе с соответствующим методом реакции на сообщение.

             См. также: TApplication.MessageLoop.

         Тип TMultiSelRec                                  модуль ODialogs
        -----------------------------------------------------------------

             Описание:

             TMultiSelRec = record
                  Count: Integer;
                  Selections: array[00] of Integer;
             end;

             TMultiSelRec содержит список выделенных элементов для  пере-
        дачи в  блок  списка  с множественным выбором или из него.  Count
        указывает число выделенных элементов,  а Selection - это открытый
        массив целых значений.  Используя Al[locMultiSel, вы можете расп-
        ределить запись с достаточным для используемого блока списка чис-
        лом выделяемых элементов.

             См. также: AllocMultiSel, FreeMultiSel.


------------------------------------------------------------------------
         TObject                                            модуль Objects
        -----------------------------------------------------------------

              TObject
              +------+
              +------|
              | Init |
              | Done |
              | Free |
              +------+

             TObject -   это   отправная    точка    иерархии    объектов
        ObjectWindows. Как базовый объект,  он не имеет предков, но имеет
        много потомков.  Все стандартные объекты ObjectWindows в конечном
        счете являются производными от TObject. Любой объект,  использую-
        щий потоковые средства ObjectWindows, должен отслеживать наследо-
        вание обратно к TObjects.

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

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

                                        Init
        -----------------------------------------------------------------

             constructor Init;

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

                                        Free
        -----------------------------------------------------------------

             procedure Free;

             Уничтожает объект и вызывает деструктор Done.

                                        Done
        -----------------------------------------------------------------

             destructor Done; virtual;

             Выполняет необходимую  очистку  и  освобождение динамических
        объектов.

         Тип TPaintStruct                                  модуль WinTypes
        -----------------------------------------------------------------

             Описание:

             TPaintStruct = record
                hdc: HDC;
                fErase: Bool;
                rcPaint: TRect;
                fRestore: Bool;
                fIncUpdate: Bool;
                rgbReserved: array[015] of Byte;
             end;

             Назначение: Запись TPaintStruct содержит  информацию,  испо-
        льзуемую приложением для отображения областей клиента окон. Боль-
        шая часть информации резервируется для внутреннего  использования
        в Windows, но несколько полей могут использоваться пользователем.

             Поле hdc - это описатель контекста дисплея,  на котором про-
        исходит отображение.  fErase  указывает,  требуется  ли  повторно
        отображать фон (отображение происходит в случае ненулевого значе-
        ния). rcPaint  определяет  прямоугольник,  в  котором  происходит
        отображение.

             Все другие  поля резервируются для внутреннего использования
        в Windows.

         Тип TPicResult                                    модуль Validate
        -----------------------------------------------------------------

             Описание:

             TPicResult = (prComplete, prIncomplete, prEmpty, prError,
                           prSyntax, prAmbiguous, prIncompNoFill);

             Назначение: TPicResult  -  это  тип,  возвращаемый   методом
        Picture объекта TPCPictureValidator.

             См. также: TPCPictureValidator.


------------------------------------------------------------------------
         TPrintDialog                                      модуль OPrinter
        -----------------------------------------------------------------

             TObject   TWindowsObject
             +------+  +----------------------------------------+
             +------|  | ChildList           Parent             |
             |-Init-|  | Flags               Status             |
             |-Done-|  | HWindow             TransferBuffer     |
             | Free |  | Instance                               |
             +------+  +----------------------------------------|
                       |-Init--------        GetChildren        |
                       |-Load--------       -GetClassName-------|
                       | Done                GetClient          |
                       | AddChild           -GetId--------------|
                       | At                  GetSiblingPtr      |
                       | Canclose           -GetWindowClass-----|
                       | ChildWithId         IndexOf            |
                       | CloseWindow         IsFlagSet          |
                       | CMExit              Next               |
                       |-Create------        Previous           |
                       | CreateChildren      PutChildPtr        |
                       | CreateMemoryDC      PutChildren        |
                       | DefChildProc        PutSiblingPtr      |
                       | DefCommandProc     -Register-----------|
                       | DefNotificationProc RemoveChild        |
                       |-DefWndProc--        SetFlags           |
                       | Destroy            -SetupWindow--------|
                       | Disable             Show               |
                       | DisableAutoCreate  -Store--------------|
                       | DisableTransfer     Transfer           |
                       | DispatchScroll      TransferData       |
                       | Enable             -WMActivate---------|
                       | EnableAutoCreate    WMClose            |
                       | EnableKBHandler     WMCommand          |
                       | EnableTransfer      WMDestroy          |
                       | FirstThat          -WMNScroll----------|
                       | Focus               WMNCDestroy        |
                       | ForEach             WMNQueryEndSession |
                       | GetChildPtr        -WMVScroll----------|
                       +----------------------------------------+


             TDialog                TPrintDialog
             +-------------------+  +-----------------+
             | Attr              |  | AllBtn          |
             | IsModal           |  | Colate          |
             +-------------------|  | Controls        |
             |-Init--------------|  | FromPage        |
             | Load              |  | PageBtn         |
             | Done              |  | Pages           |
             | Create            |  | PData           |
             | DefWndProc        |  | Printer         |
             | EndDlg            |  | PrinterName     |
             | Execute           |  | PrnDC           |
             | GetItemHandle     |  | SelAllowed      |
             | Ok                |  | SelectBtn       |
             | SendDlgItemMsg    |  | ToPage          |
             | Store             |  +-----------------|
             | WMClose           |  | Init            |
             | WMInitDialog      |  | IDSetup         |
             | WMPostInvalid     |  | SetupWindow     |
             | WMQueryEndSession |  | TransferData    |
             +-------------------+  +-----------------+

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

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

                                     AllBtn

             Al[lBtn: PRadioButton;

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

             См. также: TPrintDialog.SelectBtn, TPrintDialog.PageBtn.

                                     Collate

             Collate: PCheckBox;

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

                                    Controls

             Controls: PCollection;

             Это поле предназначено для внутреннего использования в  диа-
        логовом блоке печати.

                                     Copies

             Copies: PEdit;

             Copies позволяет  пользователю задать число печатаемых копий
        документа.

                                    FromPage

             FromPage: PEdit;

             Если пользователь   выбирает   печать   диапазона   страниц,
        FromPage содержит номер первой печатаемой страницы.

                                     PageBtn

             PageBtn: PRadioButton;

             PageBtn - это один из трех наборов кнопок с зависимой фикса-
        цией. При его выборе пользователь хочет печатать выделенный  диа-
        пазон страниц.

             См. также:    TPrintDialog.AllBtn,    TPrintDialog.FromPage,
        TPrintDialog.SelectBtn, TPrintDialog.ToPage.

                                      Pages

             Pages: Integer;

             Pages - это общее число страниц в документе.

                                      PData

             PData: PPrintDialogRec;

             PData указывает на  тип  TPrintDialogRec.  Диалоговые  блоки
        печати используют эту запись как буфер передачи.

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

                                     Printer

             Printer: PPrinter;

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

                                   PrinterName

             PrinterName: PStatic;

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

                                      PrnDC

             PrnDC: HDC;

             PrnDC -  это  описатель  используемого  для печати контекста
        устройства.

                                   SetAllowed

             SetAllowed: Boolean;

             В случае значения True указывает, что устройство печати под-
        держивает печать  только выделенного текста документа.  SelectBtn
        разрешается только когда SelAllowed имеет значение True.

             См. также: TPrintDialog.SelectBtn.

                                    SelectBtn

             SelectBtn: PRadioButton;

             SelectBtn - это один из трех наборов кнопок с зависимой фик-
        сацией. При  его выборе пользователь хочет печатать текущий выде-
        ленный в документе текст.

             См. также: TPrintDialog.SelAllowed.

                                     ToPage

             ToPage: PEdit;

             Если пользователь выбирает печать диапазона страниц,  ToPage
        содержит номер последней выводимой на печать страницы.

             См. также: TPrintDialog.PageBtn, TPrintDialog.FromPage.

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

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

                                        Init
        -----------------------------------------------------------------

             constructor Init(AParent: PWindowsObject; Template: PChar;
                         APrnDC: HDC; APages: Integer; APrinter: PPrinter;
                         ASelAllowed: Boolean; var Data: TPrintDialogRec);

             Строит диалоговый  блок печати,  вызывая сначала конструктор
        Init, наследуемый из TDialog, а затем выбирая поля в соответствии
        со значениями переданных параметров.  Затем Init строит управляю-
        щие объекты  диалогового  блока,  вызывая  для  каждого  из   них
        InitResource.

                                     IDSetup

             procedure IDSetup(var Msg: TMessage); virtual
                               id_First + id_Setup;

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

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

                                   SetupWindow

             procedure SetupWindow; virtual;

             Инициализирует диалоговый блок,  вызывая сначала наследуемый
        из TDialog метод SetupWindow, а затем считывая имя устройства пе-
        чати из объекта принтера  и  устанавливая  в  это  значение  поле
        PrinterName.

                                  TransferData

             procedure TransferData(Direction: Word); virtual;

             Переопределяет наследуемый  метод TransferData для установки
        управляющих значение на основе значения в PData,  если  Direction
        равно tf_SetData или устанавливает на основе управляющих значений
        PData,  если Direction равно tf_GetData.  TransferData не  просто
        устанавливает или считывает управляющие элементы, как при взаимо-
        обмене между полями PData и управляющими  элементами  диалогового
        блока печати.

         Тип TPrintDialogRec                               модуль OPrinter
        -----------------------------------------------------------------

             Описание:

             TPrintDialogRec = record
                 drStart: Integer;
                 drStop: Integer;
                 drCopies: Integer;
                 drCollate: Boolean;
                 drUseSelection: Boolean;
             end;

             Назначение: Диалоговые   объекты   печати   используют   тип
        TPrintDialogRec как буферы передачи. Поля drStart и drStop предс-
        тавляют, соответственно,  первую и последнюю страницы для печати.
        drCopies  указывает  число  печатаемых копий.  drCollate сообщает
        принтеру о сравнении копий,  если drCopies  вызывается  несколько
        раз.  drUseSelection сообщает принтеру о печати выделенного текс-
        та, а не текста, указанного drStart и drStop.


------------------------------------------------------------------------
         TPrinter                                          модуль OPrinter
        -----------------------------------------------------------------

             TObject   TPrintout
             +------+  +------------------+
             +------|  | Device           |
             |-Init-|  | DeviceMode       |
             |-Done-|  | DeviceModule     |
             | Free |  | DevSettings      |
             +------+  | DevSettingSize   |
                       | Driver           |
                       | Error            |
                       | ExtDeviceMode    |
                       | Port             |
                       | Status           |
                       +------------------|
                       | Init             |
                       | Done             |
                       | ClearDevice      |
                       | Configure        |
                       | GetDC            |
                       | InitAbortDialog  |
                       | InitPrintDialog  |
                       | Print            |
                       | ReportError      |
                       | SertDevice       |
                       | Setup            |
                       +------------------+

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

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

             Device

             Device: PChar;

             Указывает на имя текущего устройства.  В случае значения nil
        объект не связан в данный момент с устройством.

                                   DeviceMode

             DeviceMode: TDeviceMode;

             Функциональная переменная,    содержащая    адрес    функции
        DeviceMode текущего связанного принтера.  Данная  переменная  ис-
        пользуется при вызове Configure,  если устройство не поддерживает
        ExtDeviceMode.

                                  DeviceModule

             DeviceModule: THandle;

             Описатель текущего драйвера принтера.

                                 DeviceSettings

             DeviceSettings: PDevMode;

             Указатель на локальную копию установленных  параметров  уст-
        ройства печати  (называемую  также операционным окружением).  Ис-
        пользуется только если  текущее  устройство  печати  поддерживает
        ExtDeviceMode.

                                DeviceSettingSize

             DeviceSettingSize: Integer;

             Объем памяти, выделенной для DeviceSetings.

                                     Driver

             Driver: PChar;

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

                                      Error

             Error: Integer;

             Код ошибки, возвращаемый GDI при печати. Это значение иници-
        ализируется при вызове Print.

                                  ExtDeviceMode

             ExtDeviceMode: TExtDeviceMode;

             Функциональная переменная,    содержащая    адрес    функции
        ExtDeviceMode текущего устройства печати. Если драйвер не поддер-
        живает данную подпрограмму,  специфичную для Windows 3.0, то дан-
        ный адрес равен nil (то есть @ExtDeviceMode =  nil  равно  True).
        Эта переменная используется при вызове Configure.

                                      Port

             Port: PChar;

             Указатель на имя порта, к которому подсоединен текущий прин-
        тер. В случае значения nil объект не содержит принтера.

                                     Status

             Status: Integer;

             Текущее состояние драйвера принтера.

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

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

                                        Init
        -----------------------------------------------------------------

             constructor Init;

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

                           Done (переопределяется редко)
        -----------------------------------------------------------------

             desctuctor Done; virtual;

             Освобождает ресурсы, выделенные для TPrinter.

                                    ClearDevice
        -----------------------------------------------------------------

             procedure ClearDevice;

             Отменяет связь  устройства  с текущим принтером.  Вызывается
        SetDevice и  Done.  Изменяет  текущее   состояние   принтера   на
        pf_Unassociated, что приводит к игнорированию объектом всех вызо-
        вов Print, пока объект не будет снова связан с принтером.

                                     Configure
        -----------------------------------------------------------------

             procedure Confuigure(Window: PWindowsObject);

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

                           GetDC (переопределяется редко)
        -----------------------------------------------------------------

             function GetDC: HDC; virtual;

             Возвращает для  текущего связанного с объектом принтера кон-
        текст устройства. Если объект находится в недопустимом состоянии,
        или принтер связан с неактивным портом (то есть с портом "None"),
        возвращает 0.

                      InitAbortDialog (переопределяется редко)
        -----------------------------------------------------------------

             function InitAbortDialog(Parent: PWindowsObject;
                                      Title: PChar): PDialog; virtual;

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

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

                      InitPrintDialog (переопределяется редко)
        -----------------------------------------------------------------

             function InitPrintDialog(Parent: PWindowsObject; PrnDC: HDC;
                           Pages: Integer; SetAllowed: Boolean; var Data;
                           TPrintDialogRec): PDialog; virtual;

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

                      InitSetupDialog (переопределяется редко)
        -----------------------------------------------------------------

             function InitSetupDialog(Parent: PWindowsObject): PDialog;
                                      virtual;

             Вызывается методом Setup для возврата диалогового блока  ус-
        тановки принтера.  В  приложении  результат предполагается в виде
        режимного диалогового окна.  По умолчанию возвращается  экземпляр
        TPrinterSetupDlg. Может  переопределяться для  возврата специали-
        зированного диалога установки принтера.

                                       Print
        -----------------------------------------------------------------

             function Print(ParentWin: PWindowsObject;
                            PrintOut: PPrintOut): Boolean;

             Переводит указанный объект распечатки на связанное  устройс-
        тво печати.  При печати выводит на экран диалоговое окно прерыва-
        ния и обнаруженные ошибки.

                       ReportError (иногда переопределяется)
        -----------------------------------------------------------------

             procedure ReportError(PrintOut: PPrintOut); virtual;

             Print вызывает  ReportError в случае обнаружения ошибки.  По
        умолчанию выводится блок системного сообщения со строкой  ошибки,
        полученной из значений таблицы строк 32512 - 32519. Чтобы вывести
        специализированный диалоговый блок ошибки, данный метод можно пе-
        реопределить.

                                     SetDevice
        -----------------------------------------------------------------

             procedure SetDevice(ADevice, ADriver, APort: PChar);

             Изменяет связь   с   устройством   печати.   Setup  вызывает
        SetDevice для интерактивного изменения связи. Допустимые парамет-
        ры данного метода можно найти в секции устройств файла WIN.INI.

             Записи секции устройств имеют следующий формат:

             <имя_устройства>=<драйвер>, <порт> {, <порт>}

        где порт может повторяться любое число раз.

                                       Setup
        -----------------------------------------------------------------

             procedure Setup(Parent: PWindowsObject);

             Этот метод вызывается,  когда вы хотите,  чтобы пользователь
        выбирал и/или настраивал конфигурацию текущего связанного принте-
        ра. Для  возврата  представляемого пользователю диалогового блока
        установки принтера вызывает InitSetupDialog.


------------------------------------------------------------------------
         TPrinterAbortDlg                                  модуль OPrinter
        -----------------------------------------------------------------

             TObject   TWindowsObject
             +------+  +----------------------------------------+
             +------|  | ChildList           Parent             |
             |-Init-|  | Flags               Status             |
             |-Done-|  | HWindow             TransferBuffer     |
             | Free |  | Instance                               |
             +------+  +----------------------------------------|
                       |-Init--------        GetChildren        |
                       |-Load--------       -GetClassName-------|
                       | Done                GetClient          |
                       | AddChild           -GetId--------------|
                       | At                  GetSiblingPtr      |
                       | Canclose           -GetWindowClass-----|
                       | ChildWithId         IndexOf            |
                       | CloseWindow         IsFlagSet          |
                       | CMExit              Next               |
                       |-Create------        Previous           |
                       | CreateChildren      PutChildPtr        |
                       | CreateMemoryDC      PutChildren        |
                       | DefChildProc        PutSiblingPtr      |
                       | DefCommandProc     -Register-----------|
                       | DefNotificationProc RemoveChild        |
                       |-DefWndProc--        SetFlags           |
                       | Destroy            -SetupWindow--------|
                       | Disable             Show               |
                       | DisableAutoCreate  -Store--------------|
                       | DisableTransfer     Transfer           |
                       | DispatchScroll      TransferData       |
                       | Enable             -WMActivate---------|
                       | EnableAutoCreate    WMClose            |
                       | EnableKBHandler     WMCommand          |
                       | EnableTransfer      WMDestroy          |
                       | FirstThat          -WMNScroll----------|
                       | Focus               WMNCDestroy        |
                       | ForEach             WMNQueryEndSession |
                       | GetChildPtr        -WMVScroll----------|
                       +----------------------------------------+


             TDialog                TPrinterAbortDlg
             +-------------------+  +-----------------+
             | Attr              |  +-----------------|
             | IsModal           |  | Init            |
             +-------------------|  | SetupWindow     |
             |-Init--------------|  | WMCommand       |
             | Load              |  +-----------------+
             | Done              |
             | Create            |
             | DefWndProc        |
             | EndDlg            |
             | Execute           |
             | GetItemHandle     |
             | Ok                |
             | SendDlgItemMsg    |
             | Store             |
             | WMClose           |
             | WMInitDialog      |
             | WMPostInvalid     |
             | WMQueryEndSession |
             +-------------------+

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

             Предполагается, что TPrinterAbortDlg имеет  три  статических
        текстовых управляющих  элемента  с  идентификаторами  управляющих
        элементов: 101 - для заголовка,  102 - для устройства и  103  для
        порта соответственно.  В  своих текстовых строках эти управляющие
        элементы должны содержать символ '%',  который заменяется,  соот-
        ветственно, заголовком,  устройством и портом.  Позиция и порядок
        табуляции управляющих элементов в диалоговом блоке важного значе-
        ния не имеет.

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

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

                                        Init
        -----------------------------------------------------------------

             constructor Init(AParent: PWindowsObject; Template, Title,
                              Device, Port: PChar);

             Строит диалоговый блок прерывания печати, в котором наряду с
        кнопкой Cancel  выводятся заданный заголовок (Title),  устройство
        (Device) и порт (Port).

                        SetupWindow (переопределяется редко)
        -----------------------------------------------------------------

             procedure SetupWindow; virtual;

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

                         WMCommand (переопределяется редко)
        -----------------------------------------------------------------

             procedure WMCommand(var Msg: TMessage); virtual
                                 wm_First + wm_Command;

             Предназначена для  внутренней работы с кнопкой Cancel (Отме-
        на).


------------------------------------------------------------------------
         TPrinterSetupDlg                                  модуль OPrinter
        -----------------------------------------------------------------

             TObject   TWindowsObject
             +------+  +----------------------------------------+
             +------|  | ChildList           Parent             |
             |-Init-|  | Flags               Status             |
             |-Done-|  | HWindow             TransferBuffer     |
             | Free |  | Instance                               |
             +------+  +----------------------------------------|
                       |-Init--------        GetChildren        |
                       |-Load--------       -GetClassName-------|
                       | Done                GetClient          |
                       | AddChild           -GetId--------------|
                       | At                  GetSiblingPtr      |
                       | Canclose           -GetWindowClass-----|
                       | ChildWithId         IndexOf            |
                       | CloseWindow         IsFlagSet          |
                       | CMExit              Next               |
                       |-Create------        Previous           |
                       | CreateChildren      PutChildPtr        |
                       | CreateMemoryDC      PutChildren        |
                       | DefChildProc        PutSiblingPtr      |
                       | DefCommandProc     -Register-----------|
                       | DefNotificationProc RemoveChild        |
                       |-DefWndProc--        SetFlags           |
                       | Destroy            -SetupWindow--------|
                       | Disable             Show               |
                       | DisableAutoCreate  -Store--------------|
                       | DisableTransfer     Transfer           |
                       | DispatchScroll      TransferData       |
                       | Enable             -WMActivate---------|
                       | EnableAutoCreate    WMClose            |
                       | EnableKBHandler     WMCommand          |
                       | EnableTransfer      WMDestroy          |
                       | FirstThat          -WMNScroll----------|
                       | Focus               WMNCDestroy        |
                       | ForEach             WMNQueryEndSession |
                       | GetChildPtr        -WMVScroll----------|
                       +----------------------------------------+


             TDialog                TPrinterSetupDlg
             +-------------------+  +-----------------+
             | Attr              |  | Printer         |
             | IsModal           |  +-----------------|
             +-------------------|  | Init            |
             |-Init--------------|  | Done            |
             | Load              |  | Cancel          |
             | Done              |  | IDSetup         |
             | Create            |  | TransferData    |
             | DefWndProc        |  +-----------------+
             | EndDlg            |
             | Execute           |
             | GetItemHandle     |
             | Ok                |
             | SendDlgItemMsg    |
             | Store             |
             | WMClose           |
             | WMInitDialog      |
             | WMPostInvalid     |
             | WMQueryEndSession |
             +-------------------+

             Это используемый  по  умолчанию  диалоговый  блок  установки
        принтера. Он аналогичен диалоговому блоку  установки  принтера  в
        IDE для Windows.  Предполагается, что TPrinterSetupDlg имеет ком-
        бинированный блок для списка  допустимых  устройств  и  командную
        кнопку Setup.  Они имеют идентификаторы 101 и 102 соответственно.
        В него следует также включить кнопки OK и Cancel.

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

                                     Printer

             Printer: PPrinter;

             Указывает на текущий принтер, модифицируемый в диалоге.

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

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

                                        Init
        -----------------------------------------------------------------

             constructor Init(AParent: PWindowsObject;
                              TemplateName: PChar; APrinter: PPrinter);

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

                           Done (переопределяется редко)
        -----------------------------------------------------------------

             destructor Done; virtual;

             Освобождает связанные с объектом ресурсы.

                        Cancel (никогда не переопределяется)
        -----------------------------------------------------------------

             procedure Cancel(var Msg: TMessage); virtual
                              id_First + id_Cancel;

             Предназначается для  внутреннего использования с целью восс-
        тановления предыдущего состояния принтера, если пользователь пос-
        ле Setup нажал командную кнопку Cancel.

                       IDSetup (никогда не переопределяется)
        -----------------------------------------------------------------

             procedure IDSetup(var Msg: TMessage); virtual
                              id_First + id_Setup;

             Обрабатывает нажатия  кнопки  Setup.  Модифицирует  заданный
        принтер и вызывает его метод Configure.

                     TransferData (никогда не переопределяется)
        -----------------------------------------------------------------

             procedure TransferData(TransferFlag: Word); virtual;

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


------------------------------------------------------------------------
         TPrintout                                         модуль OPrinter
        -----------------------------------------------------------------

             TObject    TPrintout
             +------+   +-----------------+
             +------|   | Banding         |
             |-Init-|   | DC              |
             |-Done-|   | ForceAllBands   |
             | Free |   | Size            |
             +------+   | Title           |
                        +-----------------|
                        | Init            |
                        | Done            |
                        | BeginDocument   |
                        | BeginPrinting   |
                        | EndDocument     |
                        | EndPrinting     |
                        | GetDialogInfo   |
                        | GetSelection    |
                        | HasNextPage     |
                        | PrintPage       |
                        | SetPrintParams  |
                        +-----------------+

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

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

                                     Banding

             Banding: Boolean;

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

                                        DC

             DC: HDC;

             DC - это описатель используемого для  печати  контекста  уст-
        ройства.

                                  ForceAllBands

             ForceAllBands: Boolean;

             Многие драйверы  устройств  не предусматривают многополосной
        печати на принтере,  если и текст, и графика не выполняются с ис-
        пользованием  первой полосы (обычно это только текстовая полоса).
        Если оставить в этом поле  значение  True,  это  вынудит  драйвер
        принтера использовать все полосы, независимо от того, какие вызо-
        вы выполняются в методе PrintPage. Если PrintPage ничего не дела-
        ет  кроме  вывода  текста,  то  эффективнее установить это поле в
        False.  По умолчанию оно равно True. Данное поле действует только
        в том случае, если Banding равно True.

                                       Size

             Size: TPoint;

             Size представляет размер области печати на странице распечат-
        ки.

                                      Title

             Title: PChar;

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

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

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

                                        Init
        -----------------------------------------------------------------

             constructor Init(ATitle: PChar);

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

                                        Done
        -----------------------------------------------------------------

             destructor Done; virtual;

             Уничтожает ресурс, выделенный конструктором Init.

                                  BeginDocument

             procedure BeginDocument(StartPage, EndPage: Integer;
                                     Flag: Word); virtual;

             Метод Print объекта печати вызывает  BeginDocument  один  раз
        перед печатью   каждой   копии   документа.   Поле  Flag  содержит
        pf_Banding или pf_Selection и указывает,  будет ли  использоваться
        разбиение на полосы или печать выделенного текста.

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

                                   BeginPrinting
        -----------------------------------------------------------------

             procedure BeginPrinting; virtual;

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

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

                                    EndDocument
        -----------------------------------------------------------------

             procedure EndDocument; virtual;

             Метод Print  объекта печати вызывает EndDocument после завер-
        шения печати каждой копии документа.

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

                                    EndPrinting
        -----------------------------------------------------------------

             procedure EndPrinting; virtual;

             Метод Print объекта печати вызывает BeginPrinting в конце пе-
        чати всех копий документа.

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

                                   GetDialogInfo
        -----------------------------------------------------------------

             procedure GetDialogInfo(var Pages: Integer): Boolean;
                                     virtual;

             Считывает информацию, необходимую для печати выделенных стра-
        ниц документа, и возвращает True, если выбор страниц возможен. Ис-
        пользовать Pages не обязательно,  но если легко  определить  число
        страниц, GetDialogInfo  нужно  передать  в  параметре  Pages число
        страниц в документе.  В противном случае HasNextPage следует уста-
        новить в 0, а печать будет продолжаться, пока HasNextPage не возв-
        ратит False.

                                    GetSelection
        -----------------------------------------------------------------

             function GetSelection(var Start, Stop: Integer): Boolean;
                                   virtual;

             Определяет, имеет ли документ выделенный текст.  Если да,  то
        функция возвращает значение True,  а Start и Stop указывают, соот-
        ветственно, на   начало   и   конец   выделенного   текста.   Если
        GetSelection возвращает False, то командная кнопка печати выделен-
        ного текста в диалоговом блоке печати запрещена.

             По умолчанию GetSelection просто возвращает False.  Наследую-
        щие объекты могут переопределять GetSelection для фактического оп-
        ределения существования выделенного текста.

                                    HasNextPage
        -----------------------------------------------------------------

             function HasNextPage: Boolean; virtual;

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

                                     PrintPage
        -----------------------------------------------------------------

             procedure PrintPage(Page: Word; var Rect: TRect;
                                 Flags: Word); virtual;

             Вызывается для каждой страницы (или полосы, если Banding име-
        ет значение True).  Должен переопределяться для печати содержимого
        данной страницы. Параметры Rect и Flags используются при разбиении
        на полосы для указания размера и типа  полосы,  запрошенной  через
        драйвер (если Banding равно False,  это следует игнорировать). Па-
        раметр Size - это размер печатаемой страницы (в элементарных  еди-
        ницах устройства).  Page - это номер текущей страницы, а DC - кон-
        текст устройства печати, который переопределенный метод должен ис-
        пользовать во всех вызова GDI.

                                   SetPrintParams
        ------------------------------------------------------------------

             procedure SetPrintParams(ADC: HDC; ASize: TPoint): virtual;

             Устанавливает поля DC и Size в ADC  и  ASize  соответственно.
        Это первый  метод  распечатки,  вызываемый  методом  Print объекта
        принтера и обеспечивающий объект распечатки информацией, необходи-
        мой для  разбиения  на страницы и ведения счетчика страниц.  Если
        наследующие объекты переопределяют SetPrintParams, они должны вы-
        зывать наследуемый метод.


------------------------------------------------------------------------
         TPXPictureValidator                                модуль Validate
        -----------------------------------------------------------------

             TObject   TValidator           TPXPictureValidator
             +------+  +-----------------+  +-----------------+
             +------|  | Options         |  | Pic             |
             |-Init-|  | Status          |  +-----------------|
             |-Done-|  +-----------------|  | Init            |
             | Free |  |-Init------------|  | Load            |
             +------+  |-Load------------|  | Done            |
                       |-IsInvalid-------|  | Error           |
                       |-IsValidInput----|  | IsValid         |
                       |-Store-----------|  | IsValidInput    |
                       | Transfer        |  | Picture         |
                       | Valid           |  | Store           |
                       +-----------------+  +-----------------+

             Трафаретные объекты  проверки  допустимости  сравнивают  ввод
        пользователя с  трафаретом (шаблоном) формата данных и определяют
        допустимость введенных данных.  Трафареты совместимы с  шаблонами
        реляционной базы данных Paradox фирмы Borland,  используемыми для
        управления вводом данных. Полное описание спецификаторов трафаре-
        та см. в методе Picture объекта TPXPictureValidator.

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

                                       Pic

             Pic: PString:

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

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

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

                                        Init
        -----------------------------------------------------------------

             constructor Init(const APic: String; AutoFill: Boolean);

             Строит объект проверки  допустимости  по  трафарету,  вызывая
        сначала конструктор Init, наследуемый из TValidator, а затем выде-
        ляя копию APic в динамически распределяемой памяти и  устанавливая
        на нее Pic. Затем, если AutoFill имеет значение True, устанавлива-
        ет бит voFill в Options.

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

                                        Load
        -----------------------------------------------------------------

             constructor Load(var S: TStream);

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

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

                                        Done
        -----------------------------------------------------------------

             destructor Done; virtual;

             Уничтожает строку, на которую указывает Pic, затем уничтожает
        объект проверки  допустимости  по  трафарету,  вызывая  деструктор
        Done, наследуемый из TValidator.

                                       Error
        -----------------------------------------------------------------

             procedure Error; virtual;

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

                                    ISValidInput
        -----------------------------------------------------------------

             function ISValidInput(var S: string; SupressFill: Boolean):
                                   Boolean; virtual;

             Проверяет передаваемую в S строку,  сравнивая ее с трафарет-
        ным форматом,  заданным в Pic,  и возвращает значение True,  если
        Pic равно nil, или Picture не возвращает для S prError. В против-
        ном случае возвращается False. Параметр SupressFill переопределя-
        ет значение в voFill на время выполнения вызова IsValidInput.

             Так как S - это параметр-переменная,  IsValidInput может мо-
        дифицировать ее значение. Например, если SupressFill равно False,
        и установлено voFill, то вызов Picture возвращает на основе S за-
        полненную строку,  так что образ строки ввода автоматически отра-
        жает заданный в Pic формат.

             См. также: TPXPictureValidator.Picture.

                                     IsInvalid
        -----------------------------------------------------------------

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

             Сравнивает переданную в S строку с шаблоном формата,  задан-
        ным в  Pic,  и  возвращает  True,  если Pic равно nil,  или  если
        Picture возвращает для S prComplete,  указывая,  что S для  соот-
        ветствия данному формату не требует дальнейшего ввода.

             См. также: TPCPictureValidator.Picture.

                                      Picture
        -----------------------------------------------------------------

             function Picture(var Input: String): TPicResult; virtual;

             Форматирует переданную в Input строку в соответствии с  фор-
        матом, заданным строкой трафарета, на которую указывает Pic. Если
        в строке трафарета имеется ошибка, или Input содержит  данные, не
        помещающиеся в заданном трафарете, возвращает prError. Если Input
        может полностью  удовлетворять  заданному  трафарету,  возвращает
        prComplete. Если Input содержит данные, не полностью соответству-
        ющие заданному трафарету, возвращает prIncomplete.


             Символы, используемые для создания трафаретов формата, пока-
        заны в следующей таблице:

                            Символы трафарета формата       Таблица 21.26
        +------------------+---------+----------------------------------+
        |    Тип символа   | Символ  |        Описание                  |
        +------------------+---------+----------------------------------|
        |    Специальный   |   #     | Воспринимается только цифра.     |
        |                  |         |                                  |
        |                  |   ?     | Воспринимается только буква  (без|
        |                  |         | различия регистра).              |
        |                  |         |                                  |
        |                  |   &     | Воспринимается только буква (пре-|
        |                  |         | образуется в верхний регистр).   |
        |                  |         |                                  |
        |                  |   @     | Воспринимается любой символ.     |
        |                  |         |                                  |
        |                  |   !     | Воспринимается любой символ (пре-|
        |                  |         | образуется в верхний регистр).   |
        +------------------+---------+----------------------------------|
        |    Соответствие  |   ;     | Следующий  символ  воспринимается|
        |                  |         | литерально.                      |
        |                  |         |                                  |
        |                  |   *     | Счетчик повторения.              |
        |                  |         |                                  |
        |                  |   []    | Параметр.                        |
        |                  |         |                                  |
        |                  |   {}    | Группирование операций.          |
        |                  |         |                                  |
        |                  |   '     | Набор альтернатив.               |
        +------------------+---------+----------------------------------|
        |    Все прочие    |         | Воспринимаются литерально.       |
        |                  |         |                                  |
        +------------------+---------+----------------------------------+

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

                                       Store
        -----------------------------------------------------------------

             procedure Store(var S: TStream);

             Сохраняет объект проверки допустимости по трафарету в потоке
        S, вызывая  сначала при записи строки,  на которую указывает Pic,
        наследуемый из TValidator метод Store.


------------------------------------------------------------------------
         TRadioButton                                      модуль ODialogs
        -----------------------------------------------------------------

             TObject   TWindowsObject
             +------+  +----------------------------------------+
             +------|  | ChildList           Parent             |
             |-Init-|  | Flags               Status             |
             |-Done-|  | HWindow             TransferBuffer     |
             | Free |  | Instance                               |
             +------+  +----------------------------------------|
                       |-Init--------        GetChildren        |
                       |-Load--------       -GetClassName-------|
                       | Done                GetClient          |
                       | AddChild           -GetId--------------|
                       | At                  GetSiblingPtr      |
                       | Canclose           -GetWindowClass-----|
                       | ChildWithId         IndexOf            |
                       | CloseWindow         IsFlagSet          |
                       | CMExit              Next               |
                       |-Create------        Previous           |
                       | CreateChildren      PutChildPtr        |
                       | CreateMemoryDC      PutChildren        |
                       | DefChildProc        PutSiblingPtr      |
                       | DefCommandProc     -Register-----------|
                       | DefNotificationProc RemoveChild        |
                       |-DefWndProc--        SetFlags           |
                       | Destroy            -SetupWindow--------|
                       | Disable             Show               |
                       | DisableAutoCreate  -Store--------------|
                       | DisableTransfer     Transfer           |
                       | DispatchScroll      TransferData       |
                       | Enable             -WMActivate---------|
                       | EnableAutoCreate    WMClose            |
                       | EnableKBHandler     WMCommand          |
                       | EnableTransfer      WMDestroy          |
                       | FirstThat          -WMNScroll----------|
                       | Focus               WMNCDestroy        |
                       | ForEach             WMNQueryEndSession |
                       | GetChildPtr        -WMVScroll----------|
                       +----------------------------------------+


             TWindow                TControl
             +-------------------+  +-----------------+
             | Attr              |  +-----------------|
             | DefaultProc       |  |-Init------------|
             | Scrol[ler         |  |-InitResource----|
             | FocusChildHandle  |  |-GetClassName----|
             +-------------------|  | Register        |
             |-Init--------------|  | WMPaint         |
             | InitResource      |  +-----------------+
             |-Load--------------|
             | Done              |  TCheckBox
             | Create            |  +-----------------+
             | DefWndProc        |  | Group           |
             | FocusChild        |  +-----------------|
             | GetId             |  |-Init------------|
             | GetWindowClass    |  | InitResource    |
             | Paint             |  | Load            |
             | SetCaption        |  | BNClicked       |
             | SetupWindow       |  | Check           |
             |-Store-------------|  | GetCheck        |
             | UpdateFocusChild  |  |-GetClassName----|
             | WMActivate        |  | SetCheck        |
             | WMHScroll         |  | Store           |
             | WMLButtonDown     |  | Toggle          |
             | WMMDIActivate     |  | Transfer        |
             | WMMove            |  | Uncheck         |
             | WMPaint           |  +-----------------+
             |-WMSize------------|
             | WMSysCommand      |  TRadioButton
             | WMVScroll         |  +-----------------+
             +-------------------+  +-----------------|
                                    | Init            |
                                    | GetClassName    |
                                    +-----------------+

             TRadioButton - это  интеpфейсный  объект,  пpедставляющий  в
        Windows  соответствующий  элемент  кнопки  с зависимой фиксацией.
        Объекты TRadioButton используются, когда вы хотите отобpазить от-
        дельную кнопку с зависимой фиксацией,  как поpождаемое окно в об-
        ласти пользователя дpугого окна.  Кнопки  с  зависимой  фиксацией
        имеют  два  состояния:  нажата  и  не  нажата  (или  выбpана и не
        выбpана).  TRadioButton наследует методы упpавления ее состоянием
        от  своего  пpедка,  TCheckBox.  Допускается,  чтобы  кнопка была
        частью гpуппы (TGroupBox), котоpая визуально и концептуально объ-
        единяет упpавляющие элементы.

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

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

                           Init (иногда переопределяется)
        -----------------------------------------------------------------

             constructor Init(AParent: PWindowsObject; AnID: Integer;
                              ATitle: PChar; X, Y, W, H: Integer;
                              AGroup: PGroupBox);

             Создает объект  кнопки  с  зависимой  фиксацией с пеpеданным
        порождающим окном (AParent), идентификатоpом управляющего элемен-
        та (AnId); соответствующим текстом (ATitle), позицией (X,Y) отно-
        сительно начала области пользователя порождающего  окна;  шиpиной
        (W),  высотой (H) и блоком соответствующей гpуппы (AGroup). Вызы-
        вает конструктор TCheckBox с соответствующими параметрами.  Затем
        устанавливает  элемент данных Attr.Style в ws_Child or ws_Visible
        or bs_RadioButton.

                                    GetGlassName
        -----------------------------------------------------------------

             function GetClassName: PChar; virtual;

             Вызывает метод GetClassName,  наследуемый из TCheckBox (если
        испольуются управляющие элементы BWCC, возвращается 'BorRadio').

             См. также: TCheckBox.GetClassName.
------------------------------------------------------------------------
         TRangeValidator                                   модуль Validate
        -----------------------------------------------------------------

             TObject   TValidator           TFileterValidator
             +------+  +-----------------+  +-----------------+
             +------|  | Options         |  | ValidChars      |
             |-Init-|  | Status          |  +-----------------|
             |-Done-|  +-----------------|  |-Init------------|
             | Free |  |-Init------------|  |-Load------------|
             +------+  |-Load------------|  |-IsInvalid-------|
                       |-IsInvalid-------|  | IsValidInput    |
                       |-IsValidInput----|  |-Store-----------|
                       |-Store-----------|  +-----------------+
                       | Transfer        |
                       | Valid           |
                       +-----------------+

             TRangeValidator
             +-----------------+
             | Max             |
             | Min             |
             +-----------------|
             | Init            |
             | Load            |
             | Error           |
             | IsValid         |
             | Store           |
             | Transfer        |
             +-----------------+

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

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

                                       Max

             Max: Longint;

             Max -  это  наибольшее допустимое длинное целое значение для
        строки ввода.

                                       Min

             Min: Longint;

             Min - это наименьшее допустимое длинное целое  значение  для
        строки ввода.

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

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

                                        Init
        -----------------------------------------------------------------

             constructor Init(AMin, AMax: Longint);

             Строит объект проверки допустимости диапазона,  вызывая сна-
        чала конструктор Init, наследуемый из TFilterValidator, передавая
        набор символов,  содержащий  цифры  '0''9' и символы '+' и '-'.
        Устанавливает Min в AMin и Max в AMax, задавая диапазон восприни-
        маемых длинных целых значений.

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

                                        Load
        -----------------------------------------------------------------

             constructor Load(var S: TStream);

             Строит и загружает объект проверки допустимости диапазона из
        потока S,   вызывая  сначала  конструктор  Load,  наследуемый  из
        TFilterValidator, а затем считывая поля Min и  Max,  введенные  в
        TRangeValidator.

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

                                       Error
        -----------------------------------------------------------------

             procedure Error; virtual;

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

                                      IsValid
        -----------------------------------------------------------------

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

             Преобразует строку S в целое значение и возвращает True, ес-
        ли результат удовлетворяет трем следующим условиям:

             * является допустимым целочисленным значением;

             * его значение больше или равно Min;

             * его значение больше или равно Max.

             Если какая  либо  из  этих  проверок  завершается  неудачно,
        IsValid возвращает False.

                                       Store
        -----------------------------------------------------------------

             procedure Store(var S: TStream);

             Сохраняет объект  проверки допустимости в потоке S,  вызывая
        сначала метод Store, наследуемый из TFilterValidator, а затем за-
        писывая поля Min и Max, введенные в TRangeValidator.

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

                                      Transfer
        -----------------------------------------------------------------

             function Transfer(var S: String; Buffer: Pointer;
                               Flag: TVTransfer): Word; virtual;

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

             S - это значение строки ввода, а Buffer - это запись данных,
        передаваемых в  строку  ввода.  В  зависимости  от значения Flag,
        Transfer устанавливает значение  S  в  соответствии  с  числом  в
        Buffer^ или  устанавливает число в Buffer в соответствии со стро-
        кой S. Если Flag имеет значение vtSetData, Transfer устанавливает
        S из буфера Buffer. Если Flag равен vtGetrData, Transfer устанав-
        ливает значения  в  Buffer,  беря  его  из  S.  Если  Flag  равен
        vtDataSize, то Transfer ни устанавливает, ни считывает данные.

             Transfer всегда  возвращает размер переданных данных (в этом
        случае размер имеет тип Longint).

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


------------------------------------------------------------------------
         TScrollBar                                        модуль ODialogs
        -----------------------------------------------------------------

             TObject   TWindowsObject
             +------+  +----------------------------------------+
             +------|  | ChildList           Parent             |
             |-Init-|  | Flags               Status             |
             |-Done-|  | HWindow             TransferBuffer     |
             | Free |  | Instance                               |
             +------+  +----------------------------------------|
                       |-Init--------        GetChildren        |
                       |-Load--------       -GetClassName-------|
                       | Done                GetClient          |
                       | AddChild           -GetId--------------|
                       | At                  GetSiblingPtr      |
                       | Canclose           -GetWindowClass-----|
                       | ChildWithId         IndexOf            |
                       | CloseWindow         IsFlagSet          |
                       | CMExit              Next               |
                       |-Create------        Previous           |
                       | CreateChildren      PutChildPtr        |
                       | CreateMemoryDC      PutChildren        |
                       | DefChildProc        PutSiblingPtr      |
                       | DefCommandProc     -Register-----------|
                       | DefNotificationProc RemoveChild        |
                       |-DefWndProc--        SetFlags           |
                       | Destroy            -SetupWindow--------|
                       | Disable             Show               |
                       | DisableAutoCreate  -Store--------------|
                       | DisableTransfer     Transfer           |
                       | DispatchScroll      TransferData       |
                       | Enable             -WMActivate---------|
                       | EnableAutoCreate    WMClose            |
                       | EnableKBHandler     WMCommand          |
                       | EnableTransfer      WMDestroy          |
                       | FirstThat          -WMNScroll----------|
                       | Focus               WMNCDestroy        |
                       | ForEach             WMNQueryEndSession |
                       | GetChildPtr        -WMVScroll----------|
                       +----------------------------------------+


             TWindow                TControl
             +-------------------+  +-----------------+
             | Attr              |  +-----------------|
             | DefaultProc       |  |-Init------------|
             | Scrol[ler         |  |-InitResource----|
             | FocusChildHandle  |  |-GetClassName----|
             +-------------------|  | Register        |
             |-Init--------------|  | WMPaint         |
             | InitResource      |  +-----------------+
             |-Load--------------|
             | Done              |  TScrollBar
             | Create            |  +-----------------+
             | DefWndProc        |  | LineMagnitude   |
             | FocusChild        |  | PageMagnitude   |
             | GetId             |  +-----------------|
             | GetWindowClass    |  | Init            |
             | Paint             |  | InitResource    |
             | SetCaption        |  | Load            |
             | SetupWindow       |  | DeltaPos        |
             |-Store-------------|  | GetClassNAme    |
             | UpdateFocusChild  |  | GetPosition     |
             | WMActivate        |  | GetRange        |
             | WMHScroll         |  | SBBottom        |
             | WMLButtonDown     |  | SBLineDown      |
             | WMMDIActivate     |  | SBLineUp        |
             | WMMove            |  | SBPageDown      |
             | WMPaint           |  | SBPageuP        |
             |-WMSize------------|  | SBThumbPosition |
             | WMSysCommand      |  | SBThumbTrack    |
             | WMVScroll         |  | SBTop           |
             +-------------------+  | SBPosition      |
                                    | SetRange        |
                                    | SetupWindow     |
                                    | Store           |
                                    | Transfer        |
                                    +-----------------+

             Объекты TScrollBar пpедставляют автономные (не  связанные  с
        окнами) горизонтальные и вертикальные полосы (линейки) прокрутки.
        Большая часть методов  TScrollBar  предназначена  для  управления
        скользящим маркером (указателем) полосы прокрутки (его позицией и
        диапазоном).

             Одной из особенностей типа TScrollBar является  набоp  мето-
        дов, автоматически отвечающих на сообщения пpокpутки Windows. Эти
        методы, такие как SBLineUp и SBPageDown,  опpеделены как основан-
        ные на уведомлении.  Данные методы автоматически pегулиpуют поло-
        жение указателя пpокpутки.

             Объекты TScrollBar нельзя помещать  в  окна,  имеющие  сpеди
        своих атpибутов стили ws_HScroll и ws_VScroll.

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

                          LineMagnitude (чтение/запись)

             LineMagnitude: Integer;

             LineMagnitude - число единиц диапазона, пpокpучиваемых, ког-
        да пользователь запpашивает небольшое пеpемещение, щелкая кнопкой
        "мыши" на стpелках полосы пpокpутки.  По умолчанию, Init устанав-
        ливает LineMagnitude в 1.  TScrollBar.InitWindow по умолчанию ус-
        танавливает диапазон пpокpутки от 0 до 100.

             См. также: TScrollBar.InitWindow.

                          PageMagnitude (чтение/запись)

             PageMagnitude: Integer;

             PageMagnitude - число единиц диапазона, пpокpучиваемых, ког-
        да пользователь запpашивает небольшое пеpемещение, щелкая кнопкой
        "мыши" в области пpокpутки полосы пpокpутки.  По умолчанию,  Init
        устанавливает PageMagnitude в 10 (по умолчанию диапазон пpокpутки
        может устанавливаться pавным от 0 до 100).

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

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

                                        Init
        -----------------------------------------------------------------

             constructor Init(AParent: PWindowsObject; AnID: Integer;
                             X, Y, W, H: Integer; IsHScrollBar: Boolean);

             Создает и инициализиpует объект TScrollBar с заданным порож-
        дающим окном  (AParent),  идентификатоpом  управляющего  элемента
        (AnId),  позицией  (X,Y),  шиpиной  (W)  и  высотой  (H).  Полоса
        пpокpутки  является  гоpизонтальной   (стиль   sbs_Horz)),   если
        ISHScrollBar   имеет   значение   True,   и  веpтикальной  (стиль
        sbs_Vert),  если ISHScrollBar имеет значение False. Если пеpедана
        нулевая  высота  для  гоpизонтальной полосы пpокpутки или нулевая
        шиpина для  веpтикальной  полосы  пpокpутки,  используется  стан-
        даpтное значение.  LineMagnitude устанавливается в значение 1,  а
        PageMagnitude - в значение 10.

                                    InitResource
        -----------------------------------------------------------------

             InitResource(AParent: PWindowsObject; ResourceId: Word);

             Связывает объект  полосы прокрутки с управляющим элементом в
        ресурсе, заданным   ResourceID    путем    вызова    конструктора
        InitResource, наследуемого из TControl. Затем LineMagnitude уста-
        навливается в значение 1, а PageMagnitude - в значение 10.

             См. также: TControl.InitResource.

                                        Load
        -----------------------------------------------------------------

             constructor Load(var S: TStream);

             Строит и загружает объект полосы прокрутки из потока S,  вы-
        зывая сначала TControl.Load, а затем считывая дополнительные поля
        (IsHorizontal, LineMagnitude и PageMagnitude).

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

                         DeltaPos (переопределяется редко)
        -----------------------------------------------------------------

             function DeltaPos(Delta: Integer): Integer; virtual;

             Изменяет положение указателя полосы пpокpутки  на  значение,
        пеpеданное  в параметре Delta.  (Вызывает для этого SetPosition.)
        Пpи отpицательном значении указатель пеpемещается ввеpх или  вле-
        во. Возвpащается новое положение указателя.

                     GetClassName (никогда не переопределяется)
        -----------------------------------------------------------------

             function GetClassName: PChar; virtual;

             Возвpащает имя  класса  регистрации  Windows  TScrollBar   -
        'Scrollbar"'

                        GetPosition (переопределяется редко)
        -----------------------------------------------------------------

             function GetPosition: Integer; virtual;

             Возвpащает текущее положение указателя пpокpутки.

             См. также: TScrollBar.SetPosition.

                         GetRange (переопределяется редко)
        -----------------------------------------------------------------

             procedure GetRange(var LoVal, HiVal: Integer); virtual;

             Считывает допустимый  диапазон  положений  указателя  полосы
        пpокpутки в LoVal и HiVal.

             См. также: TScrollBar.SetRange.

                         SBBottom (переопределяется редко)
        -----------------------------------------------------------------

             procedure SBBottom(var Msg: TMessage); virtual
                                nf_First + sb_Bottom;

             В ответ на запpос пользователя устанавливает положение  ука-
        зателя в наибольшее допустимое значение (вызывается SetPosition).
        Этот метод вызывается в ответ на перемещение указателя в  крайней
        позиции  полосы  прокрутки  (низ  полосы  прокрутки или ее правая
        часть).

                        SBLineDown (переопределяется редко)
        -----------------------------------------------------------------

             procedure SBLineDown(Msg: TMessage); virtual
                                  nf_First + sb_LineDown;

             Пеpемещает положение   указателя   вниз   или   впpаво    на
        LineMagnitude (вызывается SetPosition). Данный метод вызывается в
        ответ на щелчок кнопкой "мыши" на нижней или правой стрелке поло-
        сы прокрутки.

                         SBLineUp (переопределяется редко)
        -----------------------------------------------------------------

             procedure SBLineUp(Msg: TMessage); virtual
                                nf_First + sb_LineUp;

             Пеpемещает положение    указателя   ввеpх   или   влево   на
        LineMagnitude единиц с помощью вызова SetPosition.  Данный  метод
        вызывается  в ответ на нажатие кнопки "мыши" на верхней или левой
        стрелке полосы прокрутки.

                        SBPageDown (переопределяется редко)
        -----------------------------------------------------------------

             procedure SBPageDown(Msg: TMessage); virtual
                                  nf_First + sb_PageDown;

             Пеpемещает положение   указателя   вниз   или   впpаво    на
        PageMagnitude  единиц с помощью вызова SetPosition.  Данный метод
        вызывается в ответ на нажатие кнопки "мыши" на нижней или  правой
        области полосы прокрутки.

                         SBPageUp (переопределяется редко)
        -----------------------------------------------------------------

             procedure SBPageUp(Msg: TMessage); virtual
                                nf_First + sb_PageUp;

             Пеpемещает положение    указателя   ввеpх   или   влево   на
        PageMagnitude единиц с помощью вызова SetPosition.  Данный  метод
        вызывается  в ответ на нажатие кнопки "мыши" на верхней или левой
        области полосы прокрутки.

                      SBThumbPosition (переопределяется редко)
        -----------------------------------------------------------------

             procedure SBThumbPosition(Msg: TMessage); virtual
                                       nf_First + sbThumbPosition;

             Пеpемещает положение указателя c помощью вызова SetPosition.
        Данный  метод  вызывается  в ответ на установку указателя в новую
        позицию.

                       SBThumbTrack (иногда переопределяется)
        -----------------------------------------------------------------

             procedure SBThumbTrack(Msg: TMessage); virtual
                                    nf_First + sb_ThumbTrack;

             Пеpемещает положение  указателя  по  меpе  "буксиpовки"  его
        пользователем.  (Вызывает SetPosition). Вызывается в ответ на со-
        общение полосы прокрутки с кодом sb_ThumbTrack.

                           SBTop (переопределяется редко)
        -----------------------------------------------------------------

             procedure SBTop(Msg: TMessage); virtual
                             nf_First + sb_Top;

             Перемещает указатель в вершину или  в  правую  часть  полосы
        прокрутки путем вызова SetPosition. Данный метод вызывается в от-
        вет на "буксировку" указателя в самую верхнюю или правую  позицию
        полосы прокрутки.

                        SetPosition (переопределяется редко)
        -----------------------------------------------------------------

             procedure SetPosition(ThumbPos: Integer);

             Устанавливает положение указателя пpокpутки в соответствии с
        ThumbPos.  Если  ThumbPos  больше,  чем допускает диапазон полосы
        прокрутки, то положение  указателя  устанавливается  в  ближайшее
        значение в диапазоне.

             См. также: TScrollBar.GetPosition.

                         SetRange (переопределяется редко)
        -----------------------------------------------------------------

             procedure SetRange(LoVal, HiVal: Integer); virtual;

             Устанавливает допустимый диапазон  для  положений  указателя
        пpокpутки от LoVal до HiVal.

             См. также: TScrollBar.GetRange.

                       SetupWindow (иногда переопределяется)
        -----------------------------------------------------------------

             procedure SetupWindow; virtual;

             Инициализиpует полосу прокрутки,  вызывая  для  этого  метод
        SetupWindow, наследуемый из TControl, затем вызывает SetRange для
        установки диапазона полосы прокрутки от 0 до 100.

             См. также: TScrollBar.SetRange.

                                       Store
        -----------------------------------------------------------------

             procedure Store(var S: TStream);

             Записывает управляющий  элемент полосы прокрутки в потоке S,
        вызывая сначала метод Store, наследуемый из TControl, затем запи-
        сывает дополнительные поля (LineMagnitude и PageMagnitude),  вве-
        денные в TScrollBar.

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

                         Transfer (иногда переопределяется)
        -----------------------------------------------------------------

             function Transfer(DataPtr: Pointer; TransferFlag: Word):
                               Word; virtual;

             Пеpедает данные полосы прокрутки (которые содержат нижнее  и
        верхнее значение диапазона и позицию указателя) в/из буфера пере-
        дачи, на  который  указывает  DataPtr.  Если  TransferFlag  равен
        tf_GetData, то запись,  содержащая диапазон и позицию, передается
        по адресу памяти.  Если TransferFlag равен tf_SetData,  то запись
        считывается из ячейки памяти,  а ее значения используются для ус-
        тановки диапазона и позиции полосы прокрутки.

             Функция Transfer возвращает размер передаваемых данных.  За-
        пись передачи определяется следующим образом:

             TScrollBarTransferRec = record
                 LowValue: Integer;
                 HighValue: Integer;
                 Position: Integer;
             end;   
                              Назад | Содержание | Вперед