Главная страница
    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.043 c
2-1183383561
авыф
2007-07-02 17:39
2007.07.29
MS SQL 2005


4-1171270394
Чапаев
2007-02-12 11:53
2007.07.29
Как потоку получить оповещение о выходе из suspend?


15-1183140482
qoooo
2007-06-29 22:08
2007.07.29
Книга - "Delphi 5, Руководство разработчика"


2-1183425203
Dreamse
2007-07-03 05:13
2007.07.29
Как найти все созданные формы ? Перечислить.


1-1175271189
Углук
2007-03-30 20:13
2007.07.29
Как окрасить TChartSeries?





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