Форум: "Основная";
Текущий архив: 2003.07.14;
Скачать: [xml.tar.bz2];
ВнизВызов прцедур во время события OnCreate() Найти похожие ветки
← →
Manfred (2003-07-02 11:24) [0]Здравствуйте, уважаемые мастера. Столкнулся с таким неприятным явлением:
Пытаюсь открыть таблицу базы данных в событии OnCreate формы, но получаю ошибку "Access vialotion". Решил проверить, в чём же дело. Кинул на форму кнопочку, прописал в ней открытие таблицы, надавил - таблица открылась. Это глюк или я чего-то не знаю?
С уважением, Manfred.
← →
clickmaker (2003-07-02 11:27) [1]Лучший способ узнать - запустить под отладчиком
← →
Skier (2003-07-02 11:27) [2]>Manfred © (02.07.03 11:24)
Перенеси код из OnCreate в OnShow. Не поможет ?
← →
Юрий Федоров (2003-07-02 11:28) [3]Скорее всего какие-то объекты еще не созданы.
Таблица в дата-модуле небось ?
← →
Manfred (2003-07-02 11:34) [4]
> Юрий Федоров
Да, в дата-модуле. Дума, что преждевременно вызывать открытие таблицы в OnCreate формы. Не так ли?
> Skier
Да, так работает, но хотелось бы всё-таки узнать, в чём дело, дабы опять не наступить на те же грабли.
← →
Manfred (2003-07-02 11:35) [5]
> clickmaker
Запускал, но, признаться, так и не понял, в чём же дело :-(
← →
Skier (2003-07-02 11:37) [6]>Manfred © (02.07.03 11:34)
Да ты просто пытаешься отрисовывать на окне (форме), которое
ещё не создано, можно поступить так :
-перекрыть метод формы CreateWnd
-и после inherited написать тот код, который был у тебя в
OnCreate
← →
clickmaker (2003-07-02 11:38) [7]Приведи код OnCreate и код открытия таблицы
← →
Юрий Федоров (2003-07-02 11:41) [8]Видимо дата-модуль еще не создан, он создается в файле проекта после главной формы, а событие OnCreate происходит до его создания.
Просто убери создание дата-модуля из файла проекта, и поставь его в OnCreate формы первой строкой. Думаю так.
← →
Manfred (2003-07-02 11:44) [9]
> clickmaker
procedure TForm1.FormCreate(Sender: TObject);
begin
dmDataModule.tblSites.Active:=True;
end;
> Skier
А нельзя ли попроще? Я ведь просто хочу, чтобы у меня открывалась таблица при запуске приложения, а в WinAPI нет желания залезать - по своей невнимательности только напложу ошибок.
← →
Manfred (2003-07-02 11:47) [10]
> Юрий Федоров
Неплохая идея, следует попробовать. О результатах доложу :-)
← →
Skier (2003-07-02 11:47) [11]>Manfred © (02.07.03 11:44)
> а в WinAPI нет желания залезать - по своей невнимательности
> только напложу ошибок.
В данном случае это не API, а скорее ООП...
← →
Семен Сорокин (2003-07-02 11:47) [12]2Manfred
слушай Юрий Федоров © (02.07.03 11:41) - верно говорит
← →
Юрий Федоров (2003-07-02 11:52) [13]проверить просто. Ставишь точку останова на строке
dmDataModule.tblSites.Active:=True;
Если то что я говорю верно, то dmDataModule в этом месте равен nil
← →
Manfred (2003-07-02 11:52) [14]
> Семен Сорокин
> Юрий Федоров
Я знал, что здесь живут МАСТЕРА!!! Как вы поняли, всё получилось. Спасибо огромное!
← →
Manfred (2003-07-02 11:54) [15]Блин, а главное - всё так тривиально, как я сам не додумался?!!!
← →
panov (2003-07-02 12:48) [16]TDataModule можно оставить в списке AutoCreate проекта, а вот открытие таблиц, находящихся в TDataModule, выполнять в TDataModule.OnCreate.
← →
mrcat (2003-07-02 13:36) [17]TDataModule в AutoCreate должен создаваться до главной формы:
Application.Initialize;
Application.CreateForm(TdMBase, dmBase); Application.CreateForm(TMainForm, MainForm);
Application.Run;
← →
Семен Сорокин (2003-07-02 14:02) [18]mrcat © (02.07.03 13:36)
а ничего, что тогда dmBase будет главной формой? :)
← →
mrcat (2003-07-02 14:06) [19]Семен Сорокин © (02.07.03 14:02)
с чего TDataModule быть главной формой? классы-то разные :)
← →
Семен Сорокин (2003-07-02 14:39) [20]mrcat © (02.07.03 14:06)
согласен, торможу :)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.07.14;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.009 c