Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Компоненты";
Текущий архив: 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.05 c
2-1183344188
Grademax
2007-07-02 06:43
2007.07.29
Как отследить "выключение системы"?


2-1183404561
ilya_ae
2007-07-02 23:29
2007.07.29
insertSql


2-1183588368
snowkam
2007-07-05 02:32
2007.07.29
OpenDialog


15-1182970406
@!!ex
2007-06-27 22:53
2007.07.29
Смена буквы диска.


15-1183170285
Ино
2007-06-30 06:24
2007.07.29
Что означает такая запись? Зачем она используется?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский