Ver Mensaje Individual
  #9  
Antiguo 13-01-2021
Avatar de pockelsm3
pockelsm3 pockelsm3 is offline
Miembro
 
Registrado: oct 2007
Posts: 65
Reputación: 18
pockelsm3 Va por buen camino
Cita:
Empezado por movorack Ver Mensaje
Hola, pockelsm3!

Cuando haces el llamado de Form.ShowModal, el formulario se muestra, te permite interactuar con este y al finalizar también permite obtener el resultado la ventana Modal.

Las ventanas Modal pueden devolver una respuesta que representa una acción a tomar en tu aplicación. Entre las mas comunes mrOk y mrCancel que por lo general se muestran como botones de Aceptar y Cancelar. La forma más fácil de asignar esa respuesta está en las mismas propiedades del TButton que elegirás para el Aceptar o el Cancelar.

En el siguiente ejemplo, se evaluará que al presionar el botón llame EjecutarAlgo. Si cierra el formulario o presiona cancelar no hace el llamado de EjecutarAlgo

Código Delphi [-]
procedure Form1.Button1Click(Sender: TObject);
begin
  if frmDevSelect.ShowModal = mrOk then
    EjecutarAlgo;
end;

En el siguiente ejemplo, se validan muchas mas acciones

Código Delphi [-]
procedure Form1.Button1Click(Sender: TObject);
begin
  case frmDevSelect.ShowModal of
    mrOk: EjecutarOk;
    mrYes: EjecutarYes;
    mrNo: EjecutarNo;
  end;
end;

Como recomendación, el formulario modal debe crearse y liberarse de inmediato. Recuperando los valores necesarios antes de liberar el formulario.

Código Delphi [-]
procedure TfrmSalesReturn.ebtnFacturaPropertiesButtonClick(Sender: TObject;
  AButtonIndex: Integer);
  var
    frmDevSelect: TfrmDevSelect;
begin
  inherited;
  if DevTableCUSTCODE.Value <> '' then
     begin
       frmDevSelect := TfrmDevSelect.Create(Application);
       try
         frmDevSelect.FiltrarCliente(DevTableCUSTCODE.Value);
         if frmDevSelect.ShowModal = mrOk then
         begin
           //Recuperar los valores desde el formulario modal y realizar las siguientes acciones
         end;
       finally
         frmDevSelect.Free;
       end;
     end
  else ShowMessage('Debe seleccionar un cliente');
end;

gracias movorack y caminante por sus recomendaciones y sugerencias

con este ejemplo mas detallado pude solucionar el incoveniente,

muchas gracias muchachos por su gran ayuda

Última edición por pockelsm3 fecha: 13-01-2021 a las 02:34:08.
Responder Con Cita