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

Вниз

O Screen.DataModuleCount   Найти похожие ветки 

 
Question   (2002-07-09 09:36) [0]

Да похоже никто не знает О Screen.DataModuleCount а я ещё глупым псивдонимом прокрываюсь, похоже как всегда надо решать проблему самому и потратить много времени
(вопрос был ниже задан)


 
Question   (2002-07-09 09:37) [1]

вызываю функцию i:=Screen.DataModuleCount но она мне возвращает 0, хотя заранее мне известно что в проложении не один DataMadule.
Дополнительно могу сказать что использую MIDI формы.


 
Eugene Lachinov ©   (2002-07-09 09:51) [2]

А как создаются DataModule в программе ?


 
Question   (2002-07-09 10:03) [3]

Пара штук создаются в начале работы как AutoCreateForms
остальные в виде пары Form"a -DataModule.
По началу и я думал что всё просто и где то я промахнулся.
Но самое интересное заключается в том что на других тестовых программах(по этому случаю всё выходит просто OK) по этому я не случайно здесь т.к. в основном я даю советы


 
Digitman ©   (2002-07-09 10:07) [4]

Screen.DataModuleCount возвращает тек.значение сч-ка объектов класса TDataModule, созданных с параметром Owner = Application


 
Question   (2002-07-09 10:18) [5]

Вот что я отвечу:
я прогонял счётчик по Application.ComponentCount
Те модули которые создавались как AutoCreateForms
и те для которых я устанавливаю Owner = Application
в массиве Application.Components находятся.
Да так тоже можно извратится НО...
Почему же всё же Screen.DataModuleCount=0
и почему в других приложениях всё выходит нормально.
Где тот промах который я сделал? Где эта тонкость?


 
Eugene Lachinov ©   (2002-07-09 10:30) [6]

Проверьте состояние переменной @Classes.AddDataModule на момент создания DataModule-й, все таки лучше кусок кода описания DataModule-й, а то опять играем в "угадайку"


 
Fiend ©   (2002-07-09 10:34) [7]

А если не секрет, зачем нада знать количество датамодулей в проге?

И зря вы кстати скрываетесь!!!

Вопрос не лоховской, и задали вы его КОНКРЕТНО.


 
Digitman ©   (2002-07-09 10:38) [8]

TScreen = class(TComponent)
...
FDataModules: TList;
...
procedure AddDataModule(DataModule: TDataModule);
...
property DataModuleCount: Integer read GetDataModuleCount;
end;

procedure TScreen.AddDataModule(DataModule: TDataModule);
begin
FDataModules.Add(DataModule);
end;

constructor TDataModule.CreateNew(AOwner: TComponent; Dummy: Integer);
begin
inherited Create(AOwner);
Screen.AddDataModule(Self); // даже Owner, оказывается, роли не играет
end;


отсюда - простейший вывод : модуль данных регистрируется в списке, контролируемом объектом Screen, если он создается вызовом конструктора CreateNew(). А этот конструктор, в свою очередь, всегда вызывается в контексте TDataModule.Create()

Так что, если модуль данных содается на базе TDataModule и его конструктор Create() не переопределен (или переопределен, но вызывает inherited Create()), то модуль будет зарегистрирован ВСЕГДА.


 
Question   (2002-07-09 10:45) [9]

Ребята про код говорить можно лишь следующее:
a) Application.CreateForm(TREALEAST, REALEAST)
b) modul_Contractor:=Tmodul_Contractor.Create(self);
про @Classes.AddDataModule попробую.


 
Question   (2002-07-09 10:51) [10]

С другой стороны действительно чем @Classes.AddDataModule лучше конструктора TDataModule.Create();


 
Andrey007   (2002-07-09 11:13) [11]

Странно, у меня в программе 1 DataModule и ShowMessage(IntToStr(Screen.DataModuleCount)) выдаёт 1.


 
Digitman ©   (2002-07-09 11:56) [12]

никаких несуразиц быть не должно, если у тебя
Tmodul_Contractor = class(TDataModule). И никаких @Classes.AddDataModule не нужно вызывать - это делается автоматически вирт.конструктором TDataModule.
Ты определял конструктор Tmodul_Contractor.Create() ? Приведи-ка его реализацию - скорей всего ты не вызываешь в нем inherited Create(Owner)



Страницы: 1 вся ветка

Текущий архив: 2002.07.22;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.011 c
14-70899
dron1
2002-06-24 15:28
2002.07.22
поле с возможностью выбора


3-70594
KAA
2002-06-28 18:00
2002.07.22
Время выполнения запроса


14-70915
SPeller
2002-06-25 16:12
2002.07.22
HTML и JavaScript


14-70896
PVOzerski
2002-06-25 12:30
2002.07.22
Кто подскажет, где в Сети можно найти/скачать УДК?


14-70887
ioRaptor
2002-06-24 21:09
2002.07.22
Дистрибутив Kylix II