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 (продолжение)


------------------------------------------------------------------------
         TScroller                                          модуль OWindow
        -----------------------------------------------------------------

             TObject   TScroller
             +------+  +----------------------------------------+
             +------|  | AutoMode            XPos               |
             |-Init-|  | AutoOrg             XRange             |
             |-Done-|  | HasHScrollBar       XUnit              |
             | Free |  | HasScrollBar        YLine              |
             +------+  | Windows             YPos               |
                       | XLine               YRange             |
                       | XPage               YUnit              |
                       +----------------------------------------|
                       | Init                ScrollBy           |
                       | Load                ScrollTo           |
                       | Done                SetPageSize        |
                       | AutoScroll          SetRange           |
                       | BeginView           SetSBarRange       |
                       | EndView             SetUnits           |
                       | HScroll             Store              |
                       | IsVisibleRect       VScroll            |
                       +----------------------------------------+

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

             Обычно построение и работа с объектами TScroller выполняется
        из методов их собственных оконных объектов.

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

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

             AutoMode: Boolean;

             AutoMode имеет  значение  True,  если  для объекта TScroller
        действует "автоматическая прокрутка". По умолчанию AutoMode имеет
        значение True.

                                     AutoOrg

             AutoOrg: Boolean;

             Когда AutoOrg имеет значение True, начало контекста дисплея,
        передаваемое методу Paint порождающего окна,  автоматически наст-
        раивается таким образом,  чтобы отражать позицию полос прокрутки.
        Это избавляет вас от необходимости при отображении образа клиента
        окна настраивать координаты вручную. Когда AutoOrg имеет значение
        False, такого отображения не выполняется.

             Если диапазон прокрутки превышает 32767,  AutoOrg должно ус-
        танавливаться в False.

             Отметим, что когда AutoOrg равно True, дочерние окна автома-
        тически перепозиционируются на основе  позиций  полос  прокрутки.
        Когда AutoOrg имеет значение False,  дочерние окна не поддержива-
        ются.

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

             HashScrollBar: Boolean;

             Если окно-владелец содержит горизонтальную полосу  прокрутки
        окна, то HashScrollBar имеет значение True.

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

             HasVScrollBar: Boolean;

             Если окно-владелец  содержит  вертикальную  полосу прокрутки
        окна, то HasScrollBar имеет значение True.

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

             TrackMode: Boolean;

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

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

             Window: PWindow;

             Window указывает на окно-владельца TScroller.

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

             XLine: Integer;

             XLine - это число единиц XUnits для горизонтальной прокрутки
        в ответ на нажатие кнопки "мыши" на стрелке полосы горизонтальной
        прокрутки. По умолчанию это значение равно 1.

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

             XPage: Integer;

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

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

             XPos: Longint;

             XPos - текущая позиция пpокpутки по гоpизонтали,  выpаженная
        в единицах XUnit.

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

             XRange: Longint;

             XRange пpедставляет общее число единиц XUnit по гоpизонтали,
        котоpое может быть пpокpучено в окне.  Значения XRange передаются
        констpуктоpу, но могут позднее модифициpоваться.

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

             XUnit: Integer;

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

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

             YLine: Integer;

             YLine - это число единиц YUnits для вертикальной прокрутки в
        ответ на нажатие кнопки "мыши"  на  стрелке  полосы  вертикальной
        прокрутки. По умолчанию это значение равно 1.

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

             YPage: Integer;

             YPage - это число единиц XPage,  пpокpучиваемых по веpтикали
        в ответ на щелчок "мышью" в зоне указателя полосы  пpокpутки.  По
        умолчанию, YPage pавно текущей высоте окна в единицах YUnit.  Из-
        менение размера окна обновляет это значение.

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

             YPos: Longint;

             YPos - текущая позиция пpокpутки по веpтикали,  выpаженная в
        единицах YUnit.

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

             YRange: Longint;

             YRange пpедставляет  общее  число единиц YUnit по веpтикали,
        котоpое может быть пpокpучено в окне.  Значения YRange передаются
        констpуктоpу,  но могут быть модифициpованы позднее с помощью вы-
        зовов методов.

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

             YUnit: Integer;

             YUnit пpедставляет минимальное число единиц устpойства (эле-
        ментов  изобpажения),  котоpое  может  быть  пpокpучено в окне по
        веpтикали.  Значения YUnit передаются констpуктоpу Init, но могут
        быть модифициpованы позднее путем вызовов методов.

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

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

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

             constructor Init(TheWindow: PWindow; TheXUnit, TheYUnit:
                              integer; TheXRange, TheYRange: Longint);

             Создает новый  объект  TScroller  с TheWindow в качестве ок-
        на-владельца и со  значениями  TheXUnit,  TheYUnit,  TheXRange  и
        TheRange в качестве XUnit,  YUnit, XRange и YRange, соответствен-
        но.  Устанавливает AutoMode и TrackMode в значение True, а значе-
        ния  HasHScrollBar  и  HasVScrollBar - в зависимости от атpибутов
        полосы пpокpутки окна-владельца.

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

             constructor Load(var S: TStream);

             Строит и  загружает  объект  прокрутки из потока S,  вызывая
        сначала TObject.Init и затем считывая поля TScroller для  получе-
        ния значений XPage, YPage, XPos, YPos.

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

             destructor Done; virtual;

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

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

             procedure AutoScroll; virtual;

             Выполняет пpокpутку  окна-владельца в зависимости от положе-
        ния курсоpа "мыши".  Направление и величина прокрутки зависит  от
        текущего положения "мыши".

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

                                     BeginView
        -----------------------------------------------------------------

             procedure BeginView(PaintDC: HDC; var PaintInfo:
                                 TPaintStruct); virtual;

             Устанавливает начало  области  отображения контекста дисплея
        окна-владельца (PaintDC) в соответствии с текущей позицией курсо-
        ра.

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

             procxedure EndView; virtual;

             Обновляет положение  полос  пpокpутки  окна-владельца  таким
        обpазом, чтобы они изменялись синхpонно с TScroller.

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

             procedure HScroll(ScrollRequest: Word; ThumbPos: Integer);
                               virtual;

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

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

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

             function IsVisibleRect(X, Y: Longint; XExt, YExt: Integer):
                                    Boolean;

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

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

             procedure ScrollBy(X, Y: Longint);

             Выполняет пpокpутку на величину, опpеделяемую значениями X и
        Y. Также обновляет отобpажение окна.

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

             procedure ScrollBy(X, Y: Longint);

             Выполняет пpокpутку до позиции,  указанной значениями X и Y.
        Обновляет содержимое окна.

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

             procedure SetPageSize; virtual;

             Устанавливает поля XPage и YPage в значение ширины и  высоты
        (в единицах XUnits и YUnits) области пользователя окна-владельца.

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

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

             procedure SetRange(TheXRange, TheYRange: Longint);

             Заменяет значения XRange и  YRange,  переданные  при  вызове
        Init, на значения TheXRange и TheYRange. Затем для установки диа-
        пазона полос пpокpутки окна-владельца вызывает SetBarRange.

             См. также: TScroller.SetBarRange.

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

             procedure SetBarRange; virtual;

             Устанавливает диапазон  полос пpокpутки окна-владельца таким
        обpазом, чтобы он был синхpонным с диапазоном TScroller.

                                      SetUnits
        -----------------------------------------------------------------

             procedure SetUnits(TheXUnit, TheYUnit: Longint);

             Устанавливает значения  XUnit и YUnit в TheXUnit и TheYUnit,
        соответственно.

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

             procedure Store(var S: TStream);

             Записывает объект   прокрутки  в  поток  S,  записывая  поля
        TScroller, за исключением XPage, YPage, XPos, YPos.

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

             procedure VScroll(ScrollEvent: Word; ThumbPos: Integer);
                               virtual;

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

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


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

             TObject   TCollection
             +------+  +----------------------------------------+
             +------|  | Count               Items              |
             |-Init-|  | Delta               Limit              |
             |-Done-|  +----------------------------------------|
             | Free |  | Init                ForEach            |
             +------+  |-Load-------------   Free               |
                       | Done                FreeAll            |
                       | At                  FreeItem           |
                       | AtDelete            GetItem            |
                       | AtFree             -IndexOf------------|
                       | AtInsert           -Insert-------------|
                       | AtPut               LastThat           |
                       | Delete              Pack               |
                       | DeleteAll           PutItem            |
                       | Error               SetLimit           |
                       | FirstThat          -Store--------------|
                       +----------------------------------------+

             TSortedCollection
             +-----------------+
             | Duplicates      |
             +-----------------|
             | Load            |
             | Compare         |
             | IndexOf         |
             | KeyOf           |
             | Search          |
             | Store           |
             +-----------------+

             TSortedCollection - это  специализированный  производный  от
        TCollection тип,  реализующий  наборы,  отсортированные по ключу.
        Сортировка реализуется виртуальным методом  Compare,  который  вы
        переопределяете для  определения  собственного порядка сортировки
        элементов. При добавлении новых элементов они автоматически вклю-
        чаются в порядке,  заданном методом Compare. Элементы можно нахо-
        дить с помощью метода двоичного поиска Search.  Если Compare тре-
        буется дополнительная информация,  виртуальный метод KeyOf, возв-
        ращающий указатель на Compare, также можно переопределить.

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

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

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

             Duplicates: Boolean;

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

             Если вы установите Duplicates в True,  дублирующие  элементы
        вставляются в набор непосредственно перед первым элементом с этим
        ключом.

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

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

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

             constructor Load(var S: Stream);

             Строит и загружает отсортированный набор из потока S,  вызы-
        вая сначала   метод   TCollection.Load,  а  затем  считывая  поле
        Duplicates TSortedCollection.

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

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

             function Compare(Key1, Key2: Pointer): Integer; virtual;

             Compare - это абстрактный метод,  который должен переопреде-
        ляться в наследующих типах.  В Compare  должны  сравниваться  два
        значения ключей и возвращаться следующий результат: -1, если Key1
        < Key2; 0 если Key1 = Key2 и 1, если Key1 > Key2.

             Key1 и Key2 - это значения указателей,  выделенные из  соот-
        ветствующих элементов  наборов  методом  TSortedCollection.KeyOf.
        Метод TSortedCollection.Search реализует двоичный поиск  по  эле-
        ментам набора, используя для сравнения элементов метода Compare.

             См. также:                          TSortedCollection.KeyOf,
        TSortedCollection.Compare.

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

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

             Использует TSortedCollection.Search  для определения индекса
        данного элемента.  Если элемента в наборе нет, то IndexOf возвра-
        щает -1.  Фактической реализацией TSortedCollection.IndexOf явля-
        ется:

             if Search(KeyOf(Item), I) then IndexOf := I
                     else IndexOf := -1;

             См. также: TSortedCollection.Search.

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

             procedure Insert(Item: Pointer); virtual;

             Если целевой элемент в отсортированном наборе не найден,  то
        он включается в текущей позиции индекса.  Для определения наличия
        или отсутствия элемента вызывает  TSortedCollection.Search.  Если
        элемент отсутствует,  то  включает  его.  Фактической реализацией
        TSortedCollection.Insert является:

             if not Search(KeyOf(Item), I) or Duplicates then
                     AtInsert(I, Item);

             См. также: TSortedCollection.Search.

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

             function KeyOf(Item: Pointer): Pointer: virtual;

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

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

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

             function Search(Key: Pointer; var Index: Integer): Boolean;
                             virtual;

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

             См. также:                        TSortedCollaction.Compare,
        TSortedCollection.Insert.

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

             procedure Store(var S: Stream);

             Записывает отсортированный набор и его элементы в потоке  S,
        вызывая для записи набора TCollection.Store,  а затем записывая в
        поток поле Duplicates.

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


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

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


             TWindow                TControl
             +-------------------+  +-----------------+
             | Attr              |  +-----------------|
             | DefaultProc       |  |-Init------------|
             | Scrol[ler         |  |-InitResource----|
             | FocusChildHandle  |  |-GetClassName----|
             +-------------------|  | Register        |
             |-Init--------------|  | WMPaint         |
             | InitResource      |  +-----------------+
             |-Load--------------|
             | Done              |  TStatic
             | Create            |  +-----------------+
             | DefWndProc        |  | TextLen         |
             | FocusChild        |  +-----------------|
             | GetId             |  | Init            |
             | GetWindowClass    |  | InitResource    |
             | Paint             |  | Load            |
             | SetCaption        |  | Clear           |
             | SetupWindow       |  | GetClassName    |
             |-Store-------------|  | GetText         |
             | UpdateFocusChild  |  | GetTextLen      |
             | WMActivate        |  | SetText         |
             | WMHScroll         |  | Store           |
             | WMLButtonDown     |  | Transfer        |
             | WMMDIActivate     |  +-----------------+
             | WMMove            |
             | WMPaint           |
             |-WMSize------------|
             | WMSysCommand      |
             | WMVScroll         |
             +-------------------+

             TStatic представляет   собой  интерфейсный  объект,  который
        представляет статический текстовый элемент Windows.

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

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

             TextLen: Word;

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

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

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

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

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

             Создает статический объект упpавляющего  элемента с пеpедан-
        ным  порождающим  окном  (AParent),  идентификатоpом управляющего
        элемента (AnId);  текстом (ATitle),  позицией (X,Y)  относительно
        начала области пользователя порождающего окна, шиpиной (W), высо-
        той (H) и длиной текста (TextLen).  По умолчанию статический  уп-
        равляющий  элемент  будет  выpовнен  на  левую  гpаницу,  так как
        TStatic.Init добавляет к полю объекта Attr.Style ws_TabStop.  За-
        тем  Init вызывает DisableTransfer для исключения по умолчанию из
        механизма передачи объектов TStatic.

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

             constructor InitResource(AParent: PWindowsObject;
                                      ResourceId, ATextLen: Word);

             Вызывая наследуемый из  TControl  конструктор  InitResource,
        связывает  объект  TStatic  с  ресурсом статического управляющего
        элемента, заданного  ResourceID.  Устанавливает  поле  TextLen  в
        ATextLen.

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

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

             constructor Load(var S: TStream);

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

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

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

             procedure Clear; virtual;

             Стиpает текст статического упpавляющего элемента.

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

             function GetClassName: PChar; virtual;

             Возвpащает имя класса окна TStatic - 'Static'.

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

             function GetText(ATextString: PChar; MaxChars: Integer):
                              Integer; virtual;

             Считывает текст статического элемента упpавления и  помещает
        его в аpгумент ATextString. MaxChars опpеделяет максимальный pаз-
        меp ATextString. GetText возвpащает pазмеp считанной стpоки.

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

             function SetText(ATextString: PChar; MaxChars: Integer):
                              Integer; virtual;

             Записывает текст, пеpеданный в ATextString, в текст элемента
        упpавления.

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

             procedure Store(var S: TStream);

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

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

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

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

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


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

             TObject   TCollection
             +------+  +----------------------------------------+
             +------|  | Count               Items              |
             |-Init-|  | Delta               Limit              |
             |-Done-|  +----------------------------------------|
             | Free |  | Init                ForEach            |
             +------+  |-Load-------------   Free               |
                       | Done                FreeAll            |
                       | At                  FreeItem           |
                       | AtDelete            GetItem            |
                       | AtFree             -IndexOf------------|
                       | AtInsert           -Insert-------------|
                       | AtPut               LastThat           |
                       | Delete              Pack               |
                       | DeleteAll           PutItem            |
                       | Error               SetLimit           |
                       | FirstThat          -Store--------------|
                       +----------------------------------------+

             TSortedCollection     TStrCollection
             +-----------------+   +-----------------+
             | Duplicates      |   +-----------------|
             +-----------------|   | Compare         |
             | Load            |   | FreeItem        |
             | Compare         |   | GetItem         |
             | IndexOf         |   | PutItem         |
             | KeyOf           |   +-----------------+
             | Search          |
             | Store           |
             +-----------------+

             TStrCollection -     это     простой     производный      из
        TSoortedCollection тип,  реализующий отсортированный список строк
        ASCII. Метод TStrCollection.Compare переопределен для обеспечения
        обычного упорядочивания строк ASCII. Вы можете переопределить ме-
        тод Compare для задания другого  порядка  (например,  алфавитного
        порядке нелатинских символов).

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

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

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

             function Compare(Key1, Key2: Pointer): Integer; virtual;

             Сравнивает строки Key1^ и Key2^ и возвращает -1, если Key1 <
        Key2; 0, если Key1 = Key2 и 1, если Key1 > Key2.

             См. также: TSortedCollection.Search.

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

             procedure FreeItem(Item: Pointer); virtual;

             Удаляет строку Item^ из отсортированного набора и уничтожает
        ее.

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

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

             По умолчанию считывает строку из потока, вызывая S.ReadStr.

             См. также: TStream.ReadStr.

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

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

             По умолчанию   записывает  строку  Item^  в  поток,  вызывая
        S.WriteStr.

             См. также: TStream.WriteStr.


------------------------------------------------------------------------
         TStream                                             метод Objects
        -----------------------------------------------------------------

             TObject    TStream
             +------+   +-----------------+
             +------|   | Status          |
             |-Init-|   | ErrorInfo       |
             |-Done-|   +-----------------|
             | Free |   | CopyFrom        |
             +------+   | Error           |
                        | Flush           |
                        | Get             |
                        | GetPos          |
                        | GetSize         |
                        | Put             |
                        | Read            |
                        | ReadStr         |
                        | Reset           |
                        | Seek            |
                        | StrRead         |
                        | StrWrite        |
                        | Truncate        |
                        | Write           |
                        | WriteStr        |
                        +-----------------+

             TStream - это общий абстрактный объект, обеспечивающий поли-
        морфический ввод-вывод в/на устройство. Переопределяя виртуальные
        методы GetPos,  GetSize,  Read, Seek, Truncate и Write, вы можете
        создать собственные    производные    потоковые   объекты.   Сама
        ObjectWindows делает это,  строя производные объекты TDosSteram и
        TEmsStream. Для  буферизированных  производных  потоков вы должны
        также переопределить TStream.Flush.

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

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

             Status: Integer;

             Status указывает текущее состояние потока, используя одну из
        констант stXXXX:   stOk,   stError,   stInitError,   stReadError,
        stWriteError, stGetError или stPutError.

             Если Status не равно stOk,  то все операции с потоком приос-
        танавливаются до вызова Reset.

             См. также: константы stXXXX.

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

             ErrorInfo: Integer;

             ErrorInfo содержит  дополнительную информацию,  когда Status
        не равно  stOk.  Для  значений   Status   stError,   stInitError,
        stReadError и  stWriteError ErrorInfo содержит код ошибки DOS или
        EMS (если он доступен).  Когда Status имеет значение  stGetError,
        ErrorInfo содержит  идентификатор объектного типа (поле ObjType в
        TStreamRec) незарегистрированного типа объекта. Когда Status рав-
        но stPutError, ErrorInfo содержит смещение сегмента данных табли-
        цы виртуальных методов (поле VmLink в TStreamRec) незарегистриро-
        ванного типа объекта.

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

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

                                      CopyFrom
        -----------------------------------------------------------------

             procedure CopyFrom(var S: TStream; Count: Longint);

             Копирует Count байт из потока S в объект потока. Например:

             { создать копию всего потока }
             NewStream := New(TEmsStream, Init(oldStream^.GetSize));
             OldStream^.Seek(0);
             NewStream^.CopyFrom(OldStream, OldStream^.GetSize);

             См. также: TStream.GetSize, TObject.Init.

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

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

             Вызывается, когда  происходит  ошибка  потока.  По умолчанию
        TStream.Error сохраняет Code и Info в полях Status и ErrorInfo, а
        затем, если глобальная переменная StreamError не равна nil, вызы-
        вает процедуру, на которую указывает StreamError. Если происходит
        ошибка,  все операции  с  потоком  приостанавливаются  до  вызова
        Reset.

             См. также: TStream.Reset, переменную StreamError.

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

             procedure Flush; virtual;

             Сбрасывает все буферы путем очистки буфера чтения или записи
        буфера записи (или обоих).  По умолчанию TStream.Flush ничего  не
        делает и должна переопределяться в наследующих типах,  где реали-
        зуются буферы.

             См. также: TBufStream.Flush.

                                        Get
        -----------------------------------------------------------------

             function Get: PObject;

             Считывает объект из потока. Объект должен быть предваритель-
        но записан в поток методом  TStream.Put.  Get  сначала  считывает
        из потока идентификатор объектного типа (слово).  Затем она нахо-
        дит соответствующий объектный тип,  сравнивая идентификатор с по-
        лем ObjType  всех  зарегистрированных  объектных  типов (см.  тип
        TStreamRec), и наконец вызывает конструктор Load этого объектного
        типа для создания и загрузки объекта.  Если считываемый из потока
        объектный тип равен 0,  Get возвращает указатель nil. Если указа-
        тель объектного типа не зарегистрирован (с помощью RegisterType),
        Get вызывает TStream.Error и возвращает указатель nil.  В против-
        ном случае Get возвращает указатель на вновь созданный объект.

             См. также:  TStream.Put,  RegisterType,  TStreamRec,  методы
        Load.

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

             function GetPos: Longint; virtual;

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

             См. также: TStreamSeek.

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

             function GetSize: Longint; virtual;

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

                                        Put
        -----------------------------------------------------------------

             procedure Put(P: PObject);

             Записывает объект в поток.  Позднее объект может считываться
        из потока с помощью TStreamGet.Get.  Put сначала  находит  запись
        регистрации типа объекта,  сравнивая смещение таблицы виртуальных
        методов объекта с полем WmtLink всех зарегистрированных объектных
        типов (см.  тип TStreamRec), затем записывает в поток идентифика-
        тор тип объекта (поле ObjType записи регистрации) и, наконец, вы-
        зывает метод Store этого объектного типа для записи объекта. Если
        передаваемый в Put аргумент имеет значение nil, то Put записывает
        в поток слово,  содержащее 0. Если объектный тип P не зарегистри-
        рован (с помощью RegisterType), Put вызывает TStreamError и с по-
        током ничего не делает.

             См. также:   методы  TStreamGet,  RegisterType,  TStreamRec,
        Store.

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

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

             Считывает из  потока  Stream Count байт и продвигает текущую
        позицию потока на Count байт. В случае ошибки Read вызывает Error
        и заполняет  Buf  Count нулевыми байтами.  Это абстрактный метод,
        который должен переопределяться в наследующих типах.

             См. также: TStream.Write, TStream.Error.

                                      ReadStr
        -----------------------------------------------------------------

             function ReadStr: PString;

             Считывает строку из текущей позиции в потоке, возвращая ука-
        затель PString.  TStream.ReadStr для выделения  для строки Length
        + 1 байт вызывает GetMem.

             См. также: TStream.WriteStr.

                                       Reset
        -----------------------------------------------------------------

             procedure Reset;

             Сбрасывает для потока любой ошибочное условие,  устанавливая
        Status и ErrorInfo в 0. Этот метод позволяет вам продолжить рабо-
        ту с потоком после исправления условия ошибки.

             См. также:  TStream.Status,  TStream.ErrorInfo,  коды ошибок
        stXXXX.

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

             procedure Seek(Pos: Longint); virtual;

             Устанавливает текущую позицию в Pos байт от  начала  потока.
        Начальной позицией потока является 0.  Это абстрактный метод, ко-
        торый должен переопределяться во всех потомках.

             См. также: TStream.GetPos.

                                      StrRead
        -----------------------------------------------------------------

             function StrRead: PChar;

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

             См. также: TStream.StrWrite.

                                    StrWrite

             procedure StrWrite(P: PChar);

             Записывает в  поток  строку  с завершающим нулем,  записывая
        сначала длину строки,  а затем заданное число символов.

             См. также: TStream.StrWrite.

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

             procedure Trancate: virtual;

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

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

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

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

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

             См. также: TStream.Read, TStream.Error.

                                      WriteStr
        -----------------------------------------------------------------

             procedure WriteStr(P: PString);

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

             См. также: TStream.ReadStr.

         Тип TStreamRec                                     модуль Objects
        -----------------------------------------------------------------

             Описание:

             TStreamRec = record
                  ObjType: Word;
                  VmtLink: Word;
                  Load: Pointer;
                  Store: Pointer;
                  Next: Word;
             end;

             Назначение: Перед тем как все его типы смогут загружаться из
        объекта TStream  или   записываться   в   него,   объектный   тип
        ObjectWindows должен  иметь  зарегистрированный  тип  TStreamRec.
        Подпрограмма RegisterTypes регистрирует объектный тип, устанавли-
        вая запись TStreamRec.

             Поля в записи регистрации определены следующим образом:

                               Поля записи потока           Таблица 21.27
        +-----------------+---------------------------------------------+
        |     Поле        |                    Содержимое               |
        +-----------------+---------------------------------------------|
        |    ObjType      | Уникальный числовой идентификатор объектного|
        |                 | типа.                                       |
        +-----------------+---------------------------------------------|
        |    VmtLink      | Связь с записью таблицы виртуальных  методов|
        |                 | объектного типа.                            |
        +-----------------+---------------------------------------------|
        |    Load         | Указатель на конструктор Load объектного ти-|
        |                 | па.                                         |
        +-----------------+---------------------------------------------|
        |    Store        | Указатель на метод Store объектного типа.   |
        +-----------------+---------------------------------------------|
        |    Next         | Указатель на следующую запись TStreamRec.   |
        +-----------------+---------------------------------------------+

             ObjectWindows резервирует  идентификаторы  объектных   типов
        (ObjType) со значением от 0 до 999 для своего внутреннего исполь-
        зования. Программисты могут определять свои собственные  значения
        в диапазоне от 1000 до 65535.

             По соглашению TStreamRec для объектного типа Txxxx называет-
        ся Rxxxx.  Например,  как  показано  ниже  TStreamRec  для   типа
        TCalculator называется RCalculator:

             type TCalculator = object(TDialog)
                    constructor Load(var S: TStream);
                    procedure Store(var S: TStream);
                      .
                      .
                      .
                   end;

             const
               RCalculator: TStreamRec = (
                   ObjType: 2099;
                   VmtLink: Ofs(TypeOf(TCalculator)^);
                   Load: @TCalculator.Load;
                   Store: @TCalculator.Store);

             begin
               RegisterType(RCalculator);
                .
                .
             end;

             См. также: RegisterType.
------------------------------------------------------------------------
         TStringLookupValidator                            модуль Validate
        -----------------------------------------------------------------

             TObject   TValidator           TPXPictureValidator
             +------+  +-----------------+  +-----------------+
             +------|  | Options         |  +-----------------|
             |-Init-|  | Status          |  | IsValid         |
             |-Done-|  +-----------------|  |-Lookup----------|
             | Free |  |-Init------------|  +-----------------+
             +------+  |-Load------------|
                       |-IsInvalid-------|  TStringLookupValidator
                       | IsValidInput    |  +-----------------+
                       |-Store-----------|  | Strings         |
                       | Transfer        |  +-----------------|
                       | Valid           |  | Init            |
                       +-----------------+  | Load            |
                                            | Done            |
                                            | Error           |
                                            | Lookup          |
                                            | NewStringList   |
                                            | Store           |
                                            +-----------------+

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

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

             Strings: PStringsCollection;

             Указывает на набор строк,  содержащий все допустимые строки,
        которые может набирать пользователь.  Если Strings имеет значение
        nil, все строки будут недопустимыми.

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

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

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

             constructor Init(AStrings: PStringCollection);

             Строит объекты проверки допустимости с просмотром строк, вы-
        зывая сначала конструктор Init,  наследуемый из TLookupValidator,
        а затем устанавливая Strings в AStrings.

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

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

             constructor Load(var S: TStream);

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

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

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

             destructor Done; virtual;

             Уничтожает список допустимых строк,  вызывая NewString(nil),
        а затем уничтожает  объект  проверки  допустимости  с  просмотром
        строк путем    вызова    деструктора    Done,   наследуемого   из
        TLookupValidator.

             См. также:                            TLookupValidator.Done,
        TStringLookupValidator.NesStringList.

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

             procedure Error; virtual;

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

                                       Lookup
        -----------------------------------------------------------------

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

             Возвращает True,  если переданная в S строка совпадает с ка-
        кой-либо из строк в наборе Strings. Для определения присутствия S
        использует метод Search набора строк.

                                   NewStringList
        -----------------------------------------------------------------

             procedure NewStringList(AStrings: PStringCollection;

             Устанавливает для объекта проверки допустимости с просмотром
        строк список допустимых строк ввода.  Уничтожает любой существую-
        щий список строк, а затем устанавливает Strings в AStrings. Пере-
        дача в AStrings значения nil уничтожает существующий  список,  не
        присваивая новый.

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

             procedure Store(var S: TStream);

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


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

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

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

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

                                     Options

             Options: Word;

             Options - это поле с побитовым отображением,  используемое в
        различных потомках TValidator.  По умолчанию TValidator.Init очи-
        щает все биты в Options.

             См. также: константы voXXXX.

                                       Status
        -----------------------------------------------------------------

             Status: Word;

             Status указывает состояние  объекта  проверки  допустимости.
        Если значение Status равно vsOK,  то объект проверки допустимости
        строится корректно.  Любое значение, отличное от vsOK, указывает,
        что произошла ошибка.

             См. также: TInputLine.Valid, константы ValidatorOK.

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

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

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

             constructor Init;

             Строит абстрактный  объект  проверки  допустимости,  вызывая
        сначала конструктор Init,  наследуемый из TObject,  а затем уста-
        навливая поля Options и Status в значение 0.

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

                                        Load
        -----------------------------------------------------------------
             constrictor Load(var S: Stream);

             Строит объект  проверки  допустимости,  вызывая  конструктор
        Init, наследуемый из TObject, а затем считывает из потока S слово
        Options.

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

                                       Error
        -----------------------------------------------------------------
             propcedure Error; virtual;

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

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

             По умолчанию TValidator.IsValid возвращает True. Наследующие
        типы проверки  допустимости могут переопределять IsValid для про-
        верки данных в полной строке ввода. Если строка ввода имеет соот-
        ветствующий объект проверки допустимости,  то его метод Valid вы-
        зывает метод Valid объекта проверки допустимости, который, в свою
        очередь,  вызывает IsValid для  определения  допустимости  строки
        ввода IsValid.

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

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


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

             По умолчанию TValidator.IsInput  возвращает  значение  True.
        Наследующие объекты  проверки допустимости данных могут переопре-
        делять IsValidInput  для проверки допустимости набираемых пользо-
        вателем данных,  возвращая True,  если S содержит допустимые дан-
        ные, и False в противном случае.

             S - это текущая строка ввода. SupressFill  определяет, будет
        ли объект проверки допустимости автоматически форматировать стро-
        ку перед ее проверкой.  Если SupressFill имеет значение True,  то
        проверка допустимости  выполняется  для немодифицированной строки
        S. Если SupressFill имеет значение False,  то перед проверкой до-
        пустимости данных средство проверки допустимости должно заполнить
        или дополнить строку.  Из стандартных объектов проверки  допусти-
        мости SupressFill проверяет только TPXPictureValidator.

             Так как S - это параметр-переменная,  IsValidInput может мо-
        дифицировать содержимое строк  ввода,  например,  преобразовывать
        символы в  верхний  регистр  или вставлять литеральные символы из
        трафарета формата.  Однако,  метод IsValidInput не должен удалять
        из строки   недопустимых   символов.  Возвращая  значение  False,
        IsValidInput указывает, что в строке ввода следует стереть невер-
        ные символы.

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

             procedure Store(var S: TStream);

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

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

             Позволяет объекту  проверки  допустимости на основе установ-
        ленных значений считывать соответствующие значения строки  ввода,
        которые наиболее полезны в объектах проверки допустимости, прове-
        ряющих нестроковые данные (такие как числовые  значения).  Напри-
        мер, TRAngeValidator  использует  Transfer  вместо передачи целой
        строки  для чтения и записи значений типа Longint в  запись  дан-
        ных.

             По умолчанию строки ввода с проверкой допустимости дают сна-
        чала объекту  проверки  допустимости  возможность   ответить   на
        DataSize, GetData и SetData,  вызывая метод Transfer объекта про-
        верки допустимости.  Если метод Transfer возвращает что-либо, от-
        личное от 0,  это указывает строке ввода, что соответствующая пе-
        редача    обработана.   Используемым   по   умолчанию   действием
        TValidator.Transfer является возврат значения 0 (в любом случае).
        Если вы хотите, чтобы объект проверки допустимости пересылал дан-
        ные, то нужно переопределить метод Transfer.

             Первые два  параметра Transfer - это соответствующая тексто-
        вая строка ввода и запись GetData или SetData.  В зависимости  от
        значения Flag,  Transfer  может  устанавливать S из буфера Buffer
        или считывать в буфер Buffer данные из S.  Возвращаемое  значение
        всегда равно число переданных данных.

             Если Flag имеет значение vtSetData, Transfer считывает буфе-
        ра Buffer в S соответствующее число байт,  преобразуя их в нужную
        строковую форму и возвращая число считанных байт. Если Flag равен
        vtGetData,  Transfer устанавливает значения в Buffer,  беря соот-
        ветствующее число байт и преобразуя их в нужную  строковую  форму
        S,  возвращая размер данных. Если Flag равен vtDataSize, Transfer
        просто возвращает размер данных.

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

                                       Valid
        -----------------------------------------------------------------

             function Valid(const S: string): Boolean;

             Возвращает True, если IsValid(S) возвращает значение True. В
        противном случае вызывает Error и возвращает значение False.  Ме-
        тод Valid  объекта проверки допустимости вызывается методом Valid
        соответствующей строки ввода.

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

             См. также:        TInputLine.Valid,        TValidator.Error,
        TValidator.IsValid.  
                              Назад | Содержание | Вперед
Бесплатный конструктор сайтов и Landing Page

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

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

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

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

VPS в России, Европе и США

Бесплатная поддержка и администрирование

Оплата российскими и международными картами

🔥 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 This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...