para full descargar delphi windows-7 windows-vista delphi-xe

delphi - full - ¿Cuál es la diferencia entre el nuevo TFileOpenDialog y el viejo TOpenDialog?



descargar delphi 7 (2)

TOpenDialog ejecuta TFileOpenDialog cuando se TFileOpenDialog las siguientes condiciones:

  1. el programa se ejecuta con Vista o Windows 7
  2. UseLatestCommonDialogs es verdadero (que es el predeterminado)
  3. no se establecen eventos OnIncludeItem , OnClose o OnShow

Por lo tanto, mientras usa TOpenDialog en su sistema, es probable que termine TFileOpenDialog ejecutando TFileOpenDialog en la mayoría de los casos, lo que explica por qué se ven igual para usted.

Observación: TFileOpenDialog no se TFileOpenDialog en sistemas Windows anteriores, solo genera una excepción. Por el contrario, TOpenDialog realiza una especie de "caída hacia adelante".

¿Cuál es la diferencia entre el nuevo TFileOpenDialog y el viejo TOpenDialog?
En mi computadora (Win 7 / DXE), cuando ejecuto el código, los diálogos tienen el mismo aspecto.


  • TOpenDialog ajusta el GetOpenFileName tradicional. Funciona en todas las versiones de Windows.
  • TFileOpenDialog envuelve el nuevo diálogo basado en COM que se introdujo en Vista. Por lo tanto, solo funciona en Vista o posterior. Tiene más funcionalidad que los diálogos más antiguos, sobre todo la estrecha integración con la búsqueda.

Cuadro de diálogo común de Vista

Diálogo común de compatibilidad

La API GetOpenFileName de hecho producirá los nuevos diálogos en la mayoría de las situaciones, si se llama correctamente, por lo que no se puede notar la diferencia. Dicho esto, históricamente el contenedor de VCL para GetOpenFileName se implementó de forma imprecisa y siempre dio como resultado que se mostrara el cuadro de diálogo de compatibilidad.

Pero, ¿qué ofrece el nuevo diálogo COM entonces?

El nuevo diálogo ofrece una interfaz de personalización mucho más sencilla a la pérdida de cierta generalidad. Si utiliza la plantilla de diálogo antigua basada en la personalización con GetOpenFileName en Vista o posterior, los diálogos se degradan a versiones de compatibilidad feas que carecen de funcionalidad.

La otra gran ventaja de los nuevos diálogos es la capacidad de seleccionar un número ilimitado de archivos. La antigua interfaz GetOpenFileName devolvió nombres de archivo multiselección en un búfer de tamaño fijo. Esto puede ser una verdadera limitación y en mi propio código he tenido que hackear el código VCL para hacer que este buffer sea más grande para cuando mi aplicación se ejecute en XP.

TOpenDialog delegará el trabajo a TFileOpenDialog si es posible. La prueba que utiliza requiere que todo lo siguiente sea verdadero:

  • Se ejecuta en Windows Vista o posterior.
  • Dialogs.UseLatestCommonDialogs variable booleana global Dialogs.UseLatestCommonDialogs es verdadera (el valor predeterminado es verdadero). Esto le permite desactivar el uso del nuevo cuadro de diálogo COM si decide hacerlo.
  • No se especifica ninguna plantilla de diálogo.
  • OnIncludeItem , OnClose y OnShow no están asignados. Presumiblemente, estos no pueden ser disparados por TFileOpenDialog .

Resumen

Si continúa utilizando TOpenDialog , obtendrá el beneficio de un número ilimitado de archivos en el modo de selección múltiple. Sin embargo, si desea personalizar el diálogo y tener los nuevos cuadros de diálogo en lugar de los desagradables diálogos de compatibilidad, entonces debe hacer lo siguiente:

  • En XP usa TOpenDialog y el método de plantilla de diálogo.
  • En Vista y luego use TFileOpenDialog e implemente la personalización con IFileDialogCustomize .