Ver Mensaje Individual
  #8  
Antiguo 13-01-2021
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Reputación: 20
movorack Va camino a la famamovorack Va camino a la fama
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;
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita