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

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;
Ответить с цитированием