Форум: "Базы";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];
ВнизПроблема в DataModule Найти похожие ветки
← →
alle (2004-04-21 22:05) [0]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.
Пожалуйста помогите!
← →
Vlad © (2004-04-21 22:09) [1]Что такое Table1.Button1 ???
Что вобще должен делать этот код ?
← →
alle (2004-04-21 22:25) [2]При удалении из базы данных всей информации кнопка "Удалить" становится неактивной
← →
alle (2004-04-21 22:26) [3]Подробнее!
Помогите чайнику!
Пишу следующий код:
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.
Причем в аналогичном коде выше, такой ошибки не возникает?!
← →
ЮЮ © (2004-04-22 02:44) [4]>Процедура при выполении дает ошибку
Я, честно говоря, даже не знаю, как это откомпилмровалось, ведь в DataModule1 есть Table1, очевидно типа TTable, у которого, по крайней мере до D6, никаких Button1.в помине не было.
Есди же Table1.Button1 предполагает кнопку на форме Table1, то та может быть ещё и не создана, т.к. DataModule обычно создают до создания форм, поэтому в коде слкдует учитывать этот момент:
if FrmTable1 <> nil then
FrmTable1.Button1.Enabled := not Table1.IsEmpty
← →
Vlad © (2004-04-22 09:16) [5]Подозреваю нужно просто убрать ссылку на DataModule в методе самого DataModule
т.е. просто
if Table1.IsEmpty then ....
Но вот что такое Table1.Button1, извините, до сих пор не понял.
← →
alle (2004-04-22 11:45) [6]Извините!!! Опечатка!!!
Естественно не Table1.Button1..., а Form1.Button1.Enabled:=false.
← →
alle (2004-04-22 12:23) [7]Убрал ссылку на DataModule - не помогло. Форма и кнопки созданы. В uses модуля данных ссылка на Form1 есть. Но при компиляции Form1 имеет значение nil
← →
Vlad © (2004-04-22 12:30) [8]
> Но при компиляции Form1 имеет значение nil
Не при компиляции, а при исполнении данного кода, наверное.
Теперь осталось разобраться почему же она nil, причина ошибки именно в этом.
Вариантов м.б. много, например форма м.б. действительно еще не создана в данный момент, или форма может быть создана анонимно, т.е. напр. with TForm1.Create(Application) do, в обоих случаях переменая Form1 будет nil
← →
alle (2004-04-22 12:33) [9]Причину я понял. Что делать?
← →
alle (2004-04-22 12:40) [10]Если имеется в виду в исходнике Application.CreateForm (TForm1, Form1), то это есть
← →
Vlad © (2004-04-22 12:45) [11]
> Что делать?
Искать почему form1=nil :-)
Причин м.б. много.
← →
clickmaker © (2004-04-22 12:50) [12]
> alle (22.04.04 12:40) [10]
В файле dpr какой порядок создания форм? DataModule1 ессессно д.б. после Form1
← →
Johnmen © (2004-04-22 12:59) [13]>clickmaker © (22.04.04 12:50) [12]
>DataModule1 ессессно д.б. после Form1
Вообще говоря наоборот. Но для автора именно так... :)
>alle
То, что ты хочешь, реализуется СОВСЕМ не так.
См. TActionList, TAction и его обработчик OnUpdate.
← →
alle (2004-04-22 13:29) [14]Спасибочки огромное! Изменил порядок создания форм! Все OK
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.038 c