Главная страница
    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.045 c
15-1183515466
Slider007
2007-07-04 06:17
2007.07.29
С днем рождения ! 4 июля 2007 среда


2-1183447174
delphino
2007-07-03 11:19
2007.07.29
Почему может долго грузится программа?


2-1183383487
Sventitskiy
2007-07-02 17:38
2007.07.29
Проблемы с памятью


15-1183403239
KilkennyCat
2007-07-02 23:07
2007.07.29
Уберите битый пиксел. Я пугаюсь.


6-1166790510
Cawa
2006-12-22 15:28
2007.07.29
Исключение Connection closed gracefully при редиректе





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский