Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

добавление модулей


DimaBr ©   (2006-09-08 08:48:00) 

Здравствуйте !
Имеется компонент, тип события которого описан в другом модуле. После создании обработчика события в дизайнере и компиляции ругается мол неизвестный тип, что и правильно поскольку нужно подключить недостающий модуль.
Как автоматически добавлять нужные модули ?


DimaBr   (2006-09-11 09:24:00) [1]


> DrPass ©   (09.09.06 17:16) [4]

Так пробывал, действительно работает, только смешно получается делать промежуточный класс (пустой) для того чтобы зацепить модуль


DrPass   (2006-09-09 17:16:00) [2]

Ругается. Это факт. Чтобы не ругалось, нужно либо описать 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;


GrayFace   (2006-09-09 12:34:00) [3]

Такое впечатление, что добавляются модули, содержащие компоненты, используемые твоим. Я для каждого типа из другого модуля делаю так: TRSProcedure = RSCommon.TRSProcedure;. Для enum'ов приходится еще и каждое значение так перебрасывать в const.


DimaBr   (2006-09-08 11:49:00) [4]

Это я знаю, не об этом речь. В проэкте с закинутым компонентом и созданным событием приходится вручную прописывать в 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, так как этот тип описан там.


Наиль   (2006-09-08 10:54:00) [5]

При компиляции dpk иногда появляется предупреждение, что ты забыл указать "другой модуль". Если проигнорировать это предупреждение, то не редко возникает описаная тобой ситуация.

[Warning] Unit 'другой модуль' implicitly imported into package 'твой dpk'


Наверх

Титульная страница Поиск, карта сайта Написать письмо