Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.07.22;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.005 c
1-70792
ize
2002-07-10 11:08
2002.07.22
Выравнивание текста в ячейках StringGrid


7-70936
_TOLTEC
2002-04-25 15:10
2002.07.22
MacAddress


7-70934
Atoll
2002-04-24 17:21
2002.07.22
Как отловить нажатие клавиши


3-70598
Ptr
2002-06-29 12:22
2002.07.22
SQLConnection1.Commit(TD) не работает (у меня)


1-70695
Дмитрий Селищев
2002-07-11 07:00
2002.07.22
Доступ к другому приложению.





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