Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.08.25;
Скачать: [xml.tar.bz2];

Вниз

Обработка AfterScroll   Найти похожие ветки 

 
РВА   (2003-07-30 15:57) [0]

Добрый день уважаемый мастера!
Возникла проблема по обработке AfterScroll таблицы.
На форме GridEH c таблицей и часть полей этой же таблицы расположены на отдельной панели в этой же форме. При перемещении по таблице эти поля либо показываются либо нет. Эти действия привязаны к AfterScroll таблицы. Других действий (в процедуре показа и сокрытия) нет. По окончанию форма закрывается без вопросов, а когда закрываю приложение возникает искл ситуация Acses Violation по адресу и т.д. Если закрываю эту процедуру кометариями все проходит нормально.
Пробовал в Form.Close прописать AfterScrol := nil и Table.Active := False - глюк вылазит через раз – то нормально, то появляется сообщение.
Не пойму в чем ошибка ... Подскажите пожалуйста , заранее благодарен.


 
sniknik   (2003-07-30 16:05) [1]

так понимаю, классическая ошибка 17-й строки. (причем считать надо от begin-а процедуры обработчика AfterScroll :о)))


 
Соловьев   (2003-07-30 16:10) [2]


> sniknik © (30.07.03 16:05)

:)))


> По окончанию форма закрывается без вопросов, а когда закрываю
> приложение возникает искл ситуация Acses Violation по адресу
> и т

что в AfterScroll? код?


 
РВА   (2003-07-30 16:16) [3]

procedure TNaktek.ScrlTable;
var Tp: Integer;
begin
if not Gnak.Eof then
Begin
Tp := GnakTip.AsInteger;
case Tp of
1: Begin
RxLabel1.Visible := False;
RxLabel3.Visible := False;
RxLabel4.Visible := False;
DBEditEh1.Visible := False;
DBEditEh2.Visible := False;
DBEditEh3.Visible := False;
DBDateTimeEditEh1.Visible := False;
RxLabel2.Visible := True;
DBLookupComboBoxEh2.Visible := False;
DBLookupComboBoxEh1.Visible := True;
end;

2: Begin
RxLabel1.Visible := False;
RxLabel2.Visible := False;
RxLabel3.Visible := True;
RxLabel4.Visible := True;
DBEditEh1.Visible := True;
DBEditEh2.Visible := True;
DBEditEh3.Visible := True;
DBDateTimeEditEh1.Visible := True;
DBLookupComboBoxEh2.Visible := False;
DBLookupComboBoxEh1.Visible := True;
end;
3: Begin
RxLabel1.Visible := True;
RxLabel2.Visible := False;
RxLabel3.Visible := False;
RxLabel4.Visible := False;
DBEditEh1.Visible := False;
DBEditEh2.Visible := False;
DBEditEh3.Visible := False;
DBDateTimeEditEh1.Visible := False;
DBLookupComboBoxEh2.Visible := True;
DBLookupComboBoxEh1.Visible := False;
end;

4: Begin
RxLabel1.Visible := False;
RxLabel2.Visible := False;
RxLabel3.Visible := False;
RxLabel4.Visible := False;
DBEditEh1.Visible := False;
DBEditEh2.Visible := False;
DBEditEh3.Visible := False;
DBDateTimeEditEh1.Visible := False;
DBLookupComboBoxEh2.Visible := False;
DBLookupComboBoxEh1.Visible := False;
end;
else Begin
RxLabel1.Visible := False;
RxLabel2.Visible := False;
RxLabel3.Visible := False;
RxLabel4.Visible := False;
DBEditEh1.Visible := False;
DBEditEh2.Visible := False;
DBEditEh3.Visible := False;
DBDateTimeEditEh1.Visible := False;
DBLookupComboBoxEh2.Visible := False;
DBLookupComboBoxEh1.Visible := False;
Beep;
End;
End;
End;
end;


 
stud   (2003-07-30 16:23) [4]

если через раз - попробуй в обработчик onclosequery закрывать таблицу


 
ЮЮ   (2003-07-31 03:18) [5]

В AfterScroll одного DataSet-а вызывается процедура, использующая два: Gnak и GnakTip, один из которых может быть уже разрушен при уничтожении формы


 
Соловьев   (2003-07-31 10:08) [6]


> РВА (30.07.03 16:16)
> procedure TNaktek.ScrlTable;

это же не AfterScroll !!!


> not Gnak.Eof then
> Begin
> Tp := GnakTip.AsInteger;


utl Gnak и GnakTip ? в DataModule?


 
РВА   (2003-07-31 14:26) [7]

По AfterScrool запускается процедура ScrTable код которой приведен. В зависимости от поля Tip табл. Gnak выполняется действие (1,2, ..)Поле Tip - Integer


 
sniknik   (2003-07-31 16:17) [8]

гдето чтото у тебя уничтожается, обьект какойто, а обращение к нему еще есть. именно в этом обработчике, суда по свему.
к примеру, сделай такой код
var Tp: Integer;
begin
if not DMod.Gnak.Eof then
( Tp) гдето чтото у тебя уничтожается, обьект какойто, а обращение к нему еще есть. именно в этом обработчике, суда по свему.
к примеру, сделай такой код
var Tp: Integer;
begin
if not DMod.Gnak.Eof then
Tp := DMod.GnakTip.AsInteger;
Label1.Caption:= IntToStr(Tp);
end;
в onCreate главной формы, пока DMod еще не создан (DMod - модуль данных в котором таблицы типа должны лежать)
получиш ту же ошибку, но тут до создания а у тебя после уничтожения.
проверь что и в каком порядке уничтожается
Table.Active := False правильное решение, в onFormClose первой командой, AfterScrol := nil не обязательно.
но еще случай к примеру если форма не главная да еще и mdiChild (к примеру) то ты уверен что по закрытию главной произойдет сначала закрытие чилда (событие, чтобы сработало Table.Active := False)?
или он будет уничтожать обьекты, а событие еще отрабатывает?
тогда еще и на onFormClose главной формы надо Table.Active := False; ставить. первой же командой.

в общем надо по программе смотреть. найти что именно ошибку дает. очень может лог помоч. после каждой команды в событии пиши в файл "я команда хххх отработала .время."(open-write-close), тогда после получения ошибки смотриш в лог и последней записаной командой будет отработавшая нормально, следующая после нее в процедуре сбоит... иши почему.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.08.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.036 c
1-81669
Pindos
2003-08-10 23:54
2003.08.25
TIcon из EXE плохо сохраняется!


3-81553
Berezne
2003-07-30 18:03
2003.08.25
Обновление БД


8-81848
Alexandr_A
2003-04-26 01:21
2003.08.25
OpenGL - как сохранить в файл картинку? Timage глючит


4-82004
Mortal
2003-06-22 18:10
2003.08.25
Отловить PopUp


14-81898
race1
2003-08-07 15:39
2003.08.25
ntfs vs. boot floppy





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский