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 безлимит

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



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
                              Назад | Содержание | Вперед

 

Бесплатный конструктор сайтов и 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
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...