Показать сообщение отдельно
  #1  
Старый 01.01.2024, 21:10
michael2000 michael2000 вне форума
Прохожий
 
Регистрация: 10.07.2010
Сообщения: 7
Репутация: 10
По умолчанию Проблемы с TTaskDialog

В какой-то момент времени решил в проекте заменить стандартные MessageDlg на более продвинутые TTaskDialog. И всё бы хорошо, но столкнулся со странной проблемой - когда программа скомпилирована с отладчиком, то окна TTaskDialog не выводятся на экран. А когда программа скомпилирована без отладчика, то всё нормально вызывается.
Вот такой функцией вызывается TTaskDialog:
Код:
function ShowRussianMessageDialog(const DlgCaption: string; const Msg: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; const Title: String = ''): Integer;
var
  S: string;
  Dialog: TTaskDialog;
begin
  if Trim(DlgCaption) = '' then
    case DlgType of
      mtWarning: S := 'Предупреждение';
      mtError: S := 'Ошибка';
      mtInformation: S := 'Информация';
      mtConfirmation: S := 'Подтверждение';
      mtCustom: S := '';
    end
  else
    S := DlgCaption;
  Dialog := TTaskDialog.Create(FindControl(Application.ActiveFormHandle));
  try
    Dialog.Caption := S;
    Dialog.Text := Msg;
    Dialog.Title := Title;
    Dialog.Flags := Dialog.Flags + [tfPositionRelativeToWindow];
    {$IFDEF VER340}
    Dialog.Flags := Dialog.Flags + [tfSizeToContent];
    {$ENDIF}
    case DlgType of
      TMsgDlgType.mtWarning: Dialog.MainIcon := tdiWarning;
      TMsgDlgType.mtError: Dialog.MainIcon := tdiError;
      TMsgDlgType.mtInformation: Dialog.MainIcon := tdiInformation;
      TMsgDlgType.mtConfirmation: Dialog.MainIcon := tdiShield;
    end;
    Dialog.CommonButtons := [];
    if mbOk in Buttons then
      Dialog.CommonButtons := Dialog.CommonButtons + [tcbOk];
    if mbYes in Buttons then
      Dialog.CommonButtons := Dialog.CommonButtons + [tcbYes];
    if mbNo in Buttons then
      Dialog.CommonButtons := Dialog.CommonButtons + [tcbNo];
    if mbCancel in Buttons then
      Dialog.CommonButtons := Dialog.CommonButtons + [tcbCancel];
    if mbRetry in Buttons then
      Dialog.CommonButtons := Dialog.CommonButtons + [tcbRetry];
    if mbClose in Buttons then
      Dialog.CommonButtons := Dialog.CommonButtons + [tcbClose];

    Dialog.Execute;
    Result := Dialog.ModalResult;
  finally
    Dialog.Free;
  end;
end;
Может кто подскажет в чём ошибка?
Ответить с цитированием