Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Программа и интерфейс
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #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;
Может кто подскажет в чём ошибка?
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:08.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter