Pregunta

Actualmente uso TOpenTextFileDialog ya que tiene la opción Codificaciones, pero en Vista aparece usando el estilo de diálogo abierto más antiguo.Me gustaría el nuevo estilo de diálogo abierto, pero con un cuadro combinado de codificación que puedo llenar con cadenas personalizadas.Básicamente quiero el cuadro de diálogo abierto exacto que muestra el Bloc de notas en Vista.Por supuesto, también necesito el cuadro de diálogo de guardar correspondiente.

Investigué un poco y parece que el indicador OFN_ENABLETEMPLATE hace que el cuadro de diálogo común de Vista vuelva al estilo anterior.Desafortunadamente, esa también es la bandera que permite que TOpenTextFileDialog modifique la ventana para agregar el cuadro combinado de codificaciones (si entiendo las cosas correctamente).

¿Alguien tiene alguna sugerencia sobre cómo obtener lo que quiero en Vista pero aún así funciona en XP?Supongo que Windows 7 tendrá el mismo problema.Estoy usando D2009.¡Gracias por cualquier sugerencia o ayuda!

¿Fue útil?

Solución

Con Vista se ha introducido una nueva forma de tratar los cuadros de diálogo de archivos; para obtener más información, consulte Google para obtener más información. IFileDialog interfaz o echar un vistazo a esta publicación de blog.Como usted mismo dice, usando el OFN_ENABLETEMPLATE La bandera hace que el cuadro de diálogo común de Vista vuelva al estilo anterior.

Con Delphi 2007 y 2009 puedes utilizar el TFileOpenDialog y TFileSaveDialog en el Diálogos de Vista categoría de componentes.Para que su aplicación sea compatible con las versiones de Windows anteriores a Vista, debe seguir usando el TOpenTextFileDialog para ellos, y verifique en tiempo de ejecución si está en Vista y puede usar los nuevos cuadros de diálogo:

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

Ahora sólo necesita agregar la personalización al cuadro de diálogo de Vista. La publicación del blog muestra cómo hacer esto, agregando un controlador para OnExecute del diálogo (porque en el momento en que esto se llama el IFileDialog interfaz ya ha sido configurada), consultando el Dialog miembro del diálogo de archivo para el IFileDialogCustomize interfaz y usarla para agregar controles adicionales.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top