Показать сообщение отдельно
  #8  
Старый 12.01.2016, 22:58
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,020
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну и в чем проблема?
Сделать вторую форму? Или прицепить вторую форму к текущей строке?

Form1 (главная, кнопка Добавить)
Код:
procedure TForm1.btAddRecordClick(Sender : TObject);
begin
  ADOQuery1.Add;
  With TForm2.Create(Application) Do
    Begin
      If Execute(DataSource1) 
        Then ADOQuery1.Post
        Else ADOQuery1.Cancel;
      Free;
    End;
end;

Form2. Кладем на форму DB-aware компоненты (TDBEdit и подобные), настраиваем в них имена полей. Также кладем 2 кнопки, у одной устанавливаем ModalResult в mrOK, у второй - в mrCancel. Добавляем такую функцию:
Код:
type
  TForm2 = class(TForm)
  ...
  public
    function Execute(ADataSource : TDataSource) : Boolean;
  end;

...

function TForm2.Execute(ADataSource : TDataSource) : Boolean;
begin
   // Подключаем контролы к источнику данных
   DBEdit1.DataSource := ADataSource;
   DBEdit2.DataSource := ADataSource;
   DBMemo1.DataSource := ADataSource;
   // И т.д. Можно написать автоматически обход компонентов,
   // но это пока для тебя "высший пилотаж"

   Result := ShowMOdal = mrOK;
end;

PS. Form2 в таком варианте надо "выкинуть" из списка автоматически создаваемых форм, т.к. она создается динамически. Выкидывать через Project | Options -> Forms или просто ее создание удалить в файле проекта (*.dpr)
Ответить с цитированием