Смекни!
smekni.com

списков) тень не задается.Если требуется изменить заданное

состояние этого флага, следует воспользоваться универсальным

методом SetState :

procedure tView.SetState(AState: Word; Enable: Boolean);virtual;

где AState - флаг, который следует изменитьЖ

Enable=True, если флаг следует установить, и False, если

сбросить.

С помощью этого метода можно изменить любые флаги состояния,

но при каждом обращении к нему можно изменить только один

флаг.

4-й бит (sfActiv) - объект является либо активным окном ( окном, с ко-

торым происходит в настоящее время работа в программе), или

подэлементом активного окна.Как правило, этот флаг автомати-

чески меняет свое значение в процессе работы программы и изме-

нять его в программе практически не требуется.

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

группе может быть только один выделенный объект.Как и предыду-

щий флаг, состояние этого флага изменяется автоматически в

процессе работы программы, и обычно не возникает необходимости

принудительного изменения его состояния (изменить его также

можно с помощью метода SetState).

6-й бит (sfFocused) - объект является сфокусированным, т.е.является

выделенным в группе, и все его владельцы также являются выде-

ленными.Сфокусированный объект - то тот отображаемый объект,

с которым в настоящее время происходит работа (например,

конкретный редактор текста, если на экране открыто несколько

редакторов).

7-й бит (sfDragging) - объект находится в режиме перемещения или изме-

нения своих размеров либо с помощью клавиш направления, либо с

помощью мыши.Обычно этот флаг используется у окон и устанавли-

вается у окна при переходе его в такой режим, а сбрасывается

при выходе из этого режима.Принудительное изменение флага воз-

можно с помощью метода SetState.

8-й бит (sfDisabled) - объект является "запрещенным", т.е. не реагиру-

ющим ни на какие воздействия.Задать этот флаг можно также с

помощью метода SetState.

9-й бит (sfModal) - объект является модальным.Этот флаг характерен для

окон и устанавливается, если окно находится в модальном режиме

(использование метода ExecView или ExecuteDialog).Принудительно

изменять этот флаг не следует.

10-й бит (sfExposed) - объект имеет в качестве окончательного владель-

ца объект tApplication, т.е. имеет возможность отражаться

на экране (не путать с флагом ofVisible).Принудительно изме-

нять флаг не следует.

Остальные биты параметра State не используются.

Контекстная помощь.Этот параметр (HelpCtx) представляет собой

число типа Word, который задает значение параметра контекстной помощи

в случае, если отображаемый объект является сфокусированным.Этот пара-

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

ли контекстная помощь не нужна, этот параметр следует задать равным

нулю (константа hcNoContex).Это же значение принимает параметр и при

создании объекта.

Следующий отображаемый элемент.Этот параметр (Next) содержит ука-

затель на следующий объект в группе, в которую входит данный объ-

ект.Параметр устанавливается автоматически при включении объекта в

группу.Принудительно менять значение этого параметра не следует.

Владелец объекта.Параметр (Owner) представляет собой указатель на

владельца объекта - группу, в которой расположен данный объект.Пара-

метр устанавливается автоматически при размещении объекта в группе -

обычно с помощью метода Insert объекта tGroup или другого метода,

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

дует.

Объект tView обладает 67 методами плюс 1 метод, унаследованный от

объекта tObject.Многие из этих методов являются виртуальными и переоп-

ределяются для потомков.Все методы можно условно разбить на несколько

групп.

К первой группе можно отнести методы, с помощью которых создается

или уничтожается объект.Здесь следует отметить два конструктора-Init,

с помощью которого инициализируется новый объект, и Load, с помощью

которого объект загружается из потока, а также деструктор Done, выпол-

няющий действия, обратные действиям конструктора Init.

Ко второй, самой многочисленной группе, можно отнести методы, с

помощью которых либо задаются, либо определяются текущие параметры

объекта (задание и получение указанных выше параметров).

К третьей группе можно отнести методы, позволяющие поместить объ-

ект в группу, отобразить его на экране, удалить из группы, удалить с

экрана.

К четвертой группе относятся методы обработки событий, наиболее

часто используемым из которых является метод HandlEvent, обрабатываю-

щий текущее событие.

Наконец, к пятой группе отнесем все остальные методы, выполняющие

разнообразные дополнительные действия (например, получение палитры

цветов для объекта, разрешение и запрещение выполнения команд и т.д.)

Группа (tGroup).Z-порядок

В общем случае отображаемый объект может иметь достаточно сложную

структуру и включать в себя другие видимые элементы в качестве своих

подэлементов.Эти подэлементы, в свою очередь, могут включать в себя

другие подэлементы и т.д.

Совокупность объединенных отображаемых объектов представляет со-

бой группу (тип tGroup) и может рассматриваться как нечто единое,

предназначенное для использования в программе.Так же как и объект

tView, объект tGroup является абстрактным объектом и не может иметь

конкретные образцы в программе, однако является родоначальником целого

ряда реальных объектов (в первую очередь различных окон) и определяет

основные свойства таких объектов как некоего целого.Сам объект tGroup

является потомком объекта tView и наследует или переопределяет его па-

раметры и методы.

Любой объект типа tGroup представляет собой основной элемент

группы (например, диалоговое окно), называемый владельцем элементов

группы, в который включено то или иное количество подэлементов (напри-

мер, различные элементы управления диалогового окна).Параметры, насле-

дуемые группой от объекта tView, относятся к основному объекту группы

- владельцу группы; отдельные подэлементы, также являющиеся потомками

объекта tView, обладают своими характеристиками, часто не совпадающими

с характеристиками их владельца.

В дополнение к параметрам tView объект tGroup имеет ряд собствен-

ных параметров, наиболее важными и часто используемыми из которых яв-

ляются два.Первый параметр Last, указывающий на последний подэлемент

группы (фактически он является первым включенным в группу подэлемен-

тов).Вторым является параметр Current, указывающий на текущий выделен-

ный подэлемент.Если группа не имеет ни одного подэлемента, эти два па-

раметра равны nil.

Основной элемент группы инициализируется конструктором Init :

constructor tGroup.Init(var Bounds: tRect);

где Bounds - размеры объекта.

Если после инициализации группа помещается в другую группу, уста-

навливаются соответствующие значения параметров Next и Owner.

Любой подэлемент группы должен быть включен в эту группу с по-

мощью метода Insert :

procedure tGroup.Insert(P: pView);

где P - размещаемый объект, или другого метода, включающего в себя ме-

тод Insert и может быть из нее исключен с помощью метода Delete :

procedure tGroup.Delete(P: pView);

где P - исключаемый объект, или какого-либо другого метода, включающе-

го в себя метод Delete.

Последовательность включения подэлементов в группу очень важна,

т.к. от нее зависит порядок работы с подэлементами.Следует начинать

расположение подэлементов с левой верхней части основного элемента и

далее идти вправо и вниз.

Включенные в группу подэлементы образуют так называемый Z-поря-

док, и среди них можно выделить первый, последний и промежуточные эле-

менты.

┌───────────────────────────────────┐

│ Основной элемент (владелец) │

└────────────────┬──────────────────┘

┌────────────────┴──────────────────┐

│ Последний элемент (Last) │───────────────┐

└────────────────┬──────────────────┘ │

│ <───── Insert │

┌────────────────┴──────────────────┐ │

│ Предпоследний элемент │ │

└────────────────┬──────────────────┘ │

│ │

... │

│ │

┌────────────────┴──────────────────┐ │

│ Второй элемент │ │

└────────────────┬──────────────────┘ │

│ <───── InsertBefore │

┌────────────────┴──────────────────┐ │

│ Первый элемент │ │

└────────────────┬──────────────────┘ │

│ │

│ │

└──────────────────────────────────┘

Рис. 1. Структура группы

У каждого отображаемого объекта есть поле Next, указывающее на