> Short story: the patch is attached, it should help:)

Better take this patch version (spaces, not tabs:).
Michalis
--- common/dialogsx.pas.orig	2016-02-06 15:20:36.000000000 +0100
+++ common/dialogsx.pas	2016-02-06 15:43:30.000000000 +0100
@@ -66,6 +66,36 @@
 end;
 {$ENDIF}
 
+{ Convert our TMsgDlgButtons type to Dialogs.TMsgDlgButtons type
+  in a type-safe manner. Do not assume that memory layout matches between
+  - TMsgDlgButtons and Dialogs.TMsgDlgButtons, or
+  - TMsgDlgBtn and Dialogs.TMsgDlgBtn. 
+}
+function MsgDlgButtonsConvertToStandard(
+  const Buttons: TMsgDlgButtons): Dialogs.TMsgDlgButtons;
+var
+  B: TMsgDlgBtn;
+begin
+  Result := [];
+  for B := Low(B) to High(B) do
+    if B in Buttons then
+      { convert our TMsgDlgBtn to Dialogs.TMsgDlgBtn type }
+      case B of
+        mbYes     : Include(Result, Dialogs.mbYes     );
+        mbNo      : Include(Result, Dialogs.mbNo      );
+        mbOK      : Include(Result, Dialogs.mbOK      );
+        mbCancel  : Include(Result, Dialogs.mbCancel  );
+        mbAbort   : Include(Result, Dialogs.mbAbort   );
+        mbRetry   : Include(Result, Dialogs.mbRetry   );
+        mbIgnore  : Include(Result, Dialogs.mbIgnore  );
+        mbAll     : Include(Result, Dialogs.mbAll     );
+        mbNoToAll : Include(Result, Dialogs.mbNoToAll );
+        mbYesToAll: Include(Result, Dialogs.mbYesToAll);
+        mbHelp    : Include(Result, Dialogs.mbHelp    );
+        else raise Exception.Create('Unsupported TMsgDlgBtn value');
+      end;
+end;
+
 function MsgDlg(const Msg: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; HelpCtx: Longint): Word;
 {$IFDEF GUI}
 var
@@ -74,7 +104,7 @@
 
 begin
   lDlgType :=  Dialogs.TMsgDlgType(DlgType);
-  lButtons:= Dialogs.TMsgDlgButtons(Buttons);
+  lButtons:= MsgDlgButtonsConvertToStandard(Buttons);
   result := MessageDlg(Msg, lDlgType, lButtons,HelpCtx);
 {$ELSE}
 begin

Reply via email to