Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.07.29;
Скачать: CL | DM;

Вниз

добавление модулей   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.034 c
6-1166771959
merko$
2006-12-22 10:19
2007.07.29
Как прочитать инфу из файла котор. хранится на другом ПК


2-1183374371
malor
2007-07-02 15:06
2007.07.29
Error reading MyAdvStringGrid.SearchFooter.FindNextCaption: Prope


2-1183490235
Сорокин М
2007-07-03 23:17
2007.07.29
image на button


15-1183290441
Kolan
2007-07-01 15:47
2007.07.29
Help&Manual Toggles всегда открыты, как исправить?


11-1166288757
Psychedelic
2006-12-16 20:05
2007.07.29
Win XP Tab контрол компонент