В событии закрытия вкладки TUniTabSheet есть параметр AllowClose.
И как его использовать правильно вместе с функцией MessageDlg(Msg, DlgType, Buttons, CallBack)?
Ведь приложение асинхронное?
Попробуйте:
procedure TMainForm.UniTabSheet2Close(Sender: TObject; var AllowClose: Boolean);
begin
AllowClose := ((Sender as TUniTabSheet).CustomAttribs.Values['allowClose'] = 'true');
if not AllowClose then
MessageDlg('Are you sure you want to close this tab?', mtConfirmation, [mbYes, mbNo],
procedure (AComponent: TComponent; ARes: Integer)
begin
if ARes = mrYes then
begin
(Sender as TUniTabSheet).CustomAttribs.Values['allowClose'] := 'true';