Complementando un poco y quiza te ayude, yo hago algo similar a esto
tengo una variable que forma un bucle
p_opcion := 0;
Código Delphi
[-] p_opcion := 0;
While p_opcion = 0 do
Begin
CdsDetalle.Append
frmIngresoComprobantesVariosD := TfrmIngresoComprobantesVariosD.Create(nil);
frmIngresoComprobantesVariosD.FormStyle := fsNormal;
frmIngresoComprobantesVariosD.Visible := False;
frmIngresoComprobantesVariosD.ShowModal;
End;
y en el boton de cancelar del formulario donde se agregan los datos coloco esto
Código Delphi
[-]procedure TfrmIngresoComprobantesVariosD.BtnCancelClick(Sender: TObject);
begin
frmIngresoComprobantesVarios.p_opcion := -1;
frmIngresoComprobantesVarios.CdsDetalle.Cancel;
Close;
end;
de esa manera se sale del bucle