Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема в 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 ???
Что вобще должен делать этот код ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо