Показать сообщение отдельно
  #23  
Старый 14.10.2013, 16:06
Аватар для Uniq!
Uniq! Uniq! вне форума
Местный
 
Регистрация: 29.09.2010
Сообщения: 539
Версия Delphi: Delphi XE3
Репутация: 374
По умолчанию

Очень хочется разобраться до конца.
На главной форме:
Код:
procedure TfMain.barbutNewTicketClick(Sender: TObject);
begin
  Tickets.Insert;
end;
Вызывать Диалог, в котором будут редактироваться данные нужно в AfterInsert?
Код:
procedure TfMain.TicketsAfterInsert(DataSet: TDataSet);
begin
  fNewTicket.ShowModal;
end;
Открывается форма. На ней cxGrid в котором отображаются данные из подчинённой таблицы и куча DB компонент, которые связанны с fMain.Tickets (этого тоже не должно быть?). Три кнопки "Добавить Сохранить Отмена", которые относятся к Данным из Detail-таблицы (для неё дополнительный диалог я реализовывать не стал... не за чем)
ADOTable который содержит в себе информацию из Detail таблицы я перенёс на форму диалога. (по-моему это неправильно) Но если оставить её на FormMain то получится, что мне нужно будет вызывать Insert Post Cancel для этой таблицы из диалогового окна. (Как правильно?)

Далее как вы и посоветовали: Cancel & Ok;
OK:
Код:
procedure TfNewTicket.butSaveClick(Sender: TObject);
begin
  fMain.Tickets.Post;
end;
Опять управление из Диалоговой формы. Далее идёт BeforePost, в которой куча всевозможных проверок данных и несколько машинных пересчётов.
Далее AfterPost
Код:
procedure TfMain.TicketsAfterPost(DataSet: TDataSet);
begin
  Tickets.UpdateBatch;
  Items.First;
  while not Items.Eof do
  begin
    Items.Edit;
    Items.FieldByName('IDTicket').AsInteger := Tickets.FieldByName('ID')
      .AsInteger;
    Items.Next;
  end;
  Items.UpdateBatch;
end;

Я слабо, очень слабо представляю как избавиться от глобальной переменной fMain в коде из Формы-Диалога.

Про индекс F, я помню Просто важнее сейчас исправить основные ошибки.
Ответить с цитированием