![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Обращение к БД при активизации формы [D7]
Alex7 © (2005-12-30 08:38:00)Уважаемые мастера! С наступающим Вас!
Помогите, пожалуйста, решить следующую проблему:
В обработчике активизации формы мне нужно
обратиться к одному из полей БД.
Например:
procedure TForm1.FormActivate(Sender: TObject);
begin
r := Table1.Field[0].Text
end;
Компилятор выдает "Access violation".
Т.е, наверное обращаться во время активизации
нельзя. А от значени "r" зависит "Visible" соответствующего
компонента этой формы. Где выход?. Спасибо.
evvcom (2005-12-30 09:21:00) [21]ну да. Я это к части цитаты про OnCreate. Потому как в OnCreate, возможно и очень вероятно, что DataSet.Active = False. Если, конечно, автор еще в дизайне не пооткрывал все наборы сразу. :)
Johnmen (2005-12-30 09:19:00) [22]А если ещё и указатель не будет двигаться в НД, то и вообще ничего этого писАть не надо...:)
Digitman (2005-12-30 09:17:00) [23]
> evvcom © (30.12.05 09:14) [2]
> лучше в DataSet.AfterOpen
можно и там, но при условии что значение поля не меняется на всём протяжении работы программы
evvcom (2005-12-30 09:14:00) [24]
> к примеру, в обработчике OnCreate
лучше в DataSet.AfterOpen
Digitman (2005-12-30 08:53:00) [25]
> Компилятор выдает "Access violation".
AV выдает не компилятор, а сама работающая программа.. компилятор тут совершенно ни при чем
скорее всего, объект Table1 в этот момент не существует
> Где выход?
а почему именно OnActivate ?
Это событие будет возникать всякий раз при получении формой фокуса..
А в твоем случае, наверно, достаточно будет единожды прочитать значение из поля таблицы .. к примеру, в обработчике OnCreate
Если же предполагается, что значение этого поля может изменяться в ходе работы программы, то самый простой выход - поместить код считывания значения поля в событие OnUpdate объекта TContainedAction в составе компонента TActionList, брошенного на форму в дизайн-тайм