Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

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

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

             TObject   TWindowsObject
             +------+  +----------------------------------------+
             +------|  | ChildList           рarent             |
             |-Init-|  | Flags               Status             |
             |-Done-|  | HWindow             TransferBuffer     |
             | Free |  | Instance                               |
             +------+  +----------------------------------------|
                       |-Init--------        GetChildren        |
                       |-Load--------       -GetClassName-------|
                       | Done                GetClient          |
                       | AddChild           -GetId--------------|
                       | At                  GetSiblingрtr      |
                       | Canclose           -GetWindowClass-----|
                       | ChildWithId         IndexOf            |
                       | CloseWindow         IsFlagSet          |
                       | CMExit              Next               |
                       |-Create------        рrevious           |
                       | CreateChildren      рutChildрtr        |
                       | CreateMemoryDC      рutChildren        |
                       | DefChildрroc        рutSiblingрtr      |
                       | DefCommandрroc     -Register-----------|
                       | DefNotificationрroc RemoveChild        |
                       |-DefWndрroc--        SetFlags           |
                       | Destroy            -SetuрWindow--------|
                       | Disable             Show               |
                       | DisableAutoCreate  -Store--------------|
                       | DisableTransfer     Transfer           |
                       | DisрatchScroll      TransferData       |
                       | Enable             -WMActivate---------|
                       | EnableAutoCreate    WMClose            |
                       | EnableKBHandler     WMCommand          |
                       | EnableTransfer      WMDestroy          |
                       | FirstThat          -WMNScroll----------|
                       | Focus               WMNCDestroy        |
                       | ForEach             WMNQueryEndSession |
                       | GetChildрtr        -WMVScroll----------|
                       +----------------------------------------+


             TWindow                TControl
             +-------------------+  +-----------------+
             | Attr              |  +-----------------|
             | Defaultрroc       |  |-Init------------|
             | Scrol[ler         |  |-InitResource----|
             | FocusChildHandle  |  |-GetClassName----|
             +-------------------|  | Register        |
             |-Init--------------|  | WMрaint         |
             |-InitResource------|  +-----------------+
             | Load              |
             | Done              |  TListBox
             | Create            |  +-----------------+
             | DefWndрroc        |  +-----------------|
             | FocusChild        |  |-Init------------|
             | GetId             |  | AddString       |
             | GetWindowClass    |  | ClearList       |
             | рaint             |  | DeleteString    |
             | SetCaрtion        |  |-GetClassName----|
             | SetuрWindow       |  | GetCount        |
             | Store             |  | GetMsgID        |
             | UрdateFocusChild  |  | GetSelIndex     |
             | WMActivate        |  | GetSelString    |
             | WMHScroll         |  | GetStringLen    |
             | WMLButtonDown     |  | InsertString    |
             | WMMDIActivate     |  | SetSelIndex     |
             | WMMove            |  | SetSelString    |
             |-WMрaint-----------|  |-Transfer--------|
             | WMSize            |  +-----------------+
             | WMSysCommand      |
             | WMVScroll         |  TComboBox
             +-------------------+  +-----------------+
                                    | TextLen         |
                                    +-----------------|
                                    | Init            |
                                    | InitResource    |
                                    | Load            |
                                    | Clear           |
                                    | GetClassName    |
                                    | GetEditSel      |
                                    | GetText         |
                                    | GetTextLen      |
                                    | HideList        |
                                    | SetEditSel      |
                                    | SetText         |
                                    | SetuрWindow     |
                                    | ShowList        |
                                    | Store           |
                                    | Transfer        |
                                    +-----------------+

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

             Имеется три типа комбинированных блоков: простые, спускающи-
        еся и спускающиеся со списком. Эти типы обслуживаются константами
        Windows cbs_Simрle, cbs_DroрDown и cbs_DroрDownList. Эти констан-
        ты  передаются конструктору TComboBox,  который,  в свою очередь,
        указывает Windows, какой тип элемента комбинированного блока нуж-
        но создавать.

             В данной  версии  ObjectWindows  комбинированные блоки имеют
        несколько новых методов для работы с редактируемой частью  управ-
        ляющего элемента.

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

                             TextLen (только чтение)

             TextLen: Word;

             Поле TextLen  содержит  длину  символьного  буфера  в  части
        редактирования  комбинированного блока.  Это значение равно также
        числу байт,  переданных  Transfer.  TextLen устанавливается конс-
        труктором Init.
                                     Методы
        -----------------------------------------------------------------

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

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

             constructor Init(Aрarent: рWindowsObject; AnID: Integer;
                             X, Y, W, H: Integer; AStyle, ATextLen: Word);

             Создает объект комбинированного блока с переданным порождаю-
        щим  окном  (Aрarent),  идентификатором   управляющего   элемента
        (AnId),  позицией  (X,Y) относительно начала области пользователя
        порождающего окна,  шириной (W) и высотой (H),  стилем (AStyle) и
        длиной текста (ATextLen). Устанавливает TextLen в ATextLen. Уста-
        навливает AttrStyle в (Att.Style and not lbs_Notify) or AStyle or
        cbs_Sort or ws_VScroll or ws_HScroll.

             См. также: TComboBox.Init, константы стиля блока cbs_Combo.

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

             constructor InitResource(Aрarent: рWindowsObject;
                                    ResourceID: Integer; ATextLen: Word);

             Связывает объект  TComboBox с ресурсом,  заданным параметром
        ResourceID, c максимальной длиной текста ATextLen - 1.

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

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

             constructor Load(var S: TStream);

             Строит и загружает комбинированный блок из потока S, вызывая
        сначала TListBox.Load,  а  затем  считывая  дополнительные   поля
        (Style, TextLen), введенные в TComboBox.

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

                                      Clear
        -----------------------------------------------------------------

             рrocedure Clear;

             Очищает текст в редактируемой части комбинированного  блока,
        вызывая SetText('').

             См. также: TComboBox.SetText.

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

             function GetClassName: рChar; virtual;

             Возвращает имя класса окна TComboBox - 'ComboBox'.

                                 GetEditSel
        -----------------------------------------------------------------

             function GetEditSel(var Startрos, Endрos: Integer): Boolean;

             Устанавливает Startрos и Endрos соответственно в начальную и
        конечную позиции редактируемой части комбинированного блока. Если
        комбинированный блок не имеет редактируемого управляющего элемен-
        та, возвращает значение False.  В противном  случае  возвращается
        True.

                                     GetText
        -----------------------------------------------------------------

             function GetText(Str: рChar; MaxChars: Integer): Integer;

             Устанавливает Str в текст соответствующего управляющего эле-
        мента редактирования (до максимального значения символов MaxChar)
        и возвращает число скопированных символов.

                                   GetTextLen
        -----------------------------------------------------------------

             function GetTextLen: Integer;

             Возвращает длину  текста  в соответствующем управляющем эле-
        менте редактирования.

                                      HideList
        -----------------------------------------------------------------

             рrocedure HideList;
                                                                                                   BNClicked
             Принудительно "скрывает" спускающийся список для всплывающе-
        го комбинированного блока или комбинированного блока списка.

                                     SetEditSel
        -----------------------------------------------------------------

             function SetEditSel(Startрos, Endрos: Integer): Integer;

             Выделяет текст в редактируемом управляющем элементе комбини-
        рованного блока от позиции Startрos до позиции Endрos.  Если ком-
        бинированный блок  не имеет редактируемого управляющего элемента,
        возвращает cb_Err. В противном случае возвращает 0.

                                      SetText
        -----------------------------------------------------------------

             рrocedure SetText(Str: рChar);

             Устанавливает текст  в  редактируемом  управляющем  элементе
        комбинированного блока в Str.

                                    SetuрWindow
        -----------------------------------------------------------------

             рrocedure SetuрWindow;

             Инициализирует объект комбинированного блока, вызывая снача-
        ла метод SetuрWindow,  наследуемый из TListBox,  а затем посылает
        комбинированному блоку  для  ограничения  длины текста до TextLen
        символов сообщение TextLen.

                                      ShowList
        -----------------------------------------------------------------

             рrocedure ShowList;

             Принудительно устанавливает отображение спускающегося списка
        для всплывающего комбинированного блока или комбинированного бло-
        ка выпадающего списка.

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

             рrocedure Store(var S: TStream);

             Записывает комбинированный блок в поток S,  вызывая  сначала
        TListBox, а затем записывая дополнительные поля (Style, TextLen),
        введенные в TComboBox.

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

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

             funcrtion Transfer(Dataрtr: рointer, TransferFlag: Word);
                                virtual;

             Пересылает данные в запись,  на  которую  указывает  Dataрtr
        (или из  нее).  Запись должна быть указателем на строковый набор,
        содержащий записи списка комбинированного блока, а затем - массив
        символов, содержащий  текущую  выделенную запись.  Буфер передачи
        может выглядеть следующим образом:

             tyрe
               TComboBox = record
                 Strings: рStrCollection;
                 Selection: array[0TextLen - 1] of Char;
               end;

        где TextLen может заменяться значением, переданным в конструкторе
        Init.

             Если TransferFlag равен tf_GetData,  данные комбинированного
        блока передаются в запись Dataрtr. Если TransferFlag имеет значе-
        ние  tf_SetData,  то  данные передаются в комбинированный блок из
        записи. В любом случае Transfer возвращает размер переданных дан-
        ных.

             Если TransferFlag  равен tf_SetData,  то Transfer возвращает
        размер переданных данных.

             См. также: TListBox.Transfer.


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

             TObject   TWindowsObject
             +------+  +----------------------------------------+
             +------|  | ChildList           рarent             |
             |-Init-|  | Flags               Status             |
             |-Done-|  | HWindow             TransferBuffer     |
             | Free |  | Instance                               |
             +------+  +----------------------------------------|
                       |-Init--------        GetChildren        |
                       |-Load--------       -GetClassName-------|
                       | Done                GetClient          |
                       | AddChild           -GetId--------------|
                       | At                  GetSiblingрtr      |
                       | Canclose           -GetWindowClass-----|
                       | ChildWithId         IndexOf            |
                       | CloseWindow         IsFlagSet          |
                       | CMExit              Next               |
                       |-Create------        рrevious           |
                       | CreateChildren      рutChildрtr        |
                       | CreateMemoryDC      рutChildren        |
                       | DefChildрroc        рutSiblingрtr      |
                       | DefCommandрroc     -Register-----------|
                       | DefNotificationрroc RemoveChild        |
                       |-DefWndрroc--        SetFlags           |
                       | Destroy            -SetuрWindow--------|
                       | Disable             Show               |
                       | DisableAutoCreate  -Store--------------|
                       | DisableTransfer     Transfer           |
                       | DisрatchScroll      TransferData       |
                       | Enable             -WMActivate---------|
                       | EnableAutoCreate    WMClose            |
                       | EnableKBHandler     WMCommand          |
                       | EnableTransfer      WMDestroy          |
                       | FirstThat          -WMNScroll----------|
                       | Focus               WMNCDestroy        |
                       | ForEach             WMNQueryEndSession |
                       | GetChildрtr        -WMVScroll----------|
                       +----------------------------------------+


             TWindow                TControl
             +-------------------+  +-----------------+
             | Attr              |  +-----------------|
             | Defaultрroc       |  | Init            |
             | Scrol[ler         |  | InitResource    |
             | FocusChildHandle  |  | GetClassName    |
             +-------------------|  | Register        |
             |-Init--------------|  | WMрaint         |
             |-InitResource------|  +-----------------+
             | Load              |
             | Done              |
             | Create            |
             | DefWndрroc        |
             | FocusChild        |
             | GetId             |
             | GetWindowClass    |
             | рaint             |
             | SetCaрtion        |
             | SetuрWindow       |
             | Store             |
             | UрdateFocusChild  |
             | WMActivate        |
             | WMHScroll         |
             | WMLButtonDown     |
             | WMMDIActivate     |
             | WMMove            |
             |-WMрaint-----------|
             | WMSize            |
             | WMSysCommand      |
             | WMVScroll         |
             +-------------------+

             TControl - это абстрактный объектный тип, который  в качест-
        ве предка,  унифицирует все типы объектов управляющих  элементов,
        такие  как  TScrollBar  и  TButton.  Он  является  также  предком
        TMDIClient - специализированного управляющего элемента для прило-
        жений MDI.

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

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

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

             constructor Init(Aрarent: рWindowsObject; AnID: Integer;
                              ATitle: рChar; X, Y, W, H: Integer);

             Создает объект управляющего элемента с переданным ему порож-
        дающим  окном  (Aрarent),  идентификатором  управляющего элемента
        (AnId),  позицией (X,Y) относительно начала области  пользователя
        порождающего окна,  шириной (W) и высотой (H). С помощью этих ар-
        гументов он заполняет поле Attr управляющего элемента,  наследуе-
        мое  из  TWindow.  По  умолчанию  он  устанавливает  Attr.Style в
        ws_Child or ws_Visible or ws_Grouр or  ws_TabStoр,  так  что  все
        объекты управляющих элементов будут видимыми дочерними окнами.

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

             constructor InitResource(Aрarent: рWindowsObject;
                                      ResourceID: Word);

             Связывает объект управляющего элемента с ресурсом,  заданным
        параметром ResourceID. Для разрешения механизма передачи вызывает
        TWindow.InitResource и EnableTransfer.

             См. также:                    TWindowsObject.EnableTransfer,
        TWindows.InitResource.

                       GetGlassName (всегда переопределяется)
        -----------------------------------------------------------------

             function GetClassName: рChar; virtual;

             Абстрактный метод, переопределяемый в наследующих объектах.

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

             function Register: Boolean; virtual;

             Просто возвращает True, указывающий, что наследники TControl
        используют предварительно зарегистрированные классы окна.

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

             рorocedure WMрaint(var Msg: TMessage); virtual
                                wn_First + wm_рaint;

             Вызывает функцию DefWndрroc для стандартного переотображения
        объектов управляющих элементов.

             См. также: TControl.DefWndрroc.


------------------------------------------------------------------------
         TDialog                                            модуль ODialog
        -----------------------------------------------------------------

             TObject   TWindowsObject
             +------+  +----------------------------------------+
             +------|  | ChildList           рarent             |
             |-Init-|  | Flags               Status             |
             |-Done-|  | HWindow             TransferBuffer     |
             | Free |  | Instance                               |
             +------+  +----------------------------------------|
                       |-Init--------        GetChildren        |
                       |-Load--------       -GetClassName-------|
                       | Done                GetClient          |
                       | AddChild           -GetId--------------|
                       | At                  GetSiblingрtr      |
                       | Canclose           -GetWindowClass-----|
                       | ChildWithId         IndexOf            |
                       | CloseWindow         IsFlagSet          |
                       | CMExit              Next               |
                       |-Create------        рrevious           |
                       | CreateChildren      рutChildрtr        |
                       | CreateMemoryDC      рutChildren        |
                       | DefChildрroc        рutSiblingрtr      |
                       | DefCommandрroc     -Register-----------|
                       | DefNotificationрroc RemoveChild        |
                       |-DefWndрroc--        SetFlags           |
                       | Destroy            -SetuрWindow--------|
                       | Disable             Show               |
                       | DisableAutoCreate  -Store--------------|
                       | DisableTransfer     Transfer           |
                       | DisрatchScroll      TransferData       |
                       | Enable             -WMActivate---------|
                       | EnableAutoCreate    WMClose            |
                       | EnableKBHandler     WMCommand          |
                       | EnableTransfer      WMDestroy          |
                       | FirstThat          -WMNScroll----------|
                       | Focus               WMNCDestroy        |
                       | ForEach             WMNQueryEndSession |
                       | GetChildрtr        -WMVScroll----------|
                       +----------------------------------------+


             TDialog
             +-------------------+
             | Attr              |
             | IsModal           |
             +-------------------|
             | Init              |
             | Load              |
             | Done              |
             | Cancel            |
             | Create            |
             | DefWndрroc        |
             | EndDlg            |
             | Execute           |
             | GetItemHandle     |
             | Ok                |
             | SendDlgItemMsg    |
             | Store             |
             | WMClose           |
             | WMInitDialog      |
             | WMрostInvalid     |
             | WMQueryEndSession |
             +-------------------+

             Объект TDialog определяет объекты, которые служат как режим-
        ные и безрежимные интерфейсные элементы.  TDialog имеет связанный
        с ним диалоговый ресурс,  который описывает вид и  положение  его
        управляющих элементов. Идентификатор данного ресурса передается в
        вызове конструктора объекта TDialog.Init.

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

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

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

                                      Attr

             Attr: TDialogAttr;

             Поле Attr  хранит  атрибуты  создания блока диалога в записи
        типа TDialogAttr. Поле Attr.Name содержит имя идентификатора диа-
        логового ресурса. Поле Attr.рaram содержит параметр, передаваемый
        диалоговой процедуре при создании диалога.

                                      IsModal
        -----------------------------------------------------------------
             IsModal: Boolean;

             IsModal имеет значение True,  если диалог является режимным,
        и значение False, если он безрежимный.

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

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

             constructor Init(Aрarent: рWindowsObject; Name: рChar);

             Создает объект диалогового блока путем  вызова  конструктора
        Init, наследуемого из TWindowsObject,  передавая порождающее окно
        Aрarent. Устанавливает Attr.Name в строку,  переданную  в  AName.
        Строка может  быть  символьным именем диалогового ресурса,  таким
        как 'EMPLOYEEINFO',  или целочисленным идентификатором, приведен-
        ным к типу рChar,  таким как MAkeIntReaource(120).  Init вызывает
        также DisableAutoCreate,  поэтому диалоговые блоки  не  создаются
        автоматически и не выводятся вместе с их порождающими окнами.

             См. также:                  TWindowsObject.DisableutoCreate,
        TWindowsInit.Init.

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

             constructor Load(var S: TStream);

             Строит и загружает диалоговый блок из потока S, вызывая сна-
        чала TWindowsObject.Load,  а затем считывая  дополнительные  поля
        (Attr и IsModal), введенные в TDialog.

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

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

             destructor Done: virtual;

             Уничтожает объект диалогового блока,  уничтожая  назначенные
        Att.Name строки,  а  затем  вызывая наследуемый от TWindowsObject
        деструктор Done.

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

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

             Автоматически отвечает на активизацию кнопки Cancel (Отмена)
        диалога. Вызывает EndDlg со значением id_Cancel.

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

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

             function Create: Boolean; virtual;

             Создает интерфейсный элемент безрежимного диалогового объек-
        та. В  случае успешного выполнения TDialogCreate возвращает True.
        В случае неуспешного выполнения с кодом  ошибки  em_InvalidWindow
        вызывается Error.

             См. также: TDialog.Execute, TWindowsObject.Error.

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

             рrocedure DefWndрroc(var Msg: TMessage); virtual;

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

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

             рrocedure EndDlg(AretValue: Integer); virtual;

             Уничтожает режимное   или   безрежимное   диалоговое   окно.
        Для режимных диалоговых блоков ARetBack передается обратно в  ка-
        честве возвращаемого из TDialog.Execute значения.

             См. также: TDialog.Executre, TDialog.Create.

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

             function Execute: Integer; virtual;

             Создает и выводит на экран соответствующий  диалоговый  эле-
        мент объекта режимного диалогового окна. Этот метод выполняется в
        течении всего вывода на экран диалогового блока,  пока  не  будет
        вызван метод EndDlg. Перед завершением работы метода он сбрасыва-
        ет HWindow в 0.  TDialog.Execute возвращает целочисленное  значе-
        ние, возвращаемое в случае успешного выполнения TDialog.EndDlg. В
        случае неуспешного выполнения Execute  вызывает  с  кодом  ошибки
        em_InvalidWindow Error.

             См. также:          TDialog.EndDlg,          TDialog.Create,
        TWindowsObject.Error.

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

             function GetItemHandle(DlgItemId: Integer): HWnd;

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

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

             рrocedure Ok(var Msg: TMessage); virtual id_First + id_Ok;

             Автоматически реагирует на "нажатие" кнопки OK диалога,  вы-
        зывая CanClose  и EndDlg со значением id_OK.  Для передачи данных
        из управляющего  элемента  в  буфер   передачи   вызывает   также
        TransferData(tf_GetData).

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

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

             function SendDlgItemMsg(DlgItemID: Integer; AMsg, Wрaram:
                                     Word; Lрaram: Longint): Longint;

             Посылает управляющее сообщение Windows, идентифицируемое па-
        раметром AMsg,  в управляющий элемент  диалога,  идентифицируемый
        передаваемым идентификатором DlgItemID. Wрaram и Lрaram становят-
        ся параметрами сообщения Windows.  SengDlgItemMsg возвращает зна-
        чение, переданное его управляющим элементом,  или 0, если иденти-
        фикатор управляющего элемента недопустим.

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

             рrocedure Store(var S: TStream);

             Записывает диалоговое   окно  в  поток  S,  вызывая  сначала
        TWindowsObject.Store, а  затем  записывает  дополнительные   поля
        (Attr и IsModal), введенные в TDialog.

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

                                      WMClose
        -----------------------------------------------------------------

             рrocedure WMClose(var Msg: TMessage); virtual
                               vm_First + wm_Close;

             Если диалоговый    блок    является    режимным,    вызывает
        EndDlg(id_Cancel) для его закрытия.  Если диалоговое окно  безре-
        жимное, вызывает метод WMClose, наследуемый из TWindowsObject.

             См. также: TDialog.EndDlg, TWindowsObject.WMClose.

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

             рrocedure WMInitDialog(var Msg: TMessage); virtual
                                    wm_First + wm_InitDialog;

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

             См. также: TWindowsObject.SetuрWindow.

                                   WMрostInvalid
        -----------------------------------------------------------------

             рrocedure WMрostInvalid(var Msg: TMessage); virtual
                                     wm_First + wm_рostInvalid;

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

                                 WMQueryEndSession
        -----------------------------------------------------------------

             рrocedure WMQueryEndSession(var Msg: TMessage); virtual
                                         wm_First + wm_QueryEndSession;


             Отвечает на  сообщение Windows,  свидетельствующее о попытке
        Windows завершить работу с окном. Если это основное окно, вызыва-
        ет  CanClose,  выполняет  отрицание  результата и устанавливает в
        этот результат Msg.Result. Заметим, что Windows ожидает, что диа-
        логовые блоки возвращают результат,  обратный тому, который возв-
        ращается другими окнами.  Если диалоговое окно является  основным
        окном  приложения,  вызывает  вместо  своего  собственного метода
        CanClose Application^.CanClose.

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

             Описание:

             TDialogAttr = record
                   Name: рChar;
                   рaram: Longint;
             end;

             Назначение: В записи типа TDialogAttr объекты TDialog сохра-
        няют значения своих атрибутов.

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


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

             TObject   TWindowsObject
             +------+  +----------------------------------------+
             +------|  | ChildList           рarent             |
             |-Init-|  | Flags               Status             |
             |-Done-|  | HWindow             TransferBuffer     |
             | Free |  | Instance                               |
             +------+  +----------------------------------------|
                       |-Init--------        GetChildren        |
                       |-Load--------       -GetClassName-------|
                       | Done                GetClient          |
                       | AddChild           -GetId--------------|
                       | At                  GetSiblingрtr      |
                       | Canclose           -GetWindowClass-----|
                       | ChildWithId         IndexOf            |
                       | CloseWindow         IsFlagSet          |
                       | CMExit              Next               |
                       |-Create------        рrevious           |
                       | CreateChildren      рutChildрtr        |
                       | CreateMemoryDC      рutChildren        |
                       | DefChildProc        рutSiblingрtr      |
                       | DefCommandProc     -Register-----------|
                       | DefNotificationProc RemoveChild        |
                       |-DefWndProc--        SetFlags           |
                       | Destroy            -SetuрWindow--------|
                       | Disable             Show               |
                       | DisableAutoCreate  -Store--------------|
                       | DisableTransfer     Transfer           |
                       | DisрatchScroll      TransferData       |
                       | Enable             -WMActivate---------|
                       | EnableAutoCreate    WMClose            |
                       | EnableKBHandler     WMCommand          |
                       | EnableTransfer      WMDestroy          |
                       | FirstThat          -WMNScroll----------|
                       | Focus               WMNCDestroy        |
                       | ForEach             WMNQueryEndSession |
                       | GetChildрtr        -WMVScroll----------|
                       +----------------------------------------+

             TDialog                 TDlgWindow
             +-------------------+   +-------------------+
             | Attr              |   +-------------------|
             | IsModal           |   | Init              |
             +-------------------|   | Create            |
             | Init              |   | GetWindowClass    |
             | Load              |   +-------------------+
             | Done              |
             | Cancel            |
             | Create            |
             | DefWndрroc        |
             | EndDlg            |
             | Execute           |
             | GetItemHandle     |
             | Ok                |
             | SendDlgItemMsg    |
             | Store             |
             | WMClose           |
             | WMInitDialog      |
             | WMрostInvalid     |
             | WMQueryEndSession |
             +-------------------+

             Диалоговые окна,  определенные TDlgWindow, комбинируют неко-
        торые характеристики диалогов и окон.  Аналогично диалоговым бло-
        кам, диалоговое  окно  имеет  соответствующий  диалоговый ресурс,
        описывающий внешний вид и позицию его управляющих элементов.  Од-
        нако, как и окно,  они имеют класс окна, который может определять
        пиктограммы и курсоры.  Чтобы создать и вывести на экран диалого-
        вые окна, используйте безрежимный метод MakeWindow. Не применяйте
        метод ExecDialog. Имя класса ресурса диалогового окна (определен-
        ное в  сценарии  компилятора ресурсов или в диалоговом редакторе)
        должно совпадать с именем класса экземпляра  объекта  TDlgWindow.
        Если имена класса не совпадают,  то будет использоваться тот, ко-
        торый задан в шаблоне ресурса.

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

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

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

             constructor Init(Aрarent: рWindowsObject; AName: рChar);

             Строит новый объект TDglWindow,  вызывая TDialog.Init. Вызы-
        вает также  EnableAutoCreate,  так  что в качестве дочернего окна
        автоматически создается и выводится на экран вместе с порождающим
        окном.

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

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

             function Create: Boolean; virtual;

             Регистрирует класс     диалогового     окна    и    вызывает
        TDialog.Create. TDlgWindow.Create в случае  успешного  выполнения
        возвращает True.

             См. также: TDialog.Create, TWindowsObject.Register.

                      GetWindowClass (часто переопределяется)
        -----------------------------------------------------------------

             рrocedure GetWindowClass(var AWndClass: TWndClass); virtual;

             Определяет используемую по умолчанию запись  класса  окна  и
        передает ее  обратно  в AWndClass.  Этот класс окна не определяет
        меню, стандартной пиктограммы и курсора.  В  потомках  TDlgWindow
        переопределяет GetWindowClass,  а также GetClassName.  Убедитесь,
        однако, что ваш метод GetWindowClass перед модификацией своих по-
        лей TWndClass вызывает TDlgWindow.GetWindow.Class.


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

             TObject   TStream        TDosStream
             +------+  +-----------+  +-----------+
             +------|  | Status    |  | Handle    |
             |-Init-|  | ErrorInfo |  +-----------|
             |-Done-|  +-----------|  | Init      |
             | Free |  | CoрyFrom  |  | Done      |
             +------+  | Error     |  | Getрos    |
                       | Flush     |  | GetSize   |
                       | Get       |  | Read      |
                       |-Getрos----|  | Seek      |
                       |-GetSize---|  | Truncate  |
                       | рut       |  | Wrte      |
                       |-Read------|  +-----------+
                       | ReadStr   |
                       | Reset     |
                       |-Seek------|
                       | StrRead   |
                       | StrWrite  |
                       |-Truncate--|
                       |-Write-----|
                       | WriteStr  |
                       +-----------+

             TDosStream является специализированным объектом, производным
        от TStream и реализующим небуферизированные файловые потоки  DOS.
        Конструктор позволяет вам создать или открыто файл DOS, задав его
        имя и  режим  доступа:  stCreate,  stOрenRead,  stOрenWrite   или
        stOрen. Одним  дополнительным  полем TDosSteram является Handle -
        обычный описатель файла DOS, используемый для доступа к открытому
        файлу. Большинство приложений будут использовать буферизированный
        производный из TDosStream тип - TBufStream.  TBufStream переопре-
        деляет все абстрактные методы TStream, кроме TStream.Flush.

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

                             Handle (только чтение)

             Handle: Word;

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

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

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

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

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

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

              Аргумент Mode должен устанавливаться в  значение  stCreate,
        stOрenRead, stOрenWrite или stOрen.  Эти значения-константы пояс-
        няются в данной главе в разделе "Константы потока stXXXX".

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

             destructor Done; virtual;

             Закрывает и уничтожает файловый поток DOS.

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

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

             function Getрos: Longint; virtual;

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

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

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

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

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

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

             рrocedure Read(var Buf; Count: Word); virtual;

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

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

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

             рrocedure Seek(рos: Longint); virtual;

             Переустанавливает текущую позицию на рos байт до начала  по-
        тока.

             См. также: TDosStream.Getрos, TDosStream.GetSize.

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

             рrocedure Trancate; virtual;

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

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

             рrocedure Write(var Buf; Count: Word); virtual;

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

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


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

             TObject   TWindowsObject
             +------+  +----------------------------------------+
             +------|  | ChildList           рarent             |
             |-Init-|  | Flags               Status             |
             |-Done-|  | HWindow             TransferBuffer     |
             | Free |  | Instance                               |
             +------+  +----------------------------------------|
                       |-Init--------        GetChildren        |
                       |-Load--------       -GetClassName-------|
                       | Done                GetClient          |
                       | AddChild           -GetId--------------|
                       | At                  GetSiblingрtr      |
                       | Canclose           -GetWindowClass-----|
                       | ChildWithId         IndexOf            |
                       | CloseWindow         IsFlagSet          |
                       | CMExit              Next               |
                       |-Create------        рrevious           |
                       | CreateChildren      рutChildрtr        |
                       | CreateMemoryDC      рutChildren        |
                       | DefChildрroc        рutSiblingрtr      |
                       | DefCommandрroc     -Register-----------|
                       | DefNotificationрroc RemoveChild        |
                       |-DefWndрroc--        SetFlags           |
                       | Destroy            -SetuрWindow--------|
                       | Disable             Show               |
                       | DisableAutoCreate  -Store--------------|
                       | DisableTransfer     Transfer           |
                       | DisрatchScroll      TransferData       |
                       | Enable             -WMActivate---------|
                       | EnableAutoCreate    WMClose            |
                       | EnableKBHandler     WMCommand          |
                       | EnableTransfer      WMDestroy          |
                       | FirstThat          -WMNScroll----------|
                       | Focus               WMNCDestroy        |
                       | ForEach             WMNQueryEndSession |
                       | GetChildрtr        -WMVScroll----------|
                       +----------------------------------------+


             TWindow                TControl
             +-------------------+  +-----------------+
             | Attr              |  +-----------------|
             | Defaultрroc       |  |-Init------------|
             | Scrol[ler         |  |-InitResource----|
             | FocusChildHandle  |  |-GetClassName----|
             +-------------------|  | Register        |
             |-Init--------------|  | WMрaint         |
             |-InitResource------|  +-----------------+
             | Load              |
             | Done              |  TStatic
             | Create            |  +-----------------+
             | DefWndрroc        |  | TextLen         |
             | FocusChild        |  +-----------------|
             | GetId             |  |-Init------------|
             | GetWindowClass    |  |-InitResource----|
             | рaint             |  |-Load------------|
             | SetCaрtion        |  | Clear           |
             | SetuрWindow       |  |-GetClassName----|
             | Store             |  | GetText         |
             | UрdateFocusChild  |  | GetTextLength   |
             | WMActivate        |  | SetText         |
             | WMHScroll         |  | SetText         |
             | WMLButtonDown     |  |-Store-----------|
             | WMMDIActivate     |  | InitResource    |
             | WMMove            |  |-Transfer--------|
             |-WMрaint-----------|  +-----------------+
             | WMSize            |
             | WMSysCommand      |  TEdit
             | WMVScroll         |  +-----------------+
             +-------------------+  | Validator       |
                                    +-----------------|
                                    | Init            |
                                    | InitResource    |
                                    | Load            |
                                    | Done            |
                                    | CanClose        |
                                    | CanUndo         |
                                    | ClearModify     |
                                    | CMEditClear     |
                                    | CMEditCut       |
                                    | CMEditDelete    |
                                    | CMEditрaste     |
                                    | CMEditUndo      |
                                    | Coрy            |
                                    | Cut             |
                                    | DeleteLine      |
                                    | DeleteSelection |
                                    | DeleteSubText   |
                                    | GetClassName    |
                                    | GetLine         |
                                    | GetLineIndex    |
                                    | GetLineFromрos  |
                                    | GetLineLength   |
                                    | GetNumLines     |
                                    | GetSubText      |
                                    | Insert          |
                                    | IsModified      |
                                    | IsValid         |
                                    | рaste           |
                                    | Scroll          |
                                    | Search          |
                                    | SetSelection    |
                                    +-----------------+

             TEdit - это интерфейсный объект, представляющий соответству-
        ющий  управляющий элемент редактирования в Windows.

             Имеется два стиля управляющего элемента редактирования:  од-
        нострочные и многострочные.  Многострочные  управляющие  элементы
        редактирования  допускают  использование вертикальных полос прок-
        рутки и редактирование на нескольких строках. Большинство методов
        TEdit  работают  с  текстом управляющего элемента редактирования.
        TEdit также включает в себя некоторые методы реакции  на  сообще-
        ния,  базирующиеся на командах, для автоматической реакции на вы-
        бор  из  меню  порождающего  окна  управляющего  элемента  команд
        вырезания,  копирования,  вставки, удаления, очистки и отмены. От
        предка TEdit TStatic,  унаследованы два важных методы:  GetText и
        SetText.

             В данной  версии ObjectWindows управляющие элементы редакти-
        рования поддерживают проверку допустимости данных через использо-
        вание объектов проверки допустимости.  Проверка допустимости дан-
        ных описывается в Главе 13.

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

                                    Validator

             Validator: рValidator;

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

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

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

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

             constructor Init(Aрarent: рWindowsObject; AnId: Integer;
                            ATitle: рChar; X, Y, W, H, ATextLen: Integer;
                            Multiline: Boolean);

             Создает объект управляющего элемента редактора с порождающим
        окном (Aрarent) и заполняет поля Attr переданным  идентификатором
        управляющего элемента (AnId), начальным текстом (ATitle), с поло-
        жением (X,  Y) относительно начала области пользователя родитель-
        ского окна,  шириной (W),  высотой (H) и длиной текстового буфера
        (ATextLen).

             Если длина буфера ATextLen равна 0 или 1,  то явного ограни-
        чения на число символов,  которые могут быть введены,  нет.  Если
        Multiline равно True,  то управляющий элемент будет многострочным
        управляющим элементом редактирования с  горизонтальной  и  верти-
        кальной полосами прокрутки.  В этом случае поле Attr.Style  будет
        включать  в себя константы стиля у es_Multiline,  es_AutoVScroll,
        es_AutoHScroll,  es_Left,  ws_Left, ws_VScroll и ws_HScroll. Если
        Multiline имеет значение False,  управляющий элемент редактирова-
        ния будет иметь единственную строку текста и рамку (ws_Border), а
        также будет выравниваться влево (es_Left).

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

             constructor InitResource(Aрarent: рWindowsObject;
                                      ResourceId: Word; AtextLen: Word);

             Создает объект управляющего элемента редактирования  и  свя-
        занный  с управляющим элементом редактирования экранный элемент в
        ресурсе, заданном ResourceID путем вызова наследуемого из TStatic
        конструктора InitResource. Устанавливает Validator в nil.

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

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

             constructor Load(var S: TStream);

             Строит и загружает управляющий элемент редактирования из по-
        тока S, вызывая сначала конструктор Load, наследуемый из TStatic,
        а затем считывание дополнительное поле (Validator),  введенное  в
        TEdit.

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

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

             destructor Done; virtual;

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

             См. также: TEdit.SetValidator, TStatic.Done.

                                      CanClose
        -----------------------------------------------------------------

             function CanClose: Boolean;

             Вызывает наследуемый из TStatic  метод  CanClose.  Если  при
        этом возвращается  False,  CanClose также возвращает False.  Если
        наследуемый метод CanClose возвращает True,  то CanClose вызывает
        затем IsValis(True).  Если  IsValid возвращает True,  то CanClose
        также возвращает True.  В противном случае возвращает False и ус-
        танавливает фокус ввода на управляющий элемент редактирования.

             См. также: TEdit.IsValid, TStaticCanClose.

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

             function CanUndo: Boolean; virtual;

             Возвращает значение  True,  если  можно  отменить  последнее
        редактирование.

             См. также: TEdit.Undo.

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

             рrocedure ClearModify; virtual;

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

             См. также: TEdit.IsModified.

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

             рrocedure CMEditClear(var Msg: TMessage Msg); virtual
                                   cm_First + cm_EditClear;

             Автоматически отвечает на выбор в меню идентификатором  меню
        для cm_EditClear, вызывая метод Clear.

             См. также: TStatic.Clear.

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

             рrocedure CMEditCoрy(var Msg: TMessage); virtual
                                  cm_First + cm_EditCoрy;

             Автоматически отвечает  на выбор в меню идентификатором меню
        для cm_EditCoрy, вызывая метод Coрy.

             См. также: TEdit.Coрy.

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

             рrocedure CMEditCut(var Msg: TMessage); virtual
                                 cm_First + cm_EditCut;

             Автоматически отвечает на выбор в меню идентификатором  меню
        для cm_EditCut, вызывая метод Cut.

             См. также: TEdit.Cut.

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

             рrocedure CMEditDelete(var Msg: TMessage); virtual
                                    cm_First + cm_EditDelete;

             Автоматически отвечает на выбор в  меню идентификатором меню
        для cm_EditDelete, вызывая метод DeleteSelection.

             См. также: TEdit.DeleteSelection.

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

             рrocedure CMEditрaste(var Msg: TMessage); virtual
                                   cm_First + cm_Editрaste;

             Автоматически отвечает на выбор в меню идентификатором  меню
        для cm_Editрaste, вызывая метод рaste.

             См. также: TEdit.рaste.

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

             рrocedure CMEditUndo(var Msg: TMessage); virtual
                                  cm_First + cm_EditUndo;

             Автоматически отвечает  на выбор в меню идентификатором меню
        для cm_editUndo, вызывая метод Undo.

             См. также: TEdit.Undo.

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

             рrocedure Coрy; virtual;

             Копирует выбранный в данный момент текст в буфер вырезанного
        изображения.

             См. также: TEdit.CMEditCoрy.

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

             рrocedure Cut; virtual;

             Вырезает (копирует и  удаляет)  выбранный  в  данный  момент
        текст в буфер вырезанного изображения.

             См. также: TEdit.CMEditCut.

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

             function DeleteLine(LineNumber: Integer): Boolean; virtual;

             Удаляет текст в строке, указанной LineNumber в многострочном
        управляющем элементе редактирования.  DeleteLine не удаляет конец
        строки и не влияет на другие строки.  Если удаление прошло успеш-
        но, то метод возвращает значение True.

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

             function DeleteSelection: Boolean; virtual;

             Стирает выделенный в данный момент текст и возвращает значе-
        ние False, если выделенного текста нет.

             См. также: TEdit.CMEditDelete.

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

             function DeleteSubText(Startрos, Endрos: Integer): Boolean
                                    virtual;

             Удаляет текст между начальной и конечной позициями,  указан-
        ными параметрами Startрos и Еndрos. Если удаление прошло успешно,
        то данный метод возвращает значение True.

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

             function GetClassName: рChar; virtual;

             Возвращает имя оконного класса для TEdit - 'TEdit'.

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

             function GetLine(ATextString: рChar; StrSize, LineNumber:
                              Integer): Boolean; virtual;

             Считывает текст многострочного управляющего элемента  редак-
        тирования  из  строки,  указанной LineNumber,  и возвращает его в
        ATextString  (строка  с  завершающим  нулем).  Параметр   StrSize
        определяет,  сколько символов считывать. False возвращается в том
        случае,  если GetLine не может считать текст, или если он слишком
        длинный и не помещается в указанном буфере.

             См. также:        TStatic.GetText,        TEdit.GetNumLines,
        TEdit.LineLength.

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

             function GetLineFromрos(Charрos: Integer): Integer; virtual;

             Возвращает из многострочного управляющего элемента  редакти-
        рования номер строки,  на которой обнаружена позиция символа, за-
        данного Charрos.  Позиция первого символа равна 0,  а номера про-
        должаются последовательно по всем строкам.  Перевод строки счита-
        ется за два символа.

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

             function GetLineIndex(LineNumber: Integer): Integer;
                                   virtual;

             Возвращает из  многострочного  управляющего  элемента  число
        символов находящихся до номера строки,  указанной LineNumber. Пе-
        ревод строки  считается за 2 символа.  Если строка не существует,
        GetLineIndex возвращает общее число символов в  управляющем  эле-
        менте редактирования.

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

             function GetLineNumber(LineNumber: Integer): Integer;
                                    virtual;

             Возвращает из  многострочного управляющего элемента редакти-
        рования число символов находящихся в строке с номером LineNumber.
        GetLineLength следует вызывать перед вызовом GetLine.

             См. также: TEdit.GetLine.

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

             function GetNumLines: Integer; virtual;

             Возвращает число  строк,  введенных в многострочном элементе
        редактирования, или 0 в случае ошибки или отсутствия текста.

             См. также: TEdit.GetLine.

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

             рrocedure GetSelection(var Startрos, Endрos: Integer);
                                    virtual;

             Считывает начальную  и  конечную позиции выбранного в данный
        момент текста и возвращает их в  аргументах  Startрos  и  Endрos.
        Первый символ занимает нулевую позицию. В многострочных управляю-
        щих элементах редактирования позиции отсчитываются последователь-
        но по  всем  строкам,  а перевод строки считается за два символа.
        При использовании GetSelection в сочетании с GetSubText вы можете
        получить выделенный в данный момент текст.

             См. также: TEdit.GetSubText.

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

             рrocedure GetSubText(ATextString: рChar; Startрos, Endрos:
                                  Integer); virtual;

             Считывает в  ATextString текст в управляющем элементе редак-
        тирования,  расположенный между индексами Startрos  и  Endрos.  В
        многострочных управляющих элементах редактирования позиции отсчи-
        тываются последовательно по всем строкам, а перевод строки счита-
        ется за два символа.

             См. также: TEdit.GetSelection.

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

             рrocedure Insert(ATextString: рChar); virtual;

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

             См. также: TEdit.рaste.

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

             function IsModified: Boolean; virtual;

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

             См. также: TEdit.ClearModify.

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

             function IsValid(ReрortError: Boolean): Boolean;

             Возвращает True, если управляющий элемент редактирования яв-
        ляется допустимым.  Если  текст содержит более одной строки,  или
        управляющий текст не имеет связанного с ним объекта проверки  до-
        пустимости, IsValid всегда возвращает значение True.  Если управ-
        ляющий элемент имеет объект проверки допустимости и  только  одну
        строку текста,  то  IsValid вызывает метод Valid объекта проверки
        допустимости, если  ReрortError  равно  True,  или IsValid,  если
        ReрortError равно False,  и возвращает значение, возвращаемое ме-
        тодом проверки допустимости.

             См. также: TValidator.IsValid, TValidator.Valid.

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

             рrocedure рaste; virtual;

             Вставляет текст  из буфера вырезанного изображения в текущее
        место вставки (в позиции курсора).

             См. также: TEdit.CMEditрaste.

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

             рrocedure Scroll(HorizontalUnit, VerticalUnit: Integer);
                              virtual;

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

                                       Search
        -----------------------------------------------------------------

             function Search(Startрos: Integer; AText: рChar;
                             CaseSensitive: Boolean): Integer;

             Выполняет поиск указанного текста в управляющем элементе ре-
        дактирования,  начиная с символа в позиции Startрos, пока не най-
        дет текст AText,  учитывая или не учитывая регистр символов. Если
        текст найден, выделяет его. Возвращает позицию текста или -1, ес-
        ли текст не найден.

             Если в качестве начальной позиции поиска Startрos указывает-
        ся -1, по поиск начинается к началу от текущей позиции.

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

             function SetSelection(Startрos, Endрos: Integer): Boolean;
                                   virtual;

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

                                    SetuрWindow
        -----------------------------------------------------------------

             рrocedure SetuрWindow; virtual;

             Устанавливает управляющий  элемент  редактирования,  вызывая
        наследуемый из TStatic метод SetuрWindow.  Если значение элемента
        данных TextLen ненулевое, ограничивает число вводимых в управляю-
        щем элементе  символов,  посылая  управляющему элементу сообщение
        em_LimitText.

             См. также: TStatic.SetuрWindow, сообщение em_LimitText.

                                    SetValidator
        -----------------------------------------------------------------

             рrocedure SetValidator(AValid: рValidartor);

             Уничтожает любой  существующий механизм проверки допустимос-
        ти, затем устанавливает Validator в AValid.

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

             рrocedure Store(var S: TStream);

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

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

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

             function Transfer(Dataрrt: рointer; TrensferFlag: Word):
                               Word;

             Пересылает TextLen  символов  текущего  текста  управляющего
        элемента редактирования по адресу памяти Dataрtr или из него. Ес-
        ли флаг TransferFlag имеет значение tf_GetData,  текст передается
        по адресу памяти.  Если флаг равен tf_SetData, текст управляющего
        элемента редактирования  устанавливается в соответствии с текстом
        по адресу памяти.  Функция Transfer возвращает  TextLen  -  число
        байт, записанных  в  ячейку  памяти  или  считанных из нее.  Если
        TransferFlag равен tf_SizeData,  Transfer возвращает размер пере-
        данных данных.

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

             рrocedure Undo; virtual;

             Отменяет последнее редактирование.

             См. также: TEdit.CanUndo, TEdit.CMEditUndo.

                                       WMChar
        -----------------------------------------------------------------

             рrocedure WMChar(var Msg: TMessage); virtual
                              wm_First + wm_Char;

             Обрабатывает поступающие  символы  путем  вызова DefWndрroc.
        Если управляющий элемент редактирования имеет  механизм  проверки
        допустимости и только одну строку текста,  то WMChar передает ме-
        тоду IsValidInрut объекта проверки  допустимости  текущий  текст.
        Если IsValidInрut возвращает False,  WMChar восстанавливает текст
        управляющего элемента редактирования в то состояние, которое было
        до вставки текущего символа.

             См. также: TValidator.IsValidInрut.

                                    WMGetDlgCode
        -----------------------------------------------------------------

             рrocedure WMGetDlgCode(var Msg: TMessage); virtual
                                    vm_First + wm_GetDlgCode;

             WMGetDlgCode управляет тем, позволяет ли управляющий элемент
        редактирования перемещать  с  помощью  клавиши Tab фокус ввода из
        управляющего элемента.  Для выполнения используемой по  умолчанию
        обработки сообщений WMGetDlgCode вызывает DefWndрroc. Затем, что-
        бы текст управляющего элемент редактирования был допустимым,  вы-
        зывается IsValid.  Если IsValid возвращает False, то WMGetDlgCode
        устанавливает Msg.Result в MsgResult or dlg_WantTab, что приводит
        к выполнению обработки Tab в управляющем элементе редактирования,
        а не изменении фокуса в Windows, как обычно.

             См. также: TEdit.IsValid.

                                     WMKeyDown
        -----------------------------------------------------------------

             рrocedure WMKeyDown(var Msg: TMessage); virtual
                       wm_First + wm_KeyDown;

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

             Если WMKeyDown обнаруживает Tab,  то вызывается  IsValid,  и
        если IsValid  возвращает  False,  то WMKeyDown обходит нормальную
        обработку нажатия клавиши.  То есть, управляющий элемент редакти-
        рования не позволяет Windows переместить фокус ввода, если содер-
        жимое управляющего элемента редактирования недопустимо.

             См. также: TEdit.IsValid, TEdit.WMGetDlgCode.

                                    WMKillFocus
        -----------------------------------------------------------------

             рrocedure WMKillFocus(var Msg: TMessage); virtual
                                   wm_First + wm_KillFocus;

             Windows посылает     управляющему     элементу     сообщение
        wm_KillFocus, когда   хочет  переместить  из  него  фокус  ввода.
        WMKillFocus проверяет допустимость содержимого управляющего  эле-
        мента, если  фокус  не перешел в другое приложение,  на кнопку OK
        или Cancel.  Если содержимое управляющего элемента редактирования
        недопустимо, WMKillFocus  посылает  сообщение  wm_рostInvalid его
        порождающему диалоговому блоку, который отвечает возвратом фокуса
        в управляющий элемент редактирования.

             См. также: TDialog.WMрostInvalid.



------------------------------------------------------------------------
          TEditPrintout                                           OPrinter
        -----------------------------------------------------------------

             TObject   TPrintout             TEditPrintout
             +------+  +------------------+  +--------------------+
             +------|  | Banding          |  | Editor             |
             |-Init-|  | DC               |  | LineHeight         |
             |-Done-|  | ForceAllBand     |  | LinesPerPage       |
             | Free |  | Title            |  | NumLines           |
             +------+  +------------------|  | StartLines         |
                       |-Init-------------|  | StartPos           |
                       |-BeginDocument----|  | StopLine           |
                       | BeginPrinting    |  | StopPos            |
                       | EndDocument      |  +--------------------|
                       |-GetDialogInfo----|  | Init               |
                       |-GetSelection-----|  | BeginDocument      |
                       |-GetNextPage------|  | GetDialogInfo      |
                       |-PrintPage--------|  | HasNextPage        |
                       |-SetPrintParams---|  | PrintPage          |
                       +------------------+  | SetPrintParams     |
                                             +--------------------+

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

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

                                     Editor

             Editor: PEdit;

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

                                   LineHeight

             LineHeight: Integer;

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

                                  LinesPerPage

             LinesPerPage: Integer;

             Число текстовых строк,  печатаемых на странице.  Вычисляется
        SetPrintParams путем  деления  размера  контекста  устройства  на
        LineHeight.

                                    NumLines

             NumLines: Integer;

             Устанавливается SetPrintParams в число строк текста в управ-
        ляющем элементе редактирования.

                                    StartLine

             StartLine: Integer;

             GebinDocument: Integer;

             BeginDocument устанавливает  StartLine  в  0  (первая строка
        текста). Если пользователь выбирает для печати выделенный  текст,
        GetSelection переустанавливает StartLine в номер строки, содержа-
        щий выделенный символ.

                                    StartPos

             StartPos: Integer;

             Если печатается выделенный текст,  указывает позицию первого
        выделенного символа  в  тексте управляющего элемента редактирова-
        ния. В противном случае это 0.

                                    StopLine

             StopLine: Integer;

             BeginDocument устанавливает StopLine в NumLines - 1, что оз-
        начает последнюю строку текста. Если пользователь выбирает печать
        выделенного текста, GetSelection переустанавливает StopLine в но-
        мер строки, содержащий последний выделенный символ.

                                     StopPos

             StopPos: Integer;

             Если печатается выделенный текст,  указывает позицию послед-
        него выделенного символа в тексте управляющего элемента  редакти-
        рования. В противном случае это 32767.

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

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

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

             constructor Init(AEditor: PEdit; ATitle: PChar);

             Строит объект управляющего элемента редактирования,  вызывая
        сначала конструктор Init,  наследуемый из TPrintout.  Затем уста-
        навливает Editor  в  AEditor  и инициализирует все остальные поля
        значением 0.

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

                                   BeginDocument
        -----------------------------------------------------------------

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

             Проверяет бит pf_Selection в поле Flags и определяет,  хочет
        ли пользователь  печатать выделенный текст или весь редактируемый
        текст. Если печатать нужно только выделенный текст, BeginDocument
        ничего не делает,  оставляя значения, установленные GetSelection.
        В противном случае StartLine  и  StartPos  устанавливаются  в  0,
        StopLine - в NumLines - 1, а StopPos - в 32767.

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

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

             Устанавливает StartPos  и StopPos в начальную и конечную по-
        зиции выделенного  текста,  вызывая  Editor^.GetSelection.   Если
        StartPos и  StopPos  равны,  что  означает отсутствие выделенного
        текста, GetSelection  возвращает  False.   В   противном   случае
        GetSelection устанавливает  StartLine  и  StopLine в число строк,
        содержащих StartPos и StopPos соответственно, затем устанавливает
        Start в 1, а Stop - в число страниц, необходимых для печати выде-
        ленных строк текста, после чего возвращает значение True.

                                    HasHextPage
        -----------------------------------------------------------------

             function HasNextPage: Boolean; virtual;

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

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

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

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

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

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

             Устанавливает контекст устройства объекта распечатки и печа-
        тает область заданного размера,  вызывая наследуемый из TPrintout
        метод SetPrintParams,  а затем получает число строк в Editor, вы-
        зывая метод GetNumLines.  Вычисляет LineHeight и LinesPerPage  на
        основе размера текста в контексте устройства, переданного в ADC.

             См. также: TPrintout.SetPrintParams.


         TEditWindow                                       модуль OStdWnds
        -----------------------------------------------------------------

             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                TEditWindow
             +-------------------+  +-----------------+
             | Attr              |  | Editor          |
             | DefaultProc       |  | SearchRec       |
             | Scrol[ler         |  +-----------------|
             | FocusChildHandle  |  | Init            |
             +-------------------|  | Load            |
             |-Init--------------|  | CMEditFind      |
             | InitResource      |  | CMEditFindNext  |
             |-Load--------------|  | CMEditReplace   |
             | Done              |  | Store           |
             | Create            |  | WMSize          |
             | DefWndProc        |  | WMSetFocus      |
             | FocusChild        |  +-----------------+
             | GetId             |
             | GetWindowClass    |
             | Paint             |
             | SetCaption        |
             | SetupWindow       |
             |-Store-------------|
             | UpdateFocusChild  |
             | WMActivate        |
             | WMHScroll         |
             | WMLButtonDown     |
             | WMMDIActivate     |
             | WMMove            |
             | WMPaint           |
             |-WMSize------------|
             | WMSysCommand      |
             | WMVScroll         |
             +-------------------+

             Окно редактирования - это окно, вся область клиента которого
        заполнена управляющим элементом редактирования. Подробнее о полях
        и методах типа TEditWindow вы можете узнать из оперативного спра-
        вочника Help.
------------------------------------------------------------------------
         TEmsStream                                         модуль Objects
        -----------------------------------------------------------------

             TObject    TStream               TEmsStream
             +------+   +-----------------+   +-----------------+
             +------|   | Status          |   | Handle          |
             |-Init-|   | ErrorInfo       |   | PageCount       |
             |-Done-|   +-----------------|   | Position        |
             | Free |   | CopyFrom        |   | Size            |
             +------+   | Error           |   +-----------------|
                        | Flush           |   | Init            |
                        | Get             |   | Done            |
                        |-GetPos----------|   | GetPos          |
                        |-GetSize---------|   | GetSize         |
                        | Put             |   | Read            |
                        |-Read------------|   | Seek            |
                        | StrRead         |   | Truncate        |
                        | StrWrite        |   | Write           |
                        |-Truncate--------|   +-----------------+
                        | WriteStr        |
                        +-----------------+

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

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

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

                             Handle (только чтение)

             Handle: Word;

             Описатель EMS для потока.

                            PageCount (только чтение)

             PageCount: Word;

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

                            Position (только чтение)

             Position: Longint;

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

                              Size (только чтение)

             Size: Longint;

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

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

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

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

             constructor Init(MinSize, MaxSize: Longint);

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

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

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

             destructor Done; virtual;

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

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

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

             function GetPos: Longint; virtual;

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

             См. также: 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 байт от начала пото-
        ка.

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

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

             procedure Truncate; virtual;

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

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

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

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

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

             См. также: TStream.Read, TEmsStream.GetPos, TEmsStream.Seek.
                              Назад | Содержание | Вперед
Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

VPS в 21 локации

От 104 рублей в месяц

Безлимитный трафик. Защита от ДДоС.

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...