Bonjour,

J'évoquais il y a quelques temps un problème de boite de dialogue qui devrait être modale sous Windows et qui finalement ne l'est pas.
Le messageDlg ne fait pas vraiment son boulot de même que le ShowModal d'un TForm si on lui passe en paramètre une fonction de callback.

Voici la solution qui semble mieux fonctionner :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
function Confirm(Question: string): Boolean;
var
  R: Boolean;
begin
  TDialogService.PreferredMode := TDialogService.TPreferredMode.Sync;
  TDialogService.MessageDialog(Question, TMsgDlgType.mtConfirmation, [TMsgDlgBtn.mbYes, TMsgDlgBtn.mbNo], TMsgDlgBtn.mbNo, 0,
  procedure(const AResult: TModalResult)
  begin
    case AResult of
      mrYes: R := True;
      mrNo : R := False
    else
      R := False;
    end;
  end);
 Result := R;
end;