Ver Mensaje Individual
  #2  
Antiguo 06-02-2013
cecam cecam is offline
Miembro
 
Registrado: may 2006
Ubicación: Girona
Posts: 47
Reputación: 0
cecam Va por buen camino
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!
Responder Con Cita