![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема в DataModule [D7, Paradox]
alle © (2004-04-21 22:05:00)procedure TDataModule1.Source1DataChange(Sender: TObject; Field: TField);
begin
if DataModule1.Table1.IsEmpty then
Table1.Button1.Enabled:=false
Процедура при выполении дает ошибку: Access violation at adress ... in module... Resd adress FFFFFFF.
Пожалуйста помогите!
alle (2004-04-22 13:29:00) [1]Спасибочки огромное! Изменил порядок создания форм! Все OK
Johnmen (2004-04-22 12:59:00) [2]>clickmaker © (22.04.04 12:50) [12]
>DataModule1 ессессно д.б. после Form1
Вообще говоря наоборот. Но для автора именно так... :)
>alle
То, что ты хочешь, реализуется СОВСЕМ не так.
См. TActionList, TAction и его обработчик OnUpdate.
clickmaker (2004-04-22 12:50:00) [3]
> alle (22.04.04 12:40) [10]
В файле dpr какой порядок создания форм? DataModule1 ессессно д.б. после Form1
Vlad (2004-04-22 12:45:00) [4]
> Что делать?
Искать почему form1=nil :-)
Причин м.б. много.
alle (2004-04-22 12:40:00) [5]Если имеется в виду в исходнике Application.CreateForm (TForm1, Form1), то это есть
alle (2004-04-22 12:33:00) [6]Причину я понял. Что делать?
Vlad (2004-04-22 12:30:00) [7]
> Но при компиляции Form1 имеет значение nil
Не при компиляции, а при исполнении данного кода, наверное.
Теперь осталось разобраться почему же она nil, причина ошибки именно в этом.
Вариантов м.б. много, например форма м.б. действительно еще не создана в данный момент, или форма может быть создана анонимно, т.е. напр. with TForm1.Create(Application) do, в обоих случаях переменая Form1 будет nil
alle (2004-04-22 12:23:00) [8]Убрал ссылку на DataModule - не помогло. Форма и кнопки созданы. В uses модуля данных ссылка на Form1 есть. Но при компиляции Form1 имеет значение nil
alle (2004-04-22 11:45:00) [9]Извините!!! Опечатка!!!
Естественно не Table1.Button1..., а Form1.Button1.Enabled:=false.
Vlad (2004-04-22 09:16:00) [10]Подозреваю нужно просто убрать ссылку на DataModule в методе самого DataModule
т.е. просто
if Table1.IsEmpty then ....
Но вот что такое Table1.Button1, извините, до сих пор не понял.
ЮЮ (2004-04-22 02:44:00) [11]>Процедура при выполении дает ошибку
Я, честно говоря, даже не знаю, как это откомпилмровалось, ведь в DataModule1 есть Table1, очевидно типа TTable, у которого, по крайней мере до D6, никаких Button1.в помине не было.
Есди же Table1.Button1 предполагает кнопку на форме Table1, то та может быть ещё и не создана, т.к. DataModule обычно создают до создания форм, поэтому в коде слкдует учитывать этот момент:
if FrmTable1 <> nil then
FrmTable1.Button1.Enabled := not Table1.IsEmpty
alle (2004-04-21 22:26:00) [12]Подробнее!
Помогите чайнику!
Пишу следующий код:
procedure TDataModule1.Source1DataChange(Sender: TObject; Field: TField);
begin
if DataModule1.Table1.IsEmpty then
Table1.Button1.Enabled:=false;
else
Table1.Button1.Enabled:=true;
end;
При компиляции программа выдает ошибку:
Exception EAccessViolation in module 123.exe at 000D97DA.
Access violation at adress 004D97DA in module 123.exe. Read of adress FFFFFFFF.
Причем в аналогичном коде выше, такой ошибки не возникает?!
alle (2004-04-21 22:25:00) [13]При удалении из базы данных всей информации кнопка "Удалить" становится неактивной
Vlad (2004-04-21 22:09:00) [14]Что такое Table1.Button1 ???
Что вобще должен делать этот код ?