Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Книга о KOL.doc
Скачиваний:
29
Добавлен:
30.04.2019
Размер:
1.77 Mб
Скачать

2.23.1. Дескриптор окна

Handle - дескриптор окна (типа hWnd, т.е. 32-разрядное число, уникальным образом идентифицирующее окно в системе). В KOL проектах имеется так же возможность создавать псевдо-оконные объекты, аналогично TGraphicControl в VCL, не имеющие собственного дескриптора - для них Handle всегда содержит 0;

HandleAllocated - проверяет, создано ли окно для объекта;

GetWindowHandle - возвращает дескриптор (Handle) окна, создавая его, если оно еще не создано (при этом автоматически создаются окна для всех родительских оконных объектов, если они еще не созданы);

CreateWindow - делает то же самое, что и GetWindowHandle, т.е. создает окно для оконного объекта, если оно еще не создано;

CreateChildWindows - создает окна всех дочерних оконных объектов TControl (рекурсивно), если они еще не созданы;

Close - закрывает окно, и уничтожает объект (если окно является главной формой приложения или объектом Applet, то приложение на этом завершается);

ClsStyle - стиль оконного класса (число, используемое при создании окна как параметр ClsStyle в вызове CreateWindowEx), обычно после создания объекта нет необходимости менять это свойство;

Style - стили окна, изменение этого свойства позволяет обеспечить тонкую настройку свойств окна, предназначено для профессионалов;

ExStyle - расширенные стили окна, аналогично предыдущему;

SubClassName - имя оконного класса, по умолчанию возвращает строку 'obj_XXXX', где XXXX - это имя класса окон (например, для кнопок: 'obj_BUTTON').

2.23.2. Родительские и дочерние контролы

В отличие от VCL, в KOL нет свойства Owner для компонентов. Принадлежность здесь реализуется методом Add2AutoFree[Ex]. Если вы используете для создания проекта MCK, то все объекты формы присоединяются к объекту-держателю формы именно через вызов методов Add2AutoFree[Ex] для того, чтобы обеспечить их автоматическое разрушение вместе с формой, когда завершается ее существование. Для визуальных же объектов имеется свойство Parent (и прочие ему сопутствующие), которое однозначно определяет отношение родительское окно – дочернее окно в среде Windows. Так же, как и в VCL, через свойство Parent можно поменять родителя визуальному объекту динамически, во время исполнения. Но не всегда: например, комбинированный список не допускает подобных вольностей, таково поведение API Windows.

Parent - ссылка (PControl) на родительский оконный объект (может отсутствовать для окон верхнего уровня (для Applet и для форм), а так же в случае, когда окно создавалось как дочернее по отношению к чужому окну (в последнем случае на родителя указывает ParentWindow);

ParentWindow - возвращает дескриптор родительского окна;

ParentForm - просматривает всех родителей по цепочке вверх, и возвращает объект формы, на которой лежит данный оконный объект;

ChildCount - возвращает количество дочерних оконных объектов;

Children[ i ] - возвращает указатель (PControl) для i-го дочернего элемента в списке ( примечание: в KOL еще сохранились свойства MembersCount и Members[ i ], но это "хвост", который тянется еще со времен XCL, в действительности эти свойства не нужны, достаточно ChildCount и Children[ i ] );

ChildIndex( C ) - возвращает индекс указанного дочернего оконного объекта (или -1, если такой объект не найден в списке дочерних);

MoveChild( C, i ) - "перемещает" дочерний "контрол" в указанную позицию в списке дочерних объектов;

IsControl - проверяет, что объект является именно "контролом" (т.е. не формой и не апплетом).