Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   formulario de confirmacion (https://www.clubdelphi.com/foros/showthread.php?t=93824)

oscarac 20-03-2019 21:59:39

formulario de confirmacion
 
buenas tardes

estoy haciendo un proceso donde se requiere una confirmacion para anular un documento, entonces cuando doy click en el boton anular hago una pregunta

- desea anular el comprobante? y los clasicos botones de si y no

pero quiero agregarle un formulario donde el usuario tenga que digitar la palabra 'ANULAR' para que recien se pueda anular dicha operacion

ya tengo el formulario, pero no se como hacer la pregunta

pseudo codigo

- desea anular el comprobante? and (formularioanular) devolveria true si es que el usuario digito anular en el form


no se si logro hacerme entender
-

cloayza 20-03-2019 22:33:34

Le propongo esta solución...

1) Al seleccionar opción de anular, desplegar formulario solicitando confirmación para anular
2) Debe ingresar palabra de seguridad
3) Se habilita la opción de confirmar
4) Confirma o Cancela?



Saludos cordiales

oscarac 21-03-2019 15:35:59

eso es exactamente lo que tengo planeado, pero no sabia como hacer para que un formulario devuelta true o false

oscarac 21-03-2019 17:45:09

esto en lo que tengo en el formulario "ANULAR"

Código Delphi [-]
procedure TfrmAnular.btnAnularClick(Sender: TObject);
begin
  if edtAnular.Text = 'ANULAR' then
      ModalResult := mrOk
  else
      ModalResult := mrCancel;

  _Alert(IntToStr(ModalResult) ,mtError,[mbOK],['Aceptar']);
  Close;
end;

procedure TfrmAnular.btnCancelarClick(Sender: TObject);
begin
  ModalResult := mrCancel;
  Close;
end;

procedure TfrmAnular.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
end;

procedure TfrmAnular.FormDestroy(Sender: TObject);
begin
  frmAnular := nil;
end;

esto tengo en la libreria donde invoco al formulario

Código Delphi [-]
  
function _Anular :Boolean;
begin
frmAnular := TfrmAnular.Create(nil);
  if frmAnular.ShowModal = mrOk then
    Result := True
  Else
    Result := False;

  _Alert(IntToStr(frmAnular.ShowModal) ,mtError,[mbOK],['Aceptar']);
end;


el mensaje (_Alert) que aparece dentro del formulario es 1 es decir OK
pero cuando sale del form y quiero ver el resultado del frmanular.showmodal, es 2

no entiendo pq cambia de valor.

cloayza 21-03-2019 18:42:15

Estimado Oscarac le propongo lo siguiente...

Código Delphi [-]
...
public
    { Public declarations }
      class function Execute():Boolean;
  end;

...
class function TfrmAnular.Execute():Boolean;
begin
     with TfrmAnular.Create(nil) do
     begin
          btnAnular.Enabled:=false;
          btnAnular.ModalResult:=mrOk;
          btnCancelar.ModalResult:=mrCancel;

          Showmodal;

          Result:=(Modalresult=mrOk);

          Free;
     end;
end;

procedure TfrmAnular.Edit1Change(Sender: TObject);
begin
     btnAnular.Enabled:=TEdit(Sender).Text='ANULAR';
end;

Código Delphi [-]
function _Anular :Boolean;
begin
        Result :=TfrmAnular.Execute();
        if result then
           _Alert('Anulado' ,mtError,[mbOK],['Aceptar'])
       else 
           _Alert('Cancelado' ,mtError,[mbOK],['Aceptar'])
end;

Saludos cordiales

oscarac 21-03-2019 23:03:59

funcionó muy bien
gracias


La franja horaria es GMT +2. Ahora son las 02:22:32.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi