Диалоговое окно открытия файла со списком кодировок в Vista

StackOverflow https://stackoverflow.com/questions/1076827

Вопрос

В настоящее время я использую TOpenTextFileDialog, поскольку у него есть опция Encodings , но в Vista он отображается с использованием более старого стиля open dialog.Я бы хотел открыть диалоговое окно в новом стиле, но со списком кодировок, который я могу заполнить пользовательскими строками.По сути, мне нужно точное диалоговое окно открытия, которое показывает Notepad в Vista.Конечно, мне также нужно соответствующее диалоговое окно сохранения.

Я провел некоторое исследование, и кажется, что флаг OFN_ENABLETEMPLATE приводит к тому, что диалоговое окно Vista common возвращается к старому стилю.К сожалению, это также флаг, который позволяет TOpenTextFileDialog изменять окно, чтобы добавить выпадающий список кодировок (если я все правильно понимаю).

Есть ли у кого-нибудь предложения о том, как получить то, что я хочу, под Vista, но при этом заставить это работать под XP?Я предполагаю, что Windows 7 будет иметь ту же проблему.Я использую D2009.Спасибо за любые предложения или помощь!

Это было полезно?

Решение

В Vista появился новый способ работы с диалоговыми окнами файлов, для получения дополнительной информации воспользуйтесь Google для IFileDialog интерфейс или взгляните на это сообщение в блоге.Как вы сами говорите, используя OFN_ENABLETEMPLATE флаг приводит к возврату общего диалогового окна Vista к старому стилю.

С Delphi 2007 и 2009 вы можете использовать TFileOpenDialog и TFileSaveDialog в Диалоговые окна Vista категория компонентов.Чтобы сделать ваше приложение совместимым с версиями Windows, выпущенными до Vista, вам следует продолжать использовать TOpenTextFileDialog для них и проверьте во время выполнения, используете ли вы Vista и можете ли использовать новые диалоговые окна:

if Win32MajorVersion >= 6 then begin
  // use TFileOpenDialog
  // ...
end else begin
  // use TOpenTextFileDialog
  // ...
end;

Теперь вам нужно только добавить настройку в диалоговое окно Vista. Запись в блоге показывает, как это сделать, добавив обработчик для OnExecute из диалогового окна (потому что в то время, когда это вызывается IFileDialog интерфейс уже настроен), запрашивая Dialog элемент диалогового окна файла для IFileDialogCustomize интерфейс, и используя это для добавления дополнительных элементов управления.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top