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

7.2. Использование расширений

Для того, чтобы использовать расширение, необходимо, во-первых, к нему обратиться. А именно, прописать ссылку на расширение в директиве компилятора uses, при этом указав правильный путь к исходным (или откомпилированным) файлам расширения в опциях проекта. И затем создавать объекты расширений.

Обычно, для расширенных объектов, так же как и для основных объектов KOL, определена функция конструирования NewXXXXX, возвращающая указатель на созданный объект. Но иногда такой функции нет, и тогда вызов конструктора должен выглядеть в стиле старинного Turbo Pascal: new( name_of_object_variable, Create ); Здесь функция new встроенная, а конструктор Create предоставляется всеми простыми объектами в стиле Object Pascal. Вместо идентификатора name_of_object_variable следует указать свое имя конструируемой переменной.

В случае наличия зеркала MCK, если вы его установили, использование еще проще: достаточно бросить зеркальный компонент на форму, и настроить его опции. В этом случае из вышеприведенного перечня первоочередных задач остается обычно только указание пути к исходным файлам в свойстве проекта (если эти пути еще не известны компилятору).

Многие компоненты могут сами корректно обеспечить даже наличие и правильное размещение в директиве uses ссылки на требуемый модуль. Но иногда автомат дает сбой, который может приводить к недоразумениям. А именно, в директиву uses ссылка на модули самого расширения и его зеркала попадают в неверные позиции, когда добавление выполняет сама среда Delphi непосредственно в момент бросания компонента на форму.

В этом случае проект отказывается компилироваться, начинает требовать совершенно ненужные ему файлы (тот же designintf.pas) или возмущаться по поводу несовпадения версии системных файлов. Все, что нужно сделать – это подправить кластер uses, отправив ссылки на модули VCL (а зеркала являются именно модулями VCL) внутрь защитных скобок {$IFNDEF KOL_MCK} … {$ENDIF}.

7.3. Разработка собственных расширений

Любишь кататься – люби и саночки возить.

(Русская народная пословица)

Тема эта была поднята программистами, использующими KOL, почти сразу же после возникновения проекта. Имеется уже некоторое количество статей и так называемых tutorials*, посвященных этой теме. Я рискну в этой книге еще раз остановиться на этом вопросе, хотя бы кратко.

7.3.1. Разработка невизуальных расширений

Прежде всего, сразу отмечу, что разработка невизуального расширения проблем вообще не представляет. Достаточно унаследовать свой объект от TObj, и дальше делайте с ним, что хотите. Или точнее, что вам нужно. Аналогично, нет никаких серьезных проблем и при создании MCK-зеркала для построенного таким образом расширения. Для этого формируется еще один модуль, в котором размещается сам зеркальный класс, унаследованный от TKOLObject, и процедура Register. Все, можно создавать пакет, и устанавливать его (не забудьте нарисовать иконку и поместить ее в dcr-файл, как обычно при разработке компонентов Delphi VCL). Задача легко аппроксимируется на случай, когда в одном модуле определяется несколько объектов, для каждого из которых необходимо иметь свой собственный зеркальный класс.

Для примера, вы можете посмотреть исходные коды какого-либо имеющегося невизуального расширения, каковых имеется несметное множество.