Freeman меня поддержит
Смотри как это правильно делается:
В дочерних формах пишешь:
Код:
public
{ Public declarations }
function Execute(myDataSet: TDataSet): Boolean; // (в случае, если тебе надо передать только результат конкретного запроса)
Код:
public
{ Public declarations }
function Execute(myConnection: TADOConnection): Boolean; // (в случае, если необходимо передать весь Connection)
Далее обработчик этой функции:
Код:
function TFormReceiptAdd.Execute(myDataSet: TDataSet): Boolean;
begin
dsMyDataSet.DataSet := myDataSet; // ds - DataSource на дочерней форме, в случае если необходимо показывать данные из DataSet
Result := ShowModal = mrOK; // показываем форму модально
if Result then // если форма закрылась по нажатию кнопки в которой стоит ModalResult = mrOK
какие-то действия
else // если форму закрыли/нажали кнопку где ModalResult <> mrOK
какие-то действия
end;
Вызов функции (показ формы) из главной:
Код:
procedure TFormMain.dxBarReceiptsAddClick(Sender: TObject);
begin
with TFormReceiptAdd.Create(Application) do // (создаём динамически форму)
try
aReceipts.Append; //открываем таблицу для записи
Execute(aReceipts); // отправляем её в дочернюю форму
finally
Free; // вычищаем память
end;
end;