Стандартный диалог не всплывает - PullRequest
2 голосов
/ 01 апреля 2012

У меня есть форма с TSaveDialog. При вызове функции Execute она не появляется при запуске из IDE. Это делает всплывающим при работе в автономном режиме. Протестировав его, я обнаружил, что все диалоги TSave / TOpen не работают. Не работающий означает, что Execute возвращает 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 Ответ

6 голосов
/ 01 апреля 2012

Если вы используете XE2, убедитесь, что у вас нет записей в «Переопределениях пользователей» блока «Параметры проекта».«Включить системные переменные» не работает, и без него в блоке среды находятся только переопределенные пользователем переменные среды, при которых запускается EXE, но для диалога открытия / сохранения требуются некоторые системные переменные, такие как «SystemDrive» и «SystemRoot».

В качестве альтернативы вы можете установить IDE Fix Pack , который исправляет опцию «Включить системные переменные».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...