De diálogo Abrir arquivo com codificações combobox sob Vista
-
21-08-2019 - |
Pergunta
Eu uso atualmente o TOpenTextFileDialog, pois tem a opção de Codificações, mas no Vista ele aparece usando o estilo de diálogo mais velho aberto. Eu gostaria que o novo diálogo aberto estilo, mas com um combobox codificação que eu posso preencher com seqüências personalizadas. Basicamente eu quero o diálogo exato aberto que mostra o bloco de notas sob Vista. Claro que eu também precisa do correspondente de economia de diálogo também.
Já fiz algumas pesquisas e parece que a bandeira OFN_ENABLETEMPLATE faz com que o diálogo comum Vista a cair de volta para o velho estilo. Infelizmente isso também é a bandeira que permite que o TOpenTextFileDialog modificar a janela para adicionar o combobox codificações (se eu entender as coisas corretamente.)
Alguém tem uma sugestão sobre como conseguir o que eu quero no Vista, mas ainda têm que trabalhar sob XP? Presumo que o Windows 7 terá o mesmo problema. Estou usando D2009. Obrigado por todas as sugestões ou ajuda!
Solução
Com Vista foi introduzida uma nova forma de lidar com diálogos de arquivo, para mais informações google para a interface IFileDialog
ou ter um olhar para este post . Como você diz a si mesmo, usando a bandeira OFN_ENABLETEMPLATE
faz com que o diálogo comum Vista a cair de volta para o velho estilo.
Com o Delphi 2007 e 2009 você pode usar o TFileOpenDialog
e TFileSaveDialog
no Vista Diálogos categoria componentes. Para tornar a sua aplicação compatível com versões pré-Windows Vista você deve continuar usando o TOpenTextFileDialog
para aqueles, e verificar em tempo de execução se você estiver em Vista e pode usar os novos diálogos:
if Win32MajorVersion >= 6 then begin
// use TFileOpenDialog
// ...
end else begin
// use TOpenTextFileDialog
// ...
end;
Agora você só precisa adicionar a personalização para o diálogo Vista. O post mostra como para fazer isso, adicionando um manipulador para OnExecute
da caixa de diálogo (porque no momento em que este é chamado a interface IFileDialog
foi configurado já), consultando o membro Dialog
do diálogo de arquivo para a interface IFileDialogCustomize
, e usar isso para adicionar os controles adicionais.