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

Вниз

Проблема в 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.024 c
1-1083304692
able
2004-04-30 09:58
2004.05.16
Транслирование экрана


11-1069169938
S!R!X
2003-11-18 18:38
2004.05.16
Проблемы с модальной формой


1-1083420546
Vin_Ghost
2004-05-01 18:09
2004.05.16
Создание окна на весь экран.


8-1077019218
Qwer
2004-02-17 15:00
2004.05.16
Слои


14-1082552866
Сергей Волкович
2004-04-21 17:07
2004.05.16
Ищем сотрудников