Wieso unnötig? ShowMessage mit zwei Parametern ruft ja den neuen TaskDialog auf, wenn nicht irgendetwas dagegen spricht. Am Ende landet man hier und da wird die Prüfung gemacht:
Delphi-Quellcode:
function MessageDlgPosHelp(const Msg: string; DlgType: TMsgDlgType;
Buttons: TMsgDlgButtons; HelpCtx: Longint; X, Y: Integer;
const HelpFileName: string; TaskDlgFlags: TTaskDialogFlags): Integer;
begin
if TOSVersion.Check(6) and UseLatestCommonDialogs and
IsNewCommonCtrl and not ((shDialogs in TStyleManager.SystemHooks) and not StyleServices(Screen.ActiveCustomForm).IsSystemStyle) then
Result := DoTaskMessageDlgPosHelp('', Msg, DlgType, Buttons,
HelpCtx, X, Y, HelpFileName, TaskDlgFlags)
else
Result := DoMessageDlgPosHelp(CreateMessageDialog(Msg, DlgType, Buttons),
HelpCtx, X, Y, HelpFileName);
end;
Die beiden Dialoge im ScreenShot entstehen aus demselben Code, jeweils durch ändern von UseLatestCommonDialogs.