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

Вниз

Вызов прцедур во время события 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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.012 c
1-44735
Erik
2003-07-01 13:39
2003.07.14
Неосвобождается com сервер.


3-44609
TGrey
2003-06-21 13:27
2003.07.14
Распространение приложения


14-44827
vajo
2003-06-26 10:22
2003.07.14
boot.ini


4-44954
maxik
2003-05-13 11:35
2003.07.14
taskbar


1-44693
Marco
2003-06-29 19:14
2003.07.14
Как запустить приложение из выполняющейся программы