Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Проблема отображения иконок в диалоговых окнах MessageDlg в Delphi 10.1.2 Berlin

Delphi , Программа и Интерфейс , Диалоги и Фреймы

При работе с компонентом MessageDlg в Delphi 10.1.2 Berlin разработчики столкнулись с неожиданным поведением: иконки, отображаемые для типов диалогов mtInformation и mtConfirmation, оказались идентичными. В то время как ожидалось, что константа mtConfirmation будет отображать иконку в виде вопросительного знака, как это было в предыдущих версиях, теперь она отображает ту же иконку, что и mtInformation. Пример кода, демонстрирующего данную проблему:

if Vcl.Dialogs.MessageDlg('Do you really want to remove the selected item?', mtConfirmation, mbOKCancel, 0) = mrOk then
begin
  RemoveTheSelectedItem;
end;

if Vcl.Dialogs.MessageDlg('Do you really want to remove the selected item?', mtInformation, mbOKCancel, 0) = mrOk then
begin
  RemoveTheSelectedItem;
end;

На скрине видно, что иконки для обоих типов сообщений идентичны.

Подтвержденный ответ

В официальной документации Embarcadero указано, что диалоговые окна типа TMsgDlgType.mtConfirmation теперь отображают информационную иконку. В прошлых версиях для mtConfirmation использовался вопросительный знак, но Microsoft изменил Windows API функцию, которую использует VCL для отображения диалогов mtConfirmation. Microsoft мотивировал это изменение тем, что вопросительный знак не явно представляет конкретный тип сообщения и может вводить в заблуждение пользователей, так как они могут воспринимать его как символ помощи. Для возврата к предыдущему виду диалогового окна необходимо установить переменную UseLatestCommonDialogs модуля Vcl.Dialogs в значение False.

Vcl.Dialogs.UseLatestCommonDialogs := False;
if Vcl.Dialogs.MessageDlg('Do you really want to remove the selected item?', mtConfirmation, mbOKCancel, 0) = mrOk then
begin
  RemoveTheSelectedItem;
end;

После выполнения этих изменений иконка в диалоговом окне типа mtConfirmation изменится на вопросительный знак.

Альтернативные решения

Альтернативные способы решения данной проблемы не рассматривались, так как в документации Embarcadero представлен прямой и ясный способ изменения поведения иконок в диалоговых окнах MessageDlg.

Заключение

Разработчикам, столкнувшимся с проблемой отображения иконок в диалоговых окнах MessageDlg в Delphi 10.1.2 Berlin, рекомендуется использовать описанный выше метод изменения переменной UseLatestCommonDialogs. Это позволит вернуть функциональность отображения вопросительного знака для диалогов типа mtConfirmation, как это было в предыдущих версиях Delphi.

Создано по материалам из источника по ссылке.

В версии Delphi 10.1.2 Berlin изменилось отображение иконок в диалоговых окнах `MessageDlg`, иконка для типа `mtConfirmation` теперь отображается как информационная иконка вместо вопросительного знака, как это было ранее.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Диалоги и Фреймы ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-10 18:37:35/0.0038790702819824/0