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

Вниз

Обработка 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.027 c
3-81591
dimonka
2003-07-29 22:39
2003.08.25
Перемещение данных


14-81904
Nodo
2003-08-02 23:43
2003.08.25
интерфейс в стиле OfficeXP


14-81932
passm
2003-08-07 10:30
2003.08.25
Проблемы при ошибочном коннекте GPRS


3-81558
OlkaGTS
2003-07-30 18:50
2003.08.25
Не открывается таблица FoxPro


3-81529
BlackKing
2003-07-31 11:37
2003.08.25
Jest li TRUNC ili chto-to podobnoje v IB6?