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!