Стандартный диалог не всплывает
У меня есть форма с TSaveDialog. При вызове функции Execute она не появляется при запуске из IDE. Это всплывающее окно при запуске в автономном режиме. Протестировав его, я обнаружил, что все диалоги TSave/TOpen не работают. Не работает означает, что выполнение возвращает False
без всплывающего окна (см. обновленный пример кода: всегда выскакивает сообщение "False" без предшествующего диалога). Другие диалоги (шрифт / цвет / и т. Д.) Работают.
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenPictureDialog1.Execute
then ShowMessage ('True')
else ShowMessage ('False');
end;
При запуске без отладки диалоговое окно не появляется. Также не имеет значения, выбрана ли версия Release или Debug.
Видимо IDE делает что-то странное. В форме есть два компонента TSaveDialog, и оба отображают одинаковое поведение.
Есть идеи, что не так?
Обновление 1 с использованием Delphi XE в Windows 7. Другие проекты, использующие TSaveDialogs, работают нормально.
Обновление 2 Обнаружено, что оригинальный вопрос о TSaveDialog применяется ко всем диалогам TSave/TOpen. Вопрос был отредактирован, чтобы включить это знание.
Обновление 3 Я нашел эту ссылку аналогичной ошибки. Однако я проверил реестр, но не смог найти исполняемый файл, как уже упоминалось. И совет по изменению совместимости с XP не относится к imho, потому что TSaveDialog отлично работает вне IDE.
1 ответ
Если вы используете XE2, вам следует убедиться, что у вас нет записей в "Переопределениях пользователей" блока "Параметры проекта". "Включить системные переменные" не работает, и без него в блоке среды находятся только переопределенные пользователем переменные среды, при которых запускается EXE-файл, но для диалога открытия / сохранения требуются некоторые системные переменные, такие как "SystemDrive" и "SystemRoot".
В качестве альтернативы вы можете установить пакет исправлений IDE, который исправляет параметр "Включить системные переменные".