TMenuBox Menus

+------------+ | TObject | +------+-----+ +------+-----+ | TView | +------+-----+ +------+-----+ | TMenuView | +----+---+---+ +--------+ +------+ +----+-----+ +====+=====+ | TMenuBar | | TMenuBox | +----------+ +==========+ Объекты MenuBox представляют вертикальные прямоугольники меню. Они могут содержать произвольный список выбираемых действий, включая элементы подменю. Как и в полосе меню, для указания запрещенных элементов используется цвет. Прямоугольники меню могут создаваться как подменю полосы меню или других прямоугольников меню или могут использоваться как отдельные выпадающие меню. Методы Init constructor Init(var Bounds: TRect; Amenu: PMenu; AParentMenu: PMenuView); Init настраивает параметр Bounds в соответствии с шириной и длиной элементов в AMenu, затем создает прямоугольник меню, вызывая TMenuView.Init. Бит ofPreProcess в поле Options установлен так, чтобы могли использоваться горячие клавиши. Установка State включает sfShadow. Поле меню установлено в AMenu, которое задает элементы меню. Поле ParentMenu установлено в AParentMenu. См. так же: TMenuView.Init, sfXXXX флаги состояний, ofXXXX флаги опций, TMenuView.Menu, TMenuView.ParentMenu Draw procedure Draw; virtual; Перекрывается: Редко Рисует рамку прямоугольника меню и элементы меню цветом по умолчанию. GetItemRect procedure GetItemRect(Item: PMenuItem; var R: TRect; virtual; Перекрывается: Редко Перекрывает абстрактный метод в TMenuView. Возвращает прямоугольник, занятый элементом меню. Используется для определения, находится ли отметка мышкой на данном элементе меню. См. так же: TMenuView.GetItemRect Палитра Прямоугольники меню, как и все видимые элементы меню, используют палитру по умолчанию CMenuView для отображения элементов со 2 по 7 в палитру стандартной программы. 1 2 3 4 5 6 +====+====+====+====+====+====+ CMenuView | 2 | 3 | 4 | 5 | 6 | 7 | +==+=+==+=+==+=+==+=+==+=+==+=+ Нормальный текст -+ | | | | +-- Короткий выбранный Запрещенный текст -----+ | | +------ Запрещенный выбранный Короткий текст -------------+ +------------ Нормальный выбранный

TMenuView Menus

+------------+ | TObject | +------+-----+ +------+-----+ | TView | +------+-----+ +======+=====+ | TMenuView | +====+===+===+ +--------+ +------+ +----+-----+ +----+-----+ | TMenuBar | | TMenuBox | +----------+ +----------+ TMenuView предоставляет тип абстрактного меню, из которого порождаются полосы и прямоугольники меню. Вы вероятно никогда не будете создавать экземпляров TMenuView. Поля ParentMenu ParenMenu: PMenuView; Только чтение Указатель на объект TMenuView (или порожденный от него), который владеет этим меню. Заметим, что TMenuView - не группа. Здесь принадлежность намного проще, чем для TGroup, позволяя вложенность меню: выбор подменю и обратный возврат в "родительское" меню. Выборы из полос меню, например, обычно приводят к "выпаданию" подменю. В этом случае полоса меню - предок прямоугольника меню. См. так же: TMenuBox.Init Menu Menu: PMenu; Только чтение Указатель на запись TMenu для этого меню, которая содержит связанный список элементов меню. Указатель меню позволяет обращаться ко всем полям элементов меню в видимом элементе меню. См. так же: TMenuView.FindItem, TMenuView.GetItemRect, тип TMenu Current Current: PMenuItem; Только чтение Указатель на текущий выбранный элемент меню. Методы Init constructor Init(var Bounds: TRect); Вызывает TView.Init, чтобы создать объект TMenuView размера Bounds. По умолчанию EventMask установлено в evBroadcast. Этот метод не предназначен для использования с экземплярами объектов TMenuView. Он предназначен для вызова из порожденных типов TMenuBar и TMenuBox. См. так же: TView.Init, evBroadcast, TMenuBar.Init, TMenuBox.Init Load constructor TMenuView.Load(var S: TStream); Создает объект TMenuView и загружает его из потока S вызывая TView.Load, а затем загружая элементы в список меню. См. так же: TView.Load, TMenuView.Store Execute function Execute: Word; virtual; Перекрывается: Никогда Выполняет видимый элемент меню до тех пор, пока пользователь не выберет элемент меню или не отменит этот процесс. Возвращает команду, назначенную выбранному элементу меню, или 0, если меню было отменено. Этот метод должен вызываться только из ExecView. См. так же: TGroup.ExecView FindItem function FindItem(Ch: Char): PMenuItem); Возвращает указатель на элемент меню, который имеет Ch как горячую клавишу (подсвеченный символ). Возвращает nil, если такой элемент не найден или этот элемент запрещен. Заметим, что для Ch не различаются прописные и строчные буквы. GetItemRect procedure GetItemRect(Item: PMenuItem; var R: TRect); virtual; Перекрывается: Всегда Этот метод возвращает в R прямоугольник, занимаемый данным элементом меню. Используется для определения, не был ли отмечен данный элемент мышкой. Наследники TMenuView должны перекрывать этот метод для того, чтобы откликаться на события от мышки. См. так же: TMenuBar.GetItemRect, TMenuBox.GetItemRect GetHelpCtx function GetHelpCtx: Word; virtual; Перекрывается: Иногда По умолчанию этот метод возвращает контекст подсказки текущего элемента меню. Если это hcNoContext, выбирается текущий контекст родительского меню. Если родительского меню нет, GetHelpCtx возвращает hcNoContext. См. так же: hcXXXX константы контекста help GetPalette function GetPalette: PPalette; virtual; Перекрывается: Иногда Возвращает указатель на палитру по умолчанию CMenuView. HandleEvent procedure HandleEvent(var Event: TEvent); virtual; Перекрывается: Никогда Вызывается для обработки событий меню. Определяет, какой элемент меню был выбран мышкой или клавиатурой (включая горячие клавиши) и генерирует соответствующее командное событие через PutEvent. См. так же: TView.HandleEvent, TView.PutEvent HotKey function HotKey(KeyCode: Word): PMenuItem; Возвращает указатель на элемент меню, связанный с горячей клавишей, заданной через KeyCode. Возвращает nil, если не существует такого элемента меню или если элемент запрещен. Горячие клавиши - это обычно функциональные клавиши или комбинации Alt ключей и определяются аргументами в вызовах NewItem и NewSubMenu в InitMenuBar. Этот метод используется в TMenuView.HandleEvent для определения, будет ли событие от клавиатуры вибирать элемент меню. Store procedure Store(var S: TStream); Сохраняет объект TMenuView (и его подменю) в потоке S, вызывая TView.Store, а затем записывая каждый элемент меню в поток. См. так же: TMenuView.Load Палитра Все видимые элементы меню используют палитру по умолчанию CMenuView для отображения элементов со 2 по 7 в палитру стандартной программы. 1 2 3 4 5 6 +====+====+====+====+====+====+ CMenuView | 2 | 3 | 4 | 5 | 6 | 7 | +==+=+==+=+==+=+==+=+==+=+==+=+ Нормальный текст -+ | | | | +-- Короткий выбранный Запрещенный текст -----+ | | +------ Запрещенный выбранный Короткий текст -------------+ +------------ Нормальный выбранный

TObject Objects

+===========+ | TObject | ++=+=+=+=+=++ +---------+ | | | | +---------+ +-------+-------+ | | | | +-------+-------+ | TCollection | | | | | | TResourceFile | +---------------+ | | | | +---------------+ +-----------+ | | +----------+ +-------+-------+ | | +-------+-------+ | TStream | | | | TStringList | +---------------+ | | +---------------+ +-------------+ +-------------+ +-------+-------+ +-------+-------+ | TStrListMaster| | TView | +---------------+ +---------------+ TObjеct - это начальная точка иерархии объектов Turbo Vision. Как базовый объект он не имеет предков, но имеет множество потомков. Кроме TPoint и ТRect все стандартные объекты Turbo Vision порождены в конечном счете от TObject. Любой объект, использующий потоки Turbo Vision, должен происходить от TObject. Методы Init constructor Init; Распределяет память в куче для объекта и заполняет его нулями. Вызывается из констракторов всех порожденных объектов. Заметим, что TObject.Init будет заполнять все поля в потомках так, что Вы должны вызвать TObject.Init до инициализации любых полей в констракторах порожденных объектов. Free procedure Free; Освобождает объект и вызывает дестрактор Done. Done destructor Done; virtual; Выполняет необходимую очистку и освобождение динамических объектов.

TParamText Dialogs

TParamText порожден от TStaticText, который использует параметризованные строки текста для форматного вывода, используя процедуру FormatStr. Поля ParamCount ParamCount: Integer; ParamCount указывает число параметров, содержащихся в ParamList. См. так же: TParamText.ParamList ParamList ParamList: Pointer; ParamList - это нетипированный указатель на массив или запись указателей или значений типа LongInt, используемый как параметр форматирования для текстовой строки. Методы Init constructor Init(var Bounds: TRect; AText: String; AParamCount: Integer); Инициализирует объект статического текста, вызывая TStaticText.Init с заданным Bounds и текстовой строкой AText, которая может содержать спецификаторы формата в форме %[-][nnn]X, который будет замещаться параметрами, переданными во время выполнения. Число параметров, переданных в ParamCount, присваивается полю ParamCount. Спецификаторы формата детально описаны в процедуре FormatStr. См. так же: TStaticText.Init, FormatStr процедуры Load constructor Load(var S: TStream); Распределяет объект TParamText в куче и загружает его занчение из потока S, вызывая TStaticText.Load, затем читая поле ParamCount из потока. См. так же: TStaticText.Load DataSize function DataSize: Word; virtual; Возвращает размер данных, требуемый параметрами объекта, т.е. ParamCount*SizeOf(LongInt). GetText procedure GetText(var S: String); virtual; Создает форматированную строку текста в S, выполняя объединение параметров, заданных в ParamList в текстовую строку Text с помощью вызова FormatStr(S, Text^, ParamList^). См. так же: FormatStr процедуры SetData procedure SetData(var Rec); virtual; Этот видимый элемент читает DataSize байт в ParamList из Rec. См. так же: TView.SetData Store procedure Store(var S: TStream); Сохраняет объект в потоке S, вызывая TStaticText.Store, затем записывая поле ParamCount в поток. См. так же: TStaticText.Store Палитра Объекты TParamText используют палитру по умолчанию CStaticText для отображения 6-го элемента в палитру стандартного диалога. 1 +===+ CStaticText | 6 | +=+=+ Текст -----+

TPoint Objects

TPoint - это простой объект, представляющий точку на экране. Поля X X: Integer; Х - это колонка точки на экране. Y Y: Integer; Y - это строка точки на экране.

TProgram App

+---------+ | TObject | +----+----+ +----+----+ | TView | +----+----+ +----+----+ | TGroup | +-+--+--+-+ +----------+ | +------------+ +----+----+ +----+-----+ +======+=======+ | TWindow | | TDeskTop | | TProgram | +----+----+ +----------+ +======+=======+ +----+----+ +------+-------+ | TDialog | | TApplication | +---------+ +--------------+ TProgram обеспечивает базовую заготовку для всех стандартных программ на Turbo Vision. Все такие программы должны порождаться от TProgram или его потомка TApplication. TApplication отличается от TProgram только констрактором и дестрактором. 2 типа объекта предоставляются для большей гибкости при создании нестандартных программ. В большинстве случает Ваша программа будет порождаться от TApplication. TProgram порождается от TGroup, поскольку она должна содержать объекты TDeskTop, TStatusLine и TMenuBar. Методы Init constructor Init; Перекрывается: Иногда Устанавливает глобальную переменную Application в @Self; вызывает TProgram.InitScreen для инициализации переменных, определяющих режим экрана; вызывает TGroup.Init передавая прямоугольник Bounds равный полному экрану; устанавливает поле State в sfVisible + sfSelected + sfFocused + sfModal + sfExposed; устанавливает поле Options в 0; устанавливает поле Buffer в адрес экранного буфера, заданного в ScreenBuffer; наконец вызывает InitDeskTop, InitStatusLine и InitMenuBar и вставляет эти видимые элементы в группу TProgram. См. так же: TGroup.Init, TProgram.InitDeskTop, TProgram.InitStatusLine, TProgram.InitMenuBar Done destructor Done; virtual; Перекрывается: Иногда Освобождает объекты DeskTop, MenuBar и StatusLine и устанавливает глобальную переменную Application в nil. См. так же: TGroup.Done GetEvent procedure GetEvent(var Event: TEvent); virtual; Перекрывается: Редко По умолчанию TView.GetEvent просто вызывает GetEvent своего владельца и поскольку TProgram (или TApplication) в конечном итоге являются владельцем любого видимого элемента, любой вызов GetEvent будет приводить к TProgram. GetEvent (если только видимый элемент не перекроет GetEvent) TРrogram.GetEvent вначале проверяет, не сгенерировал ли TProgram.PutEvent событие. Если да, то GetEvent возвращает это событие. Если нет пришедшего события, GetEvent вызывает GetMouseEvent; если тот возвращает evNothing, вызывается GetKeyEvent, если оба возвращают evNothing: указывая, что нет ввода от пользователя, GetEvent вызывает TProgram.Idle, чтобы запустить "фоновые" задачи, выполняемые во время ожидания ввода от пользователя. До возврата GetEvent передает все события evKeyDown и evMouseDown в StatusLine для отображения в ассоциированные события от горячих клавиш evCommand. См. так же: TProgram.PutEvent, GetMouseEvent, GetKeyEvent GetPalette function GetPalette: PPalette; virtual; Перекрывается: Иногда Возвращает указатель на палитру, заданную индексом палитры в глобальной переменной AppPalette. TProgram поддерживает 3 палитры: apColor, apBlackWhite и apMonochrome. Переменная AppPalette инициализируется в TProgram.InitScreen. См. так же: TProgram.InitScreen, AppPalette, apXXXX константы HandleEvent procedure HandleEvent(var Event: TEvent); virtual; Перекрывается: Всегда Обрабатывает событие от клавиатуры от Alt-1 до Alt-9 генерируя событие evBroadcast с значением Command равным cmSelectWindowNum и значением InfoInt 19. TWindow.HandleEvent реагирует на такие сообщения, выбирая окно с данным номером. Обрабатывает событие evCommand со значением Command равным cmQuit вызывая EndModal(cmQuit) которое приводит к завершению программы. TProgram.Handle почти всегда перекрывается для введения обработки команд, специфичных для Вашей программы. См. так же: TGroup.HandleEvent Idle procedure Idle; virtual; Перекрывается: Иногда Idle вызывается из TProgram.GetEvent когда очередь событий пуста, позволяя программе выполнять фоновые задачи при ожидании ввода от пользователя. По умолчанию TProgram.Idle вызывает StatusLine^.Update, чтобы разрешить строке статуса обновлять себя в соответствии с текущим констекстом подсказки. Затем, если набор команд изменился после последнего вызова TProgram.Idle, генерируется evBroadcast со значением Command равным cmCommandSetChanged, чтобы разрешить видимому элементу, который зависит от этого набора команд, разрешить или запретить себя. Если Вы перекрываете Idle, всегда вызывайте наследуемый Idle. Так же убедитесь, что любые задачи, выполняемые в Вашем Idle, не занимают слишком большого времени в программе, поскольку это будет блокировать ввод пользователя. InitDeskTop procedure InitDeskTop; virtual; Перекрывается: Редко Создает объект TDeskTop для программы и сохраняет указатель на него в глобальной переменной DeskTop. InitDeskTop вызывается в TProgram.Init и никогда не должен вызываться прямо. InitDeskTop может быть перекрыт созданием потомка от TDeskTop. См. так же: TProgram.Init, TDeskTop, TWindow.Init InitMenuBar procedure InitMenuBar; virtual; Перекрывается: Всегда Создает объект TMenuBar для программы и сохраняет указатель на него в глобальной переменной в MenuBar. InitMenuBar вызывается в TProgram.Init и никогда не должен вызываться прямо. InitMenuBar почти всегда перекрывается потомком от TMenuBar, определенным пользователем. См. так же: TProgram.Init, TMenuBar, TWindow.Init InitScreen procedure InitScreen; virtual; Перекрывается: Иногда Вызывается из TProgram.Init и TProgram.SetScreenMode каждый раз, когда режим экрана инициализируется или изменяется. Это метод, который действительно выполняет обновление и настройку переменных, определяющих режим экрана для размера тени, маркеров и палитры программы. См. так же: TProgram.Init, TProgram.SetScreenMode InitStatusLine procedure InitStatusLine; virtual; Перекрывается: Всегда Создает объект TStatusLine для программы и сохраняет указатель на него в глобальной переменной в StatusLine. InitStatusLine вызывается в TProgram.Init и никогда не должен вызываться прямо. InitStatusLine почти всегда перекрывается потомком от TStatusLine, определенным пользователем. См. так же: TProgram.Init, TStatusLine OutOfMemory procedure OutOfMemory; virtual; Перекрывается: Часто OutOfMemory вызывается из TProgram.ValidView для определения, что LowMemory - True. OutOfMemory должна сообщать пользователю, что недостаточно памяти для выполнения операции. Например с использованием программы MessageBox из модуля StdDlg: procedure TMyApp.OutOfMemory; begin MessageBox('Not enough memory to complete operation.', nil, mfError + mfOKButton); end; См. так же: TProgram.ValidView, LowMemory PutEvent procedure PutEvent(var Event: TEvent); virtual; Перекрывается: Редко По умолчанию TView.PutEvent просто вызывает PutEvent своего владельца и поскольку объект TProgram (или TApplication) в конечном счете является владельцем любого видимого элемента, каждый вызов PutEvent будет приводить к TProgram.PutEvent (если только видимый элемент не перекрыл PutEvent). Program.PutEvent сохраняет копию записи PutEvent в буфере и следующий вызов в TPreogram.GetEvent будет возвращать эту копию. См. так же: TProgram.GetEvent, TView.PutEvent Run procedure Run; virtual; Перекрывается: Редко Выполняет TProgram, вызывая метод Execute (который TProgram наследует от TGroup). См. так же: TGroup.Execute SetScreenMode procedure SetScreenMode(Mode: Word); Устанавливает режим экрана. Mode - одна из констант smCO80, smBW80 или smMono с дополнительным smFont8x8 для выбора 43- или 50-строчного режима на EGA или VGA. SetScreenMode скрывает мышку, вызывает SetVideoMode для изменения режима экрана, вызывает InitScreen для инициализации переменных режима экрана, назначает ScreenBuffer в TProgram.Buffer, вызывает ChangeBounds с новым прямоугольником экрана и, наконец, показывает мышку. См. так же: TProgram.InitScreen, SetVideoMode, smXXXX константа ValidView function TProgram.ValidView(P: PView): PView; Проверяет правильность вновь созданных видимых элементов, возвращая Р, если видимый элемент правильный и nil - если нет. Во-первых, если Р - nil, возвращается значение nil. Во-вторых, если LowMemory - True, при вызове ValidView видимый элемент, заданный в Р, освобождается, вызывается метод OutOfMemory и возвращается значение nil. В-третьих, если вызов P^.Valid(cmValid) возвращает False, видимый элемент освобождается и возвращается значение nil. Иначе видимый элемент считается правильным и возвращается указатель на этот видимый элемент Р. ValidView часто используется для проверки правильности нового видимого элемента до вставки его во владельца. Например, следующий оператор показывает типичную последовательность создания, проверки и вставки нового окна в панель экрана (TProgram.ValidView и TGroup.Insert знают как игнорировать возможные указатели nil, возникающие в результате ошибок). DeskTop^.Insert(ValidView(New(TMyWindow, Init(.)))); См. так же: LowMemory, TProgram.OutOfMemory, Valid методы Палитра Палитра для объекта-программа управляет конечным отображением цвета всех видимых элементов программы. Все отображения других палитр приводят к выбору элемента в палитре программы, которая задает атрибуты текста. Первый элемент используется в TBackground для цветов фона. Элементы со 2 по 7 используются меню и строкой статуса. 1 2 3 4 5 6 7 +===+===+===+===+===+===+===+ CColor |$71|$70|$78|$74|$20|$28|$24| +===+===+===+===+===+===+===+ +===+===+===+===+===+===+===+ CBlackWhite |$70|$70|$78|$7F|$07|$07|$0F| +===+===+===+===+===+===+===+ +===+===+===+===+===+===+===+ CMonochrome |$70|$07|$07|$0F|$70|$70|$70| +=+=+=+=+=+=+=+=+=+=+=+=+=+=+ Фон ----+ | | | | | +-- Короткий выбор Нормальный текст --+ | | | +------ Запрещенный выбор Запрещенный текст -----+ | +---------- Нормальный выбор Короткий текст ------------+ Элементы в 8 по 15 используются голубыми окнами. 8 9 10 11 12 13 14 15 +===+===+===+===+===+===+===+===+ CColor |$17|$1F|$1A|$31|$31|$1E|$71|$00| +===+===+===+===+===+===+===+===+ +===+===+===+===+===+===+===+===+ CBlackWhite |$07|$0F|$07|$70|$70|$07|$70|$00| +===+===+===+===+===+===+===+===+ +===+===+===+===+===+===+===+===+ CMonochrome |$07|$0F|$07|$70|$70|$07|$70|$00| +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ Рамка пассивна + | | | | | | +-- Зарезервировано Рамка активна -----+ | | | | +- Выбранный текст скроллера Кнопка рамки ----------+ | | +---- Нормальный текст скроллера Страница скроллинга -------+ +-------- Зарезервировано Элементы с 16 по 23 используются бирюзовыми окнами. 16 17 18 19 20 21 22 23 +===+===+===+===+===+===+===+===+ CColor |$37|$3F|$3A|$13|$13|$3E|$21|$00| +===+===+===+===+===+===+===+===+ +===+===+===+===+===+===+===+===+ CBlackWhite |$07|$0F|$07|$70|$70|$07|$70|$00| +===+===+===+===+===+===+===+===+ +===+===+===+===+===+===+===+===+ CMonochrome |$07|$0F|$07|$70|$70|$07|$70|$00| +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ Рамка пассивна + | | | | | | +-- Зарезервировано Рамка активна -----+ | | | | +- Выбранный текст скроллера Кнопка рамки ----------+ | | +---- Нормальный текст скроллера Страница скроллинга -------+ +-------- Зарезервировано Элементы с 24 по 31 используются серыми окнами. 24 25 26 27 28 29 30 31 +===+===+===+===+===+===+===+===+ CColor |$70|$7F|$7A|$13|$13|$70|$7F|$00| +===+===+===+===+===+===+===+===+ +===+===+===+===+===+===+===+===+ CBlackWhite |$70|$7F|$7F|$70|$07|$70|$07|$00| +===+===+===+===+===+===+===+===+ +===+===+===+===+===+===+===+===+ CMonochrome |$70|$70|$70|$07|$07|$70|$07|$00| +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ Рамка пассивна + | | | | | | +-- Зарезервировано Рамка активна -----+ | | | | +- Выбранный текст скроллера Кнопка рамки ----------+ | | +---- Нормальный текст скроллера Страница скроллинга -------+ +-------- Зарезервировано Элементы с 32 по 63 используются диалоговыми окнами. См. TDialog для отдельных элементов. 32 33 34 35 36 37 38 39 40 +===+===+===+===+===+===+===+===+===+ CColor |$17|$1F|$1A|$31|$31|$31|$1E|$71|$00| +===+===+===+===+===+===+===+===+===+ +===+===+===+===+===+===+===+===+===+ CBlackWhite |$07|$0F|$07|$70|$70|$70|$07|$70|$00| +===+===+===+===+===+===+===+===+===+ +===+===+===+===+===+===+===+===+===+ CMonochrome |$07|$0F|$07|$70|$70|$70|$07|$70|$00| +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ Рамка пассивна + | | | | | | | +-- Короткая метка Рамка активна -----+ | | | | | +- Подсвеченная метка Кнопка рамки ----------+ | | | +----- Нормальная метка Страница скроллинга -------+ | +--------- Статический текст Элементы управления -----------+ скроллинга 41 42 43 44 45 46 47 48 49 +===+===+===+===+===+===+===+===+===+ CColor |$17|$1F|$1A|$31|$31|$31|$1E|$71|$00| +===+===+===+===+===+===+===+===+===+ +===+===+===+===+===+===+===+===+===+ CBlackWhite |$07|$0F|$07|$70|$70|$70|$07|$70|$00| +===+===+===+===+===+===+===+===+===+ +===+===+===+===+===+===+===+===+===+ CMonochrome |$07|$0F|$07|$70|$70|$70|$07|$70|$00| +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ Нормальная кнопка | | | | | | | +-- Короткий кластер Кнопка по умолчанию+ | | | | | +----- Выбранный кластер Выбранная кнопка-------+ | | | +-------- Нормальный кластер Запрещенная кнопка---------+ | +------------ Тень кнопки Короткая кнопка ---------------+ 50 51 52 53 54 55 56 +===+===+===+===+===+===+===+ CColor |$1F|$2F|$1A|$20|$72|$31|$31| +===+===+===+===+===+===+===+ +===+===+===+===+===+===+===+ CBlackWhite |$0F|$70|$0F|$07|$70|$70|$70| +===+===+===+===+===+===+===+ +===+===+===+===+===+===+===+ CMonochrome |$07|$70|$07|$07|$70|$07|$07| +=+=+=+=+=+=+=+=+=+=+=+=+=+=+ Нормальная строка----+ | | | | | +- Элементы управления ввода | | | | | скроллинга окна истории Выбранная строка ------+ | | | +----- Страница скроллинга ввода | | | окна истории Стрелки строки ввода --------+ | +---------- Стороны истории Стрелка истории -----------------+ 57 58 59 60 61 62 63 +===+===+===+===+===+===+===+ CColor |$30|$2F|$3E|$31|$13|$00|$00| +===+===+===+===+===+===+===+ +===+===+===+===+===+===+===+ CBlackWhite |$07|$70|$0F|$07|$07|$00|$00| +===+===+===+===+===+===+===+ +===+===+===+===+===+===+===+ CMonochrome |$07|$70|$0F|$07|$07|$00|$00| +=+=+=+=+=+=+=+=+=+=+=+=+=+=+ Нормальный просмотр--+ | | | | | +-- Зарезервировано списка | | | | | Активный просмотр ------+ | | | +------ Зарезервировано списка | | | Выбранный просмотр списка ---+ | +---------- Информационная Разделитель просмотра списка ----+ панель

TRadioButtons Dialogs

+------------+ | TObject | +------+-----+ +------+-----+ | TView | +------+-----+ +------+-----+ | TCluster | +----+---+---+ +--------+ +------+ +======+========+ +------+------+ | TRadioButtons | | TCheckBoxes | +===============+ +-------------+ Объекты TRadioButtons - это кластеры, содержащие до 65,536 элементов управления, из которых в любой момент времени может быть выбрана только одна кнопка. Выбор невыбранной кнопки будет автоматически освобождать предварительно выбранную кнопку. Этот объект наследует от TCluster большую часть функций, включая Init, Load и Done. Зависимые кнопки часто ассоциированы с объектом TLabel. TRadioButtons интерпретирует наследуемое поле TCluster.Value как номер "нажатой" кнопки. С номером первой кнопки в кластере, равным 0. Методы Draw procedure Draw; virtual; Перекрывается: Редко Рисует кнопки как ' ( ) ' . Mark function Mark(Item: Integer): Boolean; virtual; Перекрывается: Никогда Возвращает True, если Item = Value, т.е. если кнопка с номером Item представлена текущим значением поля Value. См. так же: TCluster.Value, TCluster.Mark MovedTo procedure MovedTo(Item: Integer); virtual; Перекрывается: Никогда Присваивает Value значение Item. См. так же: TCluster.MovedTo, TRadioButtons.Mark Press procedure Press(Item: Integer); virtual; Перекрывается: Никогда Присваивает Value значение Item. Вызывается при нажатии кнопки с номером Item. SetData procedure SetData(var Rec); virtual; Перекрывается: Редко Вызывает TCluster.SetData для установки поля Value, затем устанавливает поле Sel равным Value, поскольку выбранный элемент - это "нажатая" кнопка. См. так же: TCluster.SetData Палитра Объекты TRadioButtons используют CCluster - палитру по умолчанию для всех объектов кластера для отображения элементов с 16 по 18 в палитру стандартного диалога. 1 2 3 4 +====+====+====+====+ CCluster | 16 | 17 | 18 | 18 | +==+=+==+=+==+=+==+=+ Нормальный текст | | +--- Короткая выбранная Выбранный текст ------+ +-------- Короткая нормальная

TRect Objects

Поля A A: TPoint А - это точка, определяющая верхний левый угол прямоугольника на экране. B B: Point В - это точка, определяющая нижний правый угол прямоугольника на экране. Методы Assign procedure Assign(XA, YA, XB, YB: Integer); Этот метод назначает значения параметров полям прямоугольника. ХА становится А.Х, ХВ становится Х.В и т.д. Copy procedure Copy(R: TRect); Copy устанавливает все поля равными прямоугольнику R. Move procedure Move(ADX, ADY: Integer); Перемещает прямоугольник, добавляя ADX к A.X и B.X и добавляя ADY к A.Y и B.Y. Grow procedure Grow(ADX, ADY: Integer); Изменяет размер прямоугольника, вычитая ADX из A.X, добавляя ADX к B.X, вычитая ADY из A.Y и добавляя ADY к B. Y. Intersect procedure Intersect(R: TRect); Изменяет положение и размер прямоугольника до области, определенной пересечением текущего положения и R. Union procedure Union(R: TRect); Изменяет прямоугольник до его объединения с прямоугольником R; т.е. до наименьшего прямоугольника, содержащего этот объект и R. Contains function Contains(P: TPoint): Boolean; Возвращает True, если прямоугольник содержит точку P. Equals function Equals(R: TRect): Boolean; Возвращает True, если R равен данному прямоугольнику. Empty function Empty: Boolean; Возвращает True, если прямоугольник пустой, т.е. не содержит символьного пространства. Таким образом поля A и B равны.

TResourceCollection Objects

+---------+ | TObject | +----+----+ +------+------+ | TCollection | +------+------+ +--------+----------+ | TSortedCollection | +--------+----------+ +--------+----------+ | TStringCollection | +--------+----------+ +=========+===========+ | TResourceCollection | +=====================+ TResourseCollection порожден от TStringCollection и используется с TSourseFile для реализации коллекции ресурсов. Файл ресурсов - это поток, который индексируется ключевыми строками. Следовательно, каждый элемент ресурса имеет целое поле Pos и строковое поле Key. Перекрытие методов TResourseCollection главным образом связано с обработкой дополнительных строк в его элементах. TResourseCollection используется внутри объектов TResourseFile для поддержки индекса файла ресурсов.

TResourceFile Objects

+---------+ | TObject | +----+----+ +=======+=======+ | TResourceFile | +===============+ TResourseFile реализует поток, который может индексироваться ключевыми строками. Когда объекты сохраняются в файле ресурса, используя TResourseFile.Put, задается ключевая строка, которая идентифицирует этот объект. Объект может быть позже получен указанием этой ключевой строки в вызове TResourseFile.Get. Для обеспечения быстрого и эффективного доступа к объектам, хранящимся в файле ресурса, TResourseFile хранит ключевые строки в отсортированной коллекции строк (используя тип TResourseCollection) вместе с позицией и размером данных этого ресурса в файле ресурса. Как и в случае потоков, типы объектов, записываемые и читаемые из файла ресурсов, должны быть зарегистрированы с помощью RegisterType. Поля Stream Stream: PStream; Только чтение Указатель на поток, связанный с этим файлом ресурса. Modified Modified: Boolean; Чтение/Запись Установлен в True, если файл ресурса был модифицирован. Методы Init constructor Init(AStream: Pstream); Перекрывается: Никогда Инициализирует файл ресурса, используя поток, заданный через AStream, и устанавливает поле Modified в False. Например: ResFile.Init(New(TBufStream, Init("MYAPP.RES', stOpenRead, 1024))); Во время инициализации Init смотрит в заголовке файла ресурсов текущую позицию в потоке. Формат заголовка файла ресурсов: type TResFileHeader = record Signature: array[14] of Char; ResFileSize: Longint; IndexOffset: Longint; end; где Signature содержит 'FBPR', ResFileSize содержит размер всего файла ресурсов, за исключением полей Signature и ResFileSize (т.е. размер файла ресурса -8 байт) и IndexOffset содержит смещение коллекции индексов от начала заголовка. Если Init не находит заголовка файла ресурса в текущей позиции AStream, он считает, что создается новый файл ресурса и создает пустой индекс. Если Init видит метку .EXE файла в текущей позиции потока, он просматривает поток до конца файла .EXE и ищет заголовок файла ресурса здесь. Аналогично Init будет пропускать оверлейный файл, добавленный к .EXE файлу (так же как OvrInit пропускает файл ресурса). Это означает, что Вы можете добавить оверлейный файл и файл ресурса (в любом порядке) в конец .EXE файла Вашей программы. (Именно это сделано с выполнимым файлом IDE - TURBO.EXE). См. так же: TResourceFile.Done Done destructor Done; virtual; Перекрывается: Никогда Выталкивает файл ресурса, используя TResourseFile.Flush, затем освобождает индекс и поток, указанный полем Stream. См. так же: TResourceFile.Init, TResourceFile.Flush Count function Count: Integer; Возвращает число ресурсов, запомненных в файле ресурсов. См. так же: TResourceFile.KeyOf Delete procedure Delete(Key: String); Удаляет ресурс, индексируемый ключем Key из файла ресурсов. Пространство, ранее занятое удаленным ресурсом, не используется. Вы можете удалить эту память, используя SwitchTo для создания упакованной копии файла в новом потоке. См. так же: TResourceFile.SwitchTo Flush procedure Flush; Если файл ресурса был модифицирован (проверяется поле Modified) Flush сохраняет обновленный индекс в конце потока и обновляет заголовок ресурса в начале потока. Затем Modified устанавливается в False. См. так же: TResourceFile.Done, TResourceFile.Modified Get function Get(Key: String): PObject; Ищет Key в индексе файла ресурсов. Возвращает nil, если ключ не найден. Иначе, устанавливает поток на позицию, заданную индексом и вызывает Stream^.Get для создания и загрузки объекта по этому индексу. Например DeskTop^.Insert(ValidView(ResFile.Get('EditorWindow'))); См. так же: TResourceFile.KeyAt, TResourceFile.Put KeyAt function KeyAt(I: Integer): String; Возвращает ключевую строку для ресурса с номером i в файле ресурса. Индекс первого ресурса 0 и индекс последнего ресурса TResourseFile.Count-1. Используя Count и KeyAt Вы можете обработать все ресурсы в файле ресурса. См. так же: TResourceFile.Count Put procedure Put(Item: PObject; Key: String); Добавляет объект, заданный через Р в файл ресурса с ключевой строкой, заданной в Key. Если индекс содержит Key, новый объект замещает старый. Объект добавляется в конец существующих объектов файла ресурса с использованием Stream^.Put См. так же: TResourceFile.Get SwitchTo function SwitchTo(AStream: PStream; Pack: Boolean): PStream; Переключает файл ресурса из его потока в поток, переданный через AStream и возвращает указатель на новый поток. Если параметр Pack равен True, поток будет отбрасывать пустое и неиспользуемое пространство из файла ресурса до записи в новый поток. Это единственный способ сжать файл ресурса. Копирование с параметром Pack = False будет выполняться быстрее, но без сжатия.
                              Назад | Содержание | Вперед