2009-07-02 3 views
1

В настоящее время я использую TOpenTextFileDialog, поскольку он имеет параметр «Кодировки», но в Vista он отображается с использованием старого стиля открытого диалога. Я хотел бы открыть диалог открытия нового стиля, но со списком кодировки, который я могу заполнить пользовательскими строками. В основном я хочу, чтобы в диалоговом окне Vista отображалось точное открытое диалоговое окно. Конечно, мне также нужен соответствующий диалог сохранения.Файл Открыть диалог с кодировками combobox под Vista

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

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

+0

Я добавил запрос функции для этого в центр качества Embarcadero: http://qc.embarcadero.com/wc/qcmain.aspx?d=83605 –

ответ

3

С Vista был введен новый способ работы с диалоговыми окнами файлов, для получения дополнительной информации google для интерфейса или взгляните на this blog post. Как вы сами говорите, использование флага OFN_ENABLETEMPLATE приводит к тому, что общее диалоговое окно Vista возвращается к старому стилю.

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

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

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

+0

Спасибо! Это именно то, что я искал! Я добавил комментарий к этому блогу с дополнительной информацией, если он помогает другим. Также ссылка на документы msdn - http://msdn.microsoft.com/en-us/library/bb775912.aspx, если кому-то это нужно. – MarkF

Смежные вопросы