Compartir a través de


Optimizar controles ActiveX

Si utiliza controles ActiveX o Automatización en la aplicación, puede ajustar la aplicación para obtener el máximo rendimiento de estos controles.

Usar controles ActiveX de forma eficaz

Para obtener el máximo rendimiento a la hora de utilizar controles ActiveX en los formularios, siga estas recomendaciones:

  • Inicie los servidores de Automatización en primer lugar. Los controles enlazados a campos generales suelen funcionar mejor cuando los servidores de estos tipos de datos (como Microsoft Excel o Word) ya se están ejecutando en el equipo cliente.
  • Inserte objetos “como un icono”. Cuando inserte un control ActiveX en un campo, hágalo como un icono o un marcador de posición en lugar de insertar el objeto completo. Esto reduce la cantidad de espacio de almacenamiento necesario porque Visual FoxPro almacena una imagen de presentación con el objeto, lo que consume gran cantidad de espacio de almacenamiento. Si se inserta un objeto como un icono también se aumenta el rendimiento para dibujar el objeto.
  • Use controles de imágenes. Si desea mostrar un mapa de bits (como el logotipo de una empresa), los controles de imágenes son mucho más rápidos que los controles OLEBound.
  • Use vínculos manuales siempre que sea posible. Los vínculos manuales a los objetos son más rápidos porque evitan el tiempo de notificación requerido para los vínculos automáticos y porque el servidor no necesita iniciarse para dibujar el objeto. Si no necesita actualizar un objeto con frecuencia, use vínculos manuales.

Optimizar el rendimiento de Automatización

Si la aplicación interactúa con otras aplicaciones, puede conseguir el máximo rendimiento mediante las técnicas siguientes.

Evitar múltiples instancias del servidor

En algunos casos, los servidores de Automatización (como Microsoft Excel) iniciarán una nueva instancia, aun cuando ya haya una ejecutándose. Para evitar esto y aumentar el rendimiento, use la función GetObject( ) en lugar de CreateObject( ). Por ejemplo, la llamada siguiente siempre utilizará una instancia existente:

x = GetObject(,"excel.Application")

De lo contrario, la llamada siguiente creará una instancia nueva:

x = CreateObject("excel.Application")

Si llama a GetObject( ) pero el servidor no está funcionando, aparecerá el error 1426. En ese caso, puede interceptar el error y llamar a CreateObject( ):

ON ERROR DO oleErr WITH ERROR()
x = GetObject(,"excel.application")
ON ERROR  && restore system error handler

PROCEDURE oleErr
PARAMETER mError
IF mError = 1426 then
 x = CreateObject("excel.application")
ENDIF

Hacer referencia a objetos de forma eficaz

La ejecución de expresiones que usen objetos en un servidor de Automatización puede resultar muy costosa, especialmente cuando se evalúan varias veces. Es mucho más rápido almacenar las referencias de objetos en variables para usarlas como referencia.

Vea también

Optimizar programas | Optimizar aplicaciones en entornos multiusuario | Optimizar el acceso a datos remotos | Optimizar las aplicaciones | Optimizar el sistema