Уважаемые авторы вопросов! Большая просьба сообщить о результатах решения проблемы на этой странице. Иначе, следящие за обсуждением, возможно имеющие аналогичные проблемы, не получают ясного представления об их решении. А авторы ответов не получают обратной связи. Что можно расценивать, как проявление неуважения к отвечающим от автора вопроса.
16-12-2018 15:41 | Сообщение от автора вопроса
Коллега
просто гигантское вам СПАСИБО
я получил нужный функционал !!!
то что нужно !
//—————————————————————————————————————————————-
procedure Tform_Orders.fdsOrdersBeforeScroll(DataSet: TDataSet);
begin
if (fdsPayments.State in [dsEdit, dsInsert])
then begin
MessageDlg('Спочатку потрібно завершити редагування !', mtWarning, [mbOK], 0);
abort;
end;
end;
Попробуйте обработать событие TpFIBDataSet.BeforeScroll. Для примера, если tbTest2_det подчинённая таблица для tbTest1_mst, то:
procedure TdmMain.tbTest1_mstBeforeScroll(DataSet: TDataSet);
begin
if (tbTest2_det.State in [dsEdit, dsInsert])
then begin
if (MessageDlg('Данные в режиме редактирования.'+#$D#$A+
'отменить ввод?', mtConfirmation, [mbNo, mbOk], 0) = mrOk)
then tbTest2_det.Cancel //отменяем введённые данные
//else tbTest2_det.Post; //подтверждаем данные и выполняем scroll
else Abort; //или отменяем scroll, оставаяь в dsEdit
end;
end;
11-12-2018 23:00 | Вопрос к автору: запрос дополнительной информации
>>>как сделал/обошел я: при событиях insert/update в детальной таблице делал дисейбл мастера
Флаг dgCancelOnExit, по умолчанию включён в DBGridEh или DBGrid.Options, именно для того, что бы ненавязчиво (из уст пользователей) напомнить разработчику о том, что неплохо разработать хоть какую-то логику работы с "данными формы". Другими словами, задуматься как работает пользователь, а не только как хранятся данные в БД. И дать повод разработчику поразмышлять над тем, что будет, если пользователь: "не полностью заполнит поля" в компоненте или форме, перейдёт на другой компонент или форму не закончив редактирование, просто закроет программку не закончив редактирование данных.
>>> кликает на мастер таблице ... детальный датасет переоткривается, все изменения теряются
У TDBGridEh, так же как и у TDBGrid, есть свойство Options, а там флаг CanсelOnExit. Кроме того, у них же, есть событие onExit.
Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter. Функция может не работать в некоторых версиях броузеров.