Форум: "Компоненты";
Текущий архив: 2007.07.29;
Скачать: [xml.tar.bz2];
Вниздобавление модулей Найти похожие ветки
← →
DimaBr (2006-09-08 08:48) [0]Здравствуйте !
Имеется компонент, тип события которого описан в другом модуле. После создании обработчика события в дизайнере и компиляции ругается мол неизвестный тип, что и правильно поскольку нужно подключить недостающий модуль.
Как автоматически добавлять нужные модули ?
← →
Наиль © (2006-09-08 10:54) [1]При компиляции dpk иногда появляется предупреждение, что ты забыл указать "другой модуль". Если проигнорировать это предупреждение, то не редко возникает описаная тобой ситуация.
[Warning] Unit "другой модуль" implicitly imported into package "твой dpk"
← →
DimaBr (2006-09-08 11:49) [2]Это я знаю, не об этом речь. В проэкте с закинутым компонентом и созданным событием приходится вручную прописывать в USES имя модуля, где описан класс параметра в методе события.
unit A1
interfase
type
TMyParam = class;
TMyEvent = procedure (AParam: TMyParam) of object;
.....
unit A2;
uses A1;
type
TMyComponent = class(TComponent)
private
fMyEvent: TMyEvent;
published
property MyEvent: TMyEvent read fMyEvent write fMyEvent;
end;
при закидке такого компонента на форму и создании обработчика события MyEvent, и компиляции - компилятор ругается что неизвестный тип TMyEvent. Приходится вручную добавлять в USES модуль A1, так как этот тип описан там.
← →
GrayFace © (2006-09-09 12:34) [3]Такое впечатление, что добавляются модули, содержащие компоненты, используемые твоим. Я для каждого типа из другого модуля делаю так:
TRSProcedure = RSCommon.TRSProcedure;
. Для enum"ов приходится еще и каждое значение так перебрасывать вconst
.
← →
DrPass © (2006-09-09 17:16) [4]Ругается. Это факт. Чтобы не ругалось, нужно либо описать TMyComponent в том же модуле, что и TMyEvent, либо ввести какой-нибудь промежуточный класс в A1:
unit A1
interfase
type
TMyParam = class;
TMyEvent = procedure (AParam: TMyParam) of object;
type
TCustomMyComponent = class(TComponent)
end;
unit A2;
uses A1;
type
TMyComponent = class(TCustomMyComponent)
private
fMyEvent: TMyEvent;
published
property MyEvent: TMyEvent read fMyEvent write fMyEvent;
end;
← →
DimaBr (2006-09-11 09:24) [5]
> DrPass © (09.09.06 17:16) [4]
Так пробывал, действительно работает, только смешно получается делать промежуточный класс (пустой) для того чтобы зацепить модуль
Страницы: 1 вся ветка
Форум: "Компоненты";
Текущий архив: 2007.07.29;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.069 c