Я поймал волну. Осталось совсем чуть-чуть. Вопрос:
Как реализовать вызов из диалога другого диалога? Ведь в той же 1c можно вызвать справочник товаров или клиентов, для заполнения соответствующих полей основного документа? Получается Основная форма -> Диалог оформления Документа -> Диалог выбора клиента (или товаров, или ещё Бог знает чего) Это ж как нужно пробрасывать DataSet'ы с главной формы?)
И отклоняясь от темы. Насколько адекватно создавать одинаковые ADOTable на разных формах с одной и той же Таблицей внутри? Или ADOQuery с одним и тем же запросом. Вообще у меня сложилось впечатление, что ADOTable =(тождественно) ADOQuery(Select * from TableName)
P.S.
Есть одна новость по поводу первичной задачи "добавлять" с возможностью отмены и при этом ещё Master-Detail связь держать.
Если организовать вот такой алгоритм: (при этом LockType оставить ltOptimistic):
Код:
procedure TFormMain.dxBarLargeButton1Click(Sender: TObject);
begin
Connection.BeginTrans;
try
with TFormTicketDialog.Create(Self) do
try
Execute(Tickets)
finally
Free;
end;
Connection.CommitTrans;
except
on E: Exception do
Connection.RollbackTrans;
end;
end;
, то ID этого билета можно получить (заPOSTив билет) ещё до выполнения строки
, т.е. с возможностью отмены.
Только тогда на mrOK нужно повесть CommitTrans, а на mrCancel RollbackTrans. Вместо Post и Cancel. Я прав?