Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Delphi para la web (https://www.clubdelphi.com/foros/forumdisplay.php?f=51)
-   -   ShowModal Unigui (https://www.clubdelphi.com/foros/showthread.php?t=82191)

Neeruu 06-02-2013 17:23:32

ShowModal Unigui
 
Hola a todos...

Necesito encontrar la forma de emular el ShowModal en las Unigui...
Se que hay un ejemplo que muestra como abrir mensajes y recuperar un respuesta... pero lo que yo necesito es mostrar un formulario y recuperar la respuesta de ese form cuando se cierra.

Al ejemplo no lo entiendo mucho, capaz si alguien con mas experiencia puede explicarme le encuentre la vuelta para lo que necesito.

Saludos. :)

cecam 06-02-2013 18:39:35

Hoooola!!

Se trata de pasar un evento al form, de forma que, al cerrarse lo ejecute. Por ejemplo un form que no de a escoger "Sí" o "No"
Código:

type
  TModalCallBack = procedure(ModalResult: TModalResult) of object;

  TfrmUGSiNo = class(TUniForm)
    btnSi: TUniBitBtn;
    btnNo: TUniBitBtn;
    procedure si(Sender: TObject);
    procedure no(Sender: TObject);
    procedure UniFormClose(Sender: TObject; var Action: TCloseAction);
  private
  public
    ModalCallBack:TModalCallBack;
  end;

procedure TfrmUGSiNo.UniFormClose(Sender: TObject; var Action: TCloseAction);
begin
  if  Assigned(ModalCallBack)
  then ModalCallBack(ModalResult);
end;

procedure TfrmUGSiNo.si(Sender: TObject);
begin
  ModalResult:=mrYes;
end;

procedure TfrmUGSiNo.no(Sender: TObject);
begin
  ModalResult:=mrNo;
end;

Podrías tener una función similar a esta
Código:

procedure ugSiNo(const texte:string; callBack:TModalCallBack);
var
  f:TfrmUGSiNo;
begin
      f:=TfrmUGSiNo(MainModule.GetFormInstance(TfrmUGSiNo));
      f.ModalCallBack:=callBack;
      f.ShowModal;
end;

Y en tu formulario principal, la llamada sería algo así:
Código:

procedure TMainForm.UniSpeedButton5Click(Sender: TObject);
begin
  ugSiNo('Que escoges?',_sino);
end;

procedure TMainForm._sino(mr:TModalResult);
begin
  if  mr=mrYes
  then MessageDlg('Si', mtInformation, [])
  else
  if  mr=mrNo
  then MessageDlg('No', mtInformation, [])
  else MessageDlg('Cancela', mtInformation, []);
end;

Saludos!


La franja horaria es GMT +2. Ahora son las 04:23:18.

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