Logo    
Деловая газета CitCity.ru citforum.ck.ua - все об Open Source Форумы Все публикации Учебный центр Курилка
CitForum    CITForum на CD    Подписка на новости портала Море(!) аналитической информации! :: citforum.ck.ua
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Friday, 14-Mar-2008 18:16:58 EET

Google
WWW citforum.ck.ua
Техническая конференция «Корпоративные базы данных-2008»
Москва, 24-25 апреля


TDeskTop App


                    +---------+
                    | TObject |
                    +----+----+
                    +----+----+
                    |  TView  |
                    +----+----+
                    +----+----+
                    | TGroup  |
                    +-+--+--+-+
           +----------+  |  +------------+
      +----+----+   +====+=====+  +------+-------+
      | TWindow |   | TDeskTop |  | TProgram     |
      +----+----+   +==========+  +------+-------+
      +----+----+                 +------+-------+
      | TDialog |                 | TApplication |
      +---------+                 +--------------+

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


Методы

 Init    constructor Init(var Bounds: TRect);
         Создает группу  TDeskTop  с размером Bounds.  По умолчанию
         GrowMode установлена в gfGrowHiX + gfGrowHiY.  Init так же
         вызывает NewBackground   для   вставки  видимого  элемента
         TBackgroud в группу.

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

 Cascade procedure Cascade(var R: TRect);
         Заново отображает все окна, принадлежащие панели экрана, в
         каскадном формате.  Первое окно в Z порядке (самое нижнее)
         расширяется на всю панель  экрана,  а  каждое  последующее
         окно заполняет область, начинающуюся на одну строку ниже и
         на одну колонку  правее,  чем  предыдущее.  Активное  окно
         появляется на вершине как самое наименьшее.

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

 NewBackGround function NewBackGround: PView; virtual;
                                              Перекрывается: Иногда
         Возвращает указатель на фон, используемый в панели экрана.
         Этот метод вызывается в методе  TDeskTop.Init. Наследуемые
         объекты могут изменить тип фона, перекрывая этот метод.

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

 HandleEvent procedure HandleEvent(var Event: TEvent); virtual;
                                               Перекрывается: Редко
         Вызывает TGroup.HandleEvent  и отрабатывает команды cmNext
         (обычно горячая  клавиша  F6)  и  cmPrevious   циклическим
         проходом по  окнам (начиная с текущего выбранного видимого
         элемента) принадлежащим панели экрана.

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

 Tile    procedure Tile(var R: TRect);
         Заново отображает   все  видимые  элементы  с  ofTileable,
         принадлежащие панели экрана в черепичном формате.

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

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

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



TDialog Dialogs


                    +---------+
                    | TObject |
                    +----+----+
                    +----+----+
                    |  TView  |
                    +----+----+
                    +----+----+
                    | TGroup  |
                    +-+--+--+-+
           +----------+  |  +------------+
      +----+----+   +----+-----+  +------+-------+
      | TWindow |   | TDeskTop |  | TProgram     |
      +----+----+   +----------+  +------+-------+
      +====+====+                 +------+-------+
      | TDialog |                 | TApplication |
      +=========+                 +--------------+

         TDialog - это потомок TWindow со следующими свойствами:
         - GrowMode - 0, т.е. диалоговые окна не увеличиваются.
         - Флаги wfMove и wfClose установлены, т.е. диалоговые окна
         можно перемещать  и  закрывать  (предоставлена закрывающая
         кнопка).
         - Обработчик  событий TDialog вызывает TWindow.HandleEvent
         и дополнительно обрабатывает  отклики  на  клавиши  Esc  и
         Enter. Клавиша  Esc  генерирует команду cmCancel,  а Enter
         генерирует команду cmDefault.
         - TDialog.Valid возвращает True на команду cmCancel, иначе
         вызывает TGroup.Valid.



                             Методы

Init     constructor Init(var Bounds: TRect; ATitle: TTitleStr);
         Создает диалоговое окно с заданным размером  и заголовком,
         вызывая TWindow.Init(Bounds, ATitle, wnNoNumber). GrowMode
         устанавливается в 0 и Flags  устанавливается  в  wfMove  +
         wfClose. Это  означает,  что  по умолчанию диалоговые окна
         можно  перемещать  и  закрывать,  но  нельзя  изменять  их
         размеры.
         Заметим, что   TDialog    не    определяет    собственного
         дестрактора, а использует Close и Done,  наследуемые через
         TWindow, TGroup и TView.

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

HandleEvent procedure HandleEvent(var Event: TEvent); virtual;
                                              Перекрывается: Иногда
         Вызывает TWindow.HandleEvent(Event),  затем   обрабатывает
         клавиши Enter  и  Esc.  В частности Esc генерирует команду
         cmCancel, а Enter посылает общие сообщения cmDeafult. Этот
         метод  так же обрабатывает cmOK,  cmCancel,  cmYes и cmNo,
         заканчивая модальное  состояние  диалогового   окна.   Для
         каждого из  успешно обработанных событий он вызывает метод
         ClearEvent.

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

GetPalette function GetPalette: PPalette; virtual;
                                               Перекрывается: Редко
         Этот метод возвращает указатель на  палитру  по  умолчанию
         CPalette.

Valid function Valid(Command: Word): Boolean; virtual;
                                               Перекрывается: Редко
         Возвращает True,  если  заданная  команда - cmCancel,  или
         если все элементы управления группы возвращают True.

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



                                Палитра

         Объекты диалогового  окна  используют палитру по умолчанию
         CDialog для отображения с  32  по  63  элемент  в  палитру
         программы.

               1   2   3   4   5   6   7   8   9
             +===+===+===+===+===+===+===+===+===+
CDialog      | 32| 33| 34| 35| 36| 37| 38| 39| 40|
             +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
Пассивная    --+   |   |   |   |   |   |   |   +- Короткая метка
рамка              |   |   |   |   |   |   |
Активная     ------+   |   |   |   |   |   +----- Подсвеченная
рамка                  |   |   |   |   |          метка
Кнопка     ------------+   |   |   |   +--------- Нормальная метка
рамки                      |   |   |
Страница       ------------+   |   +------------- Статический текст
скроллинга                     |
Элементы управления -----------+
скроллинга



               10  11  12  13  14  15  16  17  18
             +===+===+===+===+===+===+===+===+===+
CDialog      | 41| 42| 43| 44| 45| 46| 47| 48| 49|
             +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
Нормальная    -+   |   |   |   |   |   |   |   +- Короткий кластер
кнопка             |   |   |   |   |   |   |
Кнопка по      ----+   |   |   |   |   |   +----- Выбранный кластер
умолчанию              |   |   |   |   |
Выбранная       -------+   |   |   |   +--------- Нормальный
кнопка                     |   |   |              кластер
Запрещенная     -----------+   |   +------------- Тень кнопки
кнопка                         |
Короткая кнопка ---------------+


                19  20  21  22  23  24  25
              +===+===+===+===+===+===+===+
CDialog       | 50| 51| 52| 53| 54| 55| 56|
              +=+=+=+=+=+=+=+=+=+=+=+=+=+=+
Нормальная    --+   |   |   |   |   |   +-- Элементы управления
строка ввода        |   |   |   |   |       окна истории
Выбранная    -------+   |   |   |   |
строка ввода            |   |   |   |
Стрелки    -------------+   |   |   +------ Страница окна истории
строки ввода                |   |
Стрелка истории ------------+   |
                                +---------- Стороны истории


                   26  27  28  29  30  31  32
                 +===+===+===+===+===+===+===+
CDialog          | 57| 58| 58| 59| 60| 61| 62|
                 +=+=+=+=+=+=+=+=+=+=+=+=+=+=+
Нормальный просмотр+   |   |   |   |   |   +-- Зарезервировано
списка                 |   |   |   |   |
Активный просмотр  ----+   |   |   |   +------ Зарезервировано
списка                     |   |   |
Выбранный просмотр  -------+   |   +--------- Информационная панель
                               |
Разделитель просмотра ---------+


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



DosStream Objects


                  +------------+
                  |  TObject   |
                  +-----+------+
                  +-----+------+
                  |  TStream   |
                  +-----+------+
                  +=====+======+
                  | TDosStream |
                  +=====+======+
                  +-----+------+
                  | TBufStream |
                  +------------+

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



                                 Поля

Handle: Word;                                        Только чтение
         Handle - это обработчик файла DOS используемый  только для
         доступа к открытому файлу потока.


                                  Методы 

Init     constructor Init(FileName: FNameStr; Mode: Word);
         Создает поток файла  DOS  с  именем  FileName  и  заданным
         режимом доступа. Если успешно, поле Handle устанавливается
         в обработчик файла DOS. Ошибка указывается вызовом Error с
         аргументом stInitError.
         Аргумент Mode должен принимать одно из значений: stCreate,
         stOpenRead, stOpenWrite    или   stOpen.   Эти   константы
         объяснены в "Константы потока stXXXX" главы 14.

Done     destructor Done; virtual;           Перекрывается: Никогда
         Закрывает и освобождает поток файла DOS

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

GetPos function GetPos: Longint; virtual;    Перекрывается: Никогда
         Возвращает значение текущей позиции в потоке.

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

GetSize  function GetSize: Longint; virtual; Перекрывается: Никогда
         Возвращает размер потока в байтах.

Read     procedure Read(var Buf; Count: Word); virtual;
                                             Перекрывается: Никогда
         Читает Count  байт в буфер Buf,  начиная с текущей позиции
         потока.

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

Seek     procedure Seek(Pos: Longint); virtual;
                                             Перекрывается: Никогда
         Устанавливает текущую позицию в Pos байт от начала потока.

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

Truncate procedure Truncate; virtual;        Перекрывается: Никогда
         Удаляет все  данные  текущего потока от текущей позиции до
         конца потока.

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

Write    procedure Write(var Buf; Count: Word); virtual;
         Пишет Count байт из буфера Buf в поток,  начиная с текущей
         позиции.

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



TEmsStream Objects


                  +------------+
                  |  TObject   |
                  +-----+------+
                  +-----+------+
                  |  TStream   |
                  +-----+------+
                  +=====+======+
                  | TEmsStream |
                  +============+

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

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


                                Поля

Handle   Handle: Word;                               Только чтение
         Обработчик EMS для потока.

PageCount PageCount: Word;                           Только чтение
         Число распределенных   для   потока  страниц,  по  16К  на
         страницу.

Size     Size: Longint;                              Только чтение
         Размер потока в байтах.

Position Position: Longint;                          Только чтение
         Текущая позиция внутри потока. Первая позиция - 0.



                              Методы 

Init     constructor Init(MinSize: 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;        Перекрывается: Никогда
         Удаляет все данные в потоке,  начиная с текущей позиции до
         конца потока.  Текущая  позиция  устанавливается  в  новый
         конец потока.

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

Write    procedure Write(var Buf; Count: Word); virtual;
                                             Перекрывается: Никогда
         Записывает Count байт из буфера Buf  в  поток,  начиная  с
         текущей позиции.

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



TFrame Views


                   +---------+
                   | TObject |
                   +----+----+
                   +----+----+
                   |  TView  |
                   +----+----+
                   +====+====+
                   | TFrame  |
                   +=========+

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


                                  Методы 

Init     constructor Init(var Bounds: TRect);
         Вызывает TView.Init,   затем   устанавливает   GrowMode  в
         gfGrowHiX +  gfGrowHiY   и   устанавливает   EventMask   в
         EventMask  or  evBroadcast,   так,  чтобы  объекты  TFrame
         обрабатывали по умолчанию общие события.

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

Draw     procedure Draw; virtual;              Перекрывается: Редко
         Рисует рамку    с    цветом    атрибутов    и    кнопками,
         соответствующими текущим    флагам    State:     активный,
         неактивный и   перемещаемый.  Добавляет  кнопки  изменения
         размера, закрытия и масштабирования в зависимости от Flags
         окна - владельца.  Добавляет заголовок, если есть, из поля
         Title окна-владельца.  Активные окна  рисуются  с  двойной
         рамкой и кнопками,  а неактивные окна с одинарной рамкой и
         без кнопок.

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

GetPalette function GetPalette: Palette; virtual;
                                               Перекрывается: Редко
         Возвращает указатель на палитру рамки по умолчанию CFrame.

HandleEvent procedure HandleEvent(var Event: TEvent); virtual;
                                               Перекрывается: Редко
         Вызывает TView.HandleEvent,  затем обрабатывает события от
         мышки. Если закрывающая  кнопка  отмечена  мышкой,  TFrame
         генерирует события cmClose. Отметка кнопки масштабирования
         или двойная отметка верхней линии рамки генерирует событие
         cmZoom. При  перемещении  мышкой  за  верхнюю строку рамки
         окно перемещается,  а  перемещение  за  кнопку   изменения
         размера передвигает   нижний   правый   угол   элемента  и
         соответственно изменяет его размер.

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

SetState procedure SetState(AState: Word; Enable: Boolean);
                            virtual;           Перекрывается: Редко
         Вызывает TView.SetState,  затем,  если новое  состояние  -
         sfActive или sfDragging, вызывает DrawView для перерисовки
         видимого элемента.

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



                              Палитра

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

                   1   2   3   4   5
                 +===+===+===+===+===+
   CFrame        | 57| 58| 58| 61| 62|
                 +=+=+=+=+=+=+=+=+=+=+
   Пассивная ------+   |   |   |   +-- Кнопки
   рамка               |   |   |
   Пассивный ----------+   |   +------ Активный заголовок
   заголовок               |
   Активная ---------------+
   рамка



TGroup Views


                    +---------+
                    | TObject |
                    +----+----+
                    +----+----+
                    |  TView  |
                    +----+----+
                    +====+====+
                    | TGroup  |
                    +=+==+==+=+
           +----------+  |  +------------+
      +----+----+   +----+-----+  +------+-------+
      | TWindow |   | TDeskTop |  | TProgram     |
      +----+----+   +----------+  +------+-------+
      +----+----+                 +------+-------+
      | TDialog |                 | TApplication |
      +---------+                 +--------------+

         Объекты TGroup и их порождения (которые мы  для  краткости
         называем группами)   -  основная  управляющая  сила  Turbo
         Vision. Группы - это   специальные   порождения    видимых
         элементов. В   дополнение   ко   всем   полям  и  методам,
         порожденным от TView,  группа имеет дополнительные поля  и
         методы (включая   перекрывающие),   позволяющие  управлять
         динамически связанными списками видимых элементов (включая
         другие группы) как  одним  объектом.  Мы  часто говорили о
         подэлементах группы  даже  если   эти   подэлементы   сами
         являются группами.
         Хотя группа имеет прямоугольную границу от  своего  предка
         TView, группа   видима   только  через  отображение  своих
         подэлементов. Концептуально  группа  рисует   себя   через
         методы Draw  своих  подэлементов.  Группа  владеет  своими
         подэлементами и   они   должны   обеспечивать    зарисовку
         (заполнение) всего прямоугольника группы Bounds.  Во время
         работы программы  подэлементы   и   подгруппы   создаются,
         вставляются в   группы   и   отображаются   в   результате
         деятельности пользователя    и    событий,    генерируемых
         программой.  Подэлементы могут быть легко скрыты,  удалены
         из группы действиями  пользователя  (такими  как  закрытие
         окна или выход из диалогового окна).
         3 порожденных  от  TGroup   типа:  TWindow,   TDeskTop   и
         TApplication (через TProgram) иллюстрируют концепцию групп
         и подгрупп.   TApplication   обычно   владеет    объектами
         TDeskTop, TStatusLine  и  TMenuView.  TDeskTop порожден от
         TGroup и таким образом может  владеть  объектами  TWindow,
         которые в   свою   очередь   владеют   объектами   TFrame,
         TScrollBar и т.д.
         Объекты TGroup  передают  рисование  и  обработку  событий
         своим подэлементам, как объясняется в главах 4 и 5.
         Многие из  основных  методов TView перекрываются в TGroup.
         Например, сохранение и чтение группы из потока  может быть
         достигнуто одним вызовом TGroup.Store и TGroup.Load.
         Объекты TGroup обычно  не  имеют  экземпляров;  Вы  будете
         создавать экземпляры  от  типов  объектов,  порожденных от
         TGroup: TApplication, TDeskTop и TWindow.


                                 Поля

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

Current  Current: PView;                             Только чтение
         Указывает на выбранный подэлемент или равен nil,  если нет
         выбранного подэлемента.

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

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

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

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

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



                                 Методы

Init     constructor Init(var Bounds: TRect);
         Вызывает TView.Init,  устанавливает в Options ofSelectable
         и ofBuffered и устанавливает EventMask в $FFFF.

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

Load     constructor Load(var S: TStream);
         Загружает всю   группу   из   потока,   вызывая    вначале
         наследуемый TView.Load,  а затем используя TStream.Get для
         чтения каждого   подэлемента.    После    загрузки    всех
         подэлементов выполняет    проход   по   подэлементам   для
         установки всех  считанных  указателей   с   использованием
         GetPeerViewPtr.
         Если тип объекта,  порожденного от TGroup  содержит  поля,
         которые указывают  на подэлементы,  он должен использовать
         GetSubViewPtr внутри Load, чтобы читать эти поля.

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

Done     destructor Done; virtual;             Перекрывается: Часто
         Перекрывает TView.Done.  Скрывает группу,  используя Hide,
         освобождает каждый элемент  группы,  используя  Dispose(P,
         Done) и наконец вызывает наследуемый TView.Done.

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

ChangeBounds procedure ChangeBounds(var Bounds: Trect); virtual;
                                             Перекрывается: Никогда
         Перекрывает TView.ChangeBounds.  Изменяет границы группы в
         Bounds, затем  вызывает  CalcBounds  и  ChangeBounds   для
         каждого элемента группы.

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

DataSize function DataSize: Word; virtual;     Перекрывается: Редко
         Перекрывает TView.DataSize.   Возвращает   общий    размер
         группы, вызывая   и   накапливая   DataSize   для  каждого
         подэлемента.

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

Delete   procedure Delete(P: PView);
         Удаляет подэлемент  P  из  группы  и перерисовывает другие
         подэлементы, если  необходимо.  Поля  Owner  и  Next  в  Р
         устанавливаются в nil.

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

Draw     procedure Draw; virtual;            Перекрывается: Никогда
         Перекрывает TView.Draw.  Если  кэш-буфер  существует  (см.
         поле TGroup.Buffer),   то   буфер   пишется   на  экран  с
         использованием TView.WriteBuf.  Иначе  каждый   подэлемент
         рисует себя с помощью TGroup.Redraw.

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

EndModal procedure EndModal(Command: Word); virtual;
                                             Перекрывается: Никогда
         Если группа  -  это  текущий  модальный  видимый  элемент,
         модальное состояние   завершается.  Command  передается  в
         ExecView, который возвращает Command как  результат.  Если
         эта  группа  не  текущий  модальный  видимый элемент,  она
         вызывает TView.EndModal.

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

EventError procedure EventError(var Event: TEvent); virtual;
                                              Перекрывается: Иногда
         EventError вызывается  когда  в  цикле обработчика события
         модального TGroup.Execute встречается событие,  которое не
         может быть обработано.  Действие по умолчанию:  Если Owner
         группы не  nil,  EventError  вызывает  EventError   своего
         владельца. Обычно    эта   цепочка   распространяется   до
         EventError из TApplication. Вы можете перекрыть EventErrоr
         для выполнения требуемого действия.

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

ExecView function ExecView(P: PView): Word;
         ExecView -  это  модальный  вариант  немодальных   методов
         Insert  и  Delete.  В  отличие  от  Insert  после  вставки
         видимого  элемента  в  группу  ExecView  ожидает   видимый
         элемент  для  выполнения,  затем удаляет видимый элемент и
         возвращает результат выполнения.  ExecView используется  в
         ряде   мест   в  Turbo  Vision,  например  для  реализации
         TApplication.Run и  для  выполнения  модальных  диалоговых
         окон.
         ExecView сохраняет  текущий  контекст  (выбранный  видимый
         элемент, модальный  видимый элемент и набор команд) делает
         Р модальным, вызывая Р^.SetState(sfModal, True), вставляет
         Р в   группу   (если   он  еще  не  вставлен)  и  вызывает
         P^.Execute. Когда P^.Execute возвращает управление, группа
         восстанавливается в   предыдущее   состояние  и  результат
         P^.Execute возвращается  как  результат  вызова  ExecView.
         Если P  -  nil  в  вызове ExecView,  возвращается значение
         cmCancel.

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

Execute  function Execute: Word; virtual;      Перекрывается: Редко
         Перекрывает TView.Execute.  Execute  -  это  главный  цикл
         событий группы:  она постоянно получает события, используя
         GetEvent и  обрабатывает  их, используя HandleEvent.  Цикл
         событий завершается группой  или  подэлементом  с  помощью
         вызова EndModal.  Однако  до  возврата Exec вызывает Valid
         для проверки,  что модальное состояние в самом  деле  было
         завершено.
         Реализация  TGroup.Execute  показана  ниже.  Заметим,  что
         EndState -    это   private   поле   в   TGroup,   которое
         устанавливается вызовом EndModel.

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

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

First    function First: PView;
         Возвращает указатель  на  первый  подэлемент  (ближайший к
         вершине в  Z-порядке),  или  nil,  если   в   группе   нет
         подэлементов.

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

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

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

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

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

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

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

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

ForEach  procedure ForEach(Action: Pointer);
         ForEach выполняет действие,  заданное указателем Action на
         процедуру к каждому подэлементу группы в Z-порядке. Action
         должна указывать   на   дальнюю    локальную    процедуру,
         использующую параметр типа Pointer, например:

         procedure MyActionProc(P: PView); far;

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

         procedure TMyGroup.MoveSubViews(Delta: TPoint);

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

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

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

GetData  procedure GetData(var Rec); virtual;  Перекрывается: Редко
         Перекрывает TView.GetData.  Вызывает GetData  для  каждого
         подэлемента в  Z-порядке увеличивая положение,  заданное в
         Rec на DataSize для каждого подэлемента.

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

GetHelpCtx function GetHelpCtx: Word; virtual; Перекрывается: Редко
         Возвращает контекст   подсказки   для  текущего  активного
         видимого элемента,  вызывая метод  выбранного  подэлемента
         GetHelpCtx. Если   нет   контекста   подсказки,  заданного
         подэлементом, GetHelpCtx возвращает  значение собственного
         поля HelpCtx.

GetSubViewPtr procedure GetSubViewPtr(var S: TStream; var P);
         Загружает указатель  на  подэлемент   Р   из   потока   S.
         GetSubViewPtr должна    использоваться    только    внутри
         констрактора Load для чтения значений  указателей, которые
         были записаны вызовом PutSubViewPtr из метода Store.

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

HandleEvent procedure HandleEvent(var Event: TEvent); virtual;
                                               Перекрывается: Часто
         Перекрывает TView.HandleEvent.     Группа     обрабатывает
         события, передавая их  в  методы  HandleEvent  одного  или
         более подэлементов.  Однако действительный маршрут зависит
         от класса события.
         Для активных  событий (по умолчанию evKeyDown и evCommand,
         см. переменную    FocusedEvents)     обработка     событий
         выполняется в    3    фазы:    во-первых,    поле    Phase
         устанавливается в  phPreProcess  и  событие  передается  в
         HandleEvent всех  подэлементов,  в которых установлен флаг
         ofPreProcess. Затем Phase устанавливается  в  phFocused  и
         событие передается   в   HandleEvent  текущего  выбранного
         видимого элемента.  Наконец,   Phase   устанавливается   в
         phPostProcess и  событие  передается  в  HandleEvent  всех
         подэлементов, в которых установлен флаг ofPostProcess.
         Для позиционированных  событий (по умолчанию evMouse,  см.
         переменную PositionalEvents),   событие    передается    в
         HandleEvent первого    подэлемента,   чей   ограничивающий
         прямоугольник содержит точку, заданную в Event.Where.
         Для общих    событий    (т.е.    не    активных    и    не
         позиционированных), событие   передается   в   HandleEvent
         каждого подэлемента группы в Z-порядке.

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

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

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

InsertBefore procedure InsertBefore(P, Target: PView);
         Вставляет видимый   элемент,  заданный  Р,  перед  видимым
         элементом, заданным  Target.  Если  Target  nil,   видимый
         элемент размещается после всех видимых элементов группы.

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

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

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

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

PutSubViewPtr procedure PutSubViewPtr(var S: TStream; P: PView);
         Сохраняет указатель   подэлемента   Р    в    потоке    S.
         PutSubViewPtr должна  использоваться  только внутри метода
         Store для записи значений указателей,  которые позже будут
         читаться вызовами GetSubViewPtr в констракторе Load.

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

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

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

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

         См. так же: константы флагов опций ofXXXX

SetData  procedure  SetData(var Rec); virtual; Перекрывается: Редко
         Перекрывает TView.SetData.  Вызывает  SetData  для каждого
         подэлемента в  порядке,  обратном  Z-порядку,   увеличивая
         положение, заданное   в   Rec,  на  DataSize  для  каждого
         подэлемента.

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

SetState procedure SetState(AState: Word; Enable: Boolean);virtual;
                                               Перекрывается: Редко
         Перекрывает TView.SetState.        Вначале        вызывает
         унаследованный TView.State,  затем  обновляет  подэлементы
         следующим образом:
         Если AState - sfActive, sfExposed или sfDragging, SetState
         вызывается для каждого подэлемента для его обновления.
         Если AState  - sfFocused,  то вызывается текущий выбранный
         подэлемент для своей активизации.

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

Store    procedure Store(var S: TStream);
         Сохраняет всю    группу    в    потоке   вначале   вызывая
         унаследованный TView.Store,  затем  используя  TStream.Put
         для вывода каждого подэлемента.
         Если объектный тип,  порожденный от TGroup, содержит поля,
         которые указывают  на подэлементы,  он должен использовать
         PutSubViewPtr внутри его Store для записи этих полей.

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

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

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

Valid    function Valid(Command: Word): Boolean; virtual;
         Перекрывает TView.Valid.  Возвращает  True,  если   вызовы
         Valid всех   подэлементов  возвращают  True.  TGroup.Valid
         используется  в   конце   цикла   обработки   событий    в
         TGroup.Execute для     подтверждения,    что    завершение
         разрешено. Модальное состояние не может быть  завершено до
         тех пор,  пока все вызовы Valid не вернут True. Подэлемент
         может вернуть  False,  если  он  хочет,  чтобы  управление
         осталось у него.

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


                              Назад | Содержание | Вперед

 

 

\

Подписка на новости IT-портала citforum.ck.ua
(библиотека, citforum.ck.ua, CitCity)

Новые публикации:

12 марта

  • Восход и закат High Performance Fortran: наглядный урок истории (пересказ: С.Кузнецов)
  • citforum.ck.ua:

    Новые Блогометки:

  • Ccze: хорошее модульное средство подсветки логов
  • PWSafe - кроссплатформенное средство для работы с паролями
  • colordiff - подсветка для diff
  • psmisc: рассмотрим ближе стандартный пакет
  • Работа с сетью
  • xkb, узелок на память
  • ffmpeg-php
  • debiannotes:desktop:prettyfonts
  • 5 марта

    citforum.ck.ua:

  • Ричард Столлман в Москве
  • О мудром доценте замолвите слово... (Интенсификация Малаховна)
  • Новые Блогометки:

  • "Десктопизация" OpenBSD
  • weather: проверяйте сводку и прогноз погоды из командной строки
  • hpodder: клиент подкастов, который просто работает
  • bc: язык численных расчетов с произвольной точностью
  • Decibel: аудиоплеер для людей
  • GNU Wget: загрузите весь понравившийся сетевой контент на локальный компьютер
  • Deborphan: найдите ненужные пакеты
  • Kivio: мощный и простой в использовании редактор блок-схем
  • Cowsay: настраиваемая говорящая и думающая корова
  • Thoggen: основанная на GTK+ программа для извлечения видео с DVD
  • 28 февраля

  • Подбор и развитие команд
    Глава из книги «Руководство командой разработчиков программного обеспечения. Прикладные мысли» (С.Архипенков)
  • citforum.ck.ua:

    Дискуссия об анонимусах:

  • К комментаторам
  • Windows против Linux - психологический портрет участников форумов
  • Новые Блогометки:

  • Nokia N810 - Linux Inside
  • LiMo - стандарты Linux для сотовых телефонов
  • timer-applet: таймер для панели GNOME
  • Debfoster: удалите пакет и все его зависимости
  • GPW: генератор произносимых паролей
  • AMOR: общество для рабочего стола
  • 20 февраля

    citforum.ck.ua:

    Новые Блогометки:

  • Кое-что о приложениях KDE 4
  • Инструкция по установке KDE 4 в Ubuntu
  • Настоящие мужчины ставят KDE из SVN!
  • Начат переход Amarok на Qt 4.4
  • Marble
  • Dillo - сверхбыстрый браузер
  • Создаем резервные копии настроек программ и важных файлов в Ubuntu LInux
  • NTP: всегда вовремя
  • VYM - простое средство зарисовки мыслей и планирования
  • KBibTeX: простой и гибкий редактор библиографий для KDE
  • Дискуссия Windows vs Linux:

  • Жил-был Мальчик, или Сказочка о Том, Откуда Берутся "КУЛХАЦКЕРЫ", ненавидящие Линукс и Юникс
  • 13 февраля

  • Терминологический словарь Wi-Fi
  • Задача проектирования базы данных методом нормализации
  • CitCity:

  • Лучшие смартфоны начала 2008 года
  • citforum.ck.ua:

  • Первый взгляд на Firefox 3.0
  • Open Source на Белгородщине: семинар в Старом Осколе
  • Что такое KDE?
  • Цикл о Slackware:

  • Русский в консоли
  • Быстрая настройка Иксов
  • xorgconfig - консольный подход
  • 6 февраля

    citforum.ck.ua:

  • Мобильный Linux – вчера, сегодня, завтра
  • Чем записать диски в Linux? Попробуй Brasero!
  • Консольные команды
  • Рецепты. Кое-что о программе mplayer
  • Slackware:
    • Что такое Slackware?
    • Установка Slackware - Загрузка
    • Категории программного обеспечения
    • Структура файловой системы
    • Система инициализации Slackware Linux
    • Скрипты инициализации уровня запуска

    30 января

  • Обзор алгоритмов MOLAP
  • CitCity:

  • BI-технологии 2007. Итоги года
  • Рынок СУБД для Хранилищ данных 2007. Итоги года, тенденции
  • Обзор рынка BI (по результатам исследований IDC, OLAP Report, Gartner)
  • Модель зрелости BI
  • citforum.ck.ua:

  • Владимир Попов: За что я люблю Linux
  • Священные войны
  • 23 января

  • Data Mining от Oracle: настоящее и будущее
  • Комментарии к статье Ч.Бергера «Data Mining от Oracle: настоящее и будущее»
  • Байесовский классификатор и регрессионная модель в ORTD: практический пример
  • citforum.ck.ua:

    Дискуссия Windows vs Linux:

  • Программисты и фирмы: кто кого
  • О "чистых пользователях"
  • Новые Блогометки:

    • Почему Jabber, а не ICQ?
    • Archlinux install quick
    • Arch на IBM Z60m
    • Arch + IBM R50e
    • OpenBSD - сборка E17-cvs (или ещe одна маленькая победа разума)
    • OpenBSD - всe для Человека и ради Человека...
    • PekWM
    • E17 и "прозрачность"
    • E17 - приятные мелочи (multimedia)
    • SuSE + Enlightenment = угробил целый день

    16 января

  • Вьетнам компьютерной науки (пересказ - С.Кузнецов)
  • Пример построения автоматизированного управления дисками (ASM) (В. Пржиялковский)
  • CitCity:

  • 2008 год: антипрогноз
  • citforum.ck.ua:

    Новые Блогометки:

    Сети и Интернет:

    • Mozilla firefox. Шрифты в меню
    • Screen tips
    • Liferea: программа чтения RSS для GNOME
    • HTTrack: скачивание и зеркалирование сайтов
    • Clusterssh: работа с несколькими сеансами SSH через общий интерфейс

    Десктопы:

    • Fluxbox & xinitrc. Some new tips
    • Как я конфигурировал xdm

    Системы:

    • SuSE 10.2: zypper - еще один способ установки пакетов
    • cpipe: определите пропускную способность конвейера команд
    • gddrescue: средство восстановления данных с поврежденных носителей
    • VirtualBox: ваш виртуальный ПК

    Приложения:

    • MyTop: top для MySQL

    10 января

    citforum.ck.ua:

    Дискуссионный клуб:

  • Краткое руководство по общению с никсофилами (Интенсификация Малаховна Сергина-Гейтс)
  • О троллях
  • Пещера горного короля: заметки о троллинге
  • Новые Блогометки:

    Сети и Интернет:

    • Делаем блог на Drupal
    • Использование lftp
    • Устанавливаем FTP сервер ProFTPd с TLS шифрованием
    • Управляем файлами на FTP сервере с помощью FileZilla

    Десктопы:

    • fluxbox.autorun
    • 15 человек на сундук мертвеца! (или песнь о зарытых сокровищах)

    Системы:

    • Живой Debian или рабочее место в кармане
    • Разбивка hdd

    Приложения:

    • Cat Excel files
    • Vim: меню выбора кодировок

    26 декабря

    citforum.ck.ua:

  • В Блогометках открыты разделы:
    • Софт для Windows
    • Сети и Интернет
  • dwm. От статики к динамике
  • Установил Solaris
  • Новая Дискуссия:
    • Нужен ли русский Linux?

    19 декабря

  • SQL Anywhere: встраиваемая СУБД
  • citforum.ck.ua:

  • В разделе Блогометки появились рубрики:
    • Десктопы
    • Приложения
    • Системы
  • Подробно о разделе: Блоги и блогометки: открываем сезон промывки
  • 13 декабря

    CitCity:

  • Microsoft и Барселона: сюрреализм?
  • citforum.ck.ua:

  • Открыт новый раздел Блогометки
  • ZFS в подробностях. 1. Былое и ныне
  • 5 декабря

  • Архитектура предприятия: основные определения
  • Архитектуры для государственных ведомств. Примеры
  • Обзор журнала Computer:

  • Высокопроизводительные встроенные системы
  • citforum.ck.ua:

  • Продолжение цикла Linux для начинающих:
    • Пользовательские интерфейсы
    • Файлы
    • Системы настройки

    Все публикации >>>




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

Информация для рекламодателей Пресс-релизы -
Послать комментарий
Информация для авторов
Rambler's Top100 хостинг от .masterhost This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2007 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...