![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
![]() Вызов метода Post
Код:
function TFormNewGTD.Execute(GTDDataSet: TDataSet): boolean; begin dsNewGTD.DataSet := GTDDataSet; dsNewGTD.DataSet.Insert; Result := ShowModal = mrOK; if Result then dsNewGTD.DataSet.Post else dsNewGTD.DataSet.Cancel; end; Его обработка: Код:
procedure TFormMain.GTDBeforePost(DataSet: TDataSet); begin if DataSet.FieldByName('Registration Number').IsNull or DataSet.FieldByName('Date').IsNull then begin MessageDlg('Для создания ГТД оба поля должны быть заполнены.', mtError, [mbOk], 0); DataSet.Cancel; end; end; Если ввести в пустую таблицу "пустую строку" (т.е. не заполнить поля) на строчке DataSet.Cancel; возникает exception o.O будто я ничего не отменял и не "обрабатывал". Куда копать? В целом предполагал вместо DataSet.Cancel делать Abort, но тогда становится вообще непонятно, как открыть эту же форму для исправления ошибок. Номера ГТД очень длинные, и меня проклянут ![]() Тут где-то нужен цикл для ShowModal... P.S. Ко всему прочему Abort это утечка памяти, ибо до метода Free (для модальной формы) компилятор просто не доберётся. Последний раз редактировалось Uniq!, 26.07.2014 в 23:58. |
#2
|
||||
|
||||
![]() Цитата:
Не стоит путать форумы с богадельнями. © Bargest |
#3
|
||||
|
||||
![]() Цитата:
Но перед этим же я проверил и указал ему, что если параметры пустые-делай Cancel; o.O Судя по офф. документации от Embarcadero, нужно использовать Abort; внутри функции BeforePost; Последний раз редактировалось Uniq!, 27.07.2014 в 15:47. |