Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
3-1082701328
Урмат
2004-04-23 10:22
2004.05.16
Как в ADOTable ограничить добавление записи


4-1080382044
Игорь
2004-03-27 13:07
2004.05.16
Работа с дискетой


14-1082656341
Seldon
2004-04-22 21:52
2004.05.16
MulDiv


1-1083230142
Dysan
2004-04-29 13:15
2004.05.16
как текст перекодировать из ISO в win-1251


7-1080549868
Ivolg
2004-03-29 12:44
2004.05.16
Прехват клавишь: Alt ,Ctrl и Delete





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский