III Sobre el libro...1 El autor...1 El equipo de revisores del libro...1 Dedicatoria....2 Agradecimientos...2 Díganos lo que Piensa!... 2 0 Introducción...5 A quién va dirigido este libro...5 Cómo está organizado este libro....5 Componentes desarrollados en este libro....7 Aplicaciones de ejemplo...7 1 Las interfaces en Delphi....9 Definiendo interfaces...9 La interfaz como un contrato...11 Diferencias entre una interfaz y una clase...11 Una interfaz es inalterable...12 Declarando una interfaz...13 Definiendo GUIDs...13 Implementando una interfaz....15 Implementando IUnknown....16 Implementando IUnknown manualmente...17 Creando, usando y destruyendo interfaces... 20 Las referencias a una interfaz se cuentan...21 Obteniendo un puntero a una interfaz...23 Ejemplo: IntfDemo...28 Programando con interfaces...33 Ejemplo: SortDemo - Algoritmos con interfaces....33 Tópicos avanzados sobre interfaces...43 Implementando múltiples interfaces en una clase...43 Propiedades en las interfaces....50 Ejemplo: Demostración gráfica.... 50 Resumen....58
IV 2 Las interfaces y COM...59 Los GUIDs y COM...59 Objetos COM y Fábricas de Clase...60 Objetos COM...61 Fábricas de clases....63 Servidores COM internos al proceso....65 Soporte de múltiples hilos....66 Registrando el servidor...67 Constructores a medida....68 Creando una instancia de un objeto COM interno al proceso.....68 Ejemplo: Distribución unidimensional óptima...71 Servidores COM externos al proceso...97 Instanciación...97 Creando una instancia de un objeto COM externo al proceso...98 Serialización de datos (marshaling).... 98 Arrays variantes...99 Creando arrays variantes...102 Accediendo a un array variante...103 Mejorando el rendimiento de los arrays variantes....104 Ejemplo: Array variante....105 Usando objetos COM con otros lenguajes...109 Resumen...110 3 Bibliotecas de tipos...111 Definición de Biblioteca de Tipos...111 Razones para Usar Bibliotecas de Tipos...112 TTypedComObject...112 Creando una biblioteca de tipos en Delphi...115 Usando el Editor de Bibliotecas de Tipos...117 Creando un Visor de Bibliotecas de tipos...127 Interpretando enumeraciones...136 Interpretando interfaces y disp-interfaces...137 Interpretando co-clases...137 Extendiendo TIViewer...138 Resumen...138
V 4 Automatización...139 Definiendo la automatización....139 Interfaces...140 Variantes....140 Disp-interfaces...142 Interfaces Duales...144 Servidores de automatización internos al proceso....144 Ejemplo: Servidor de conversión de unidades de medida... 144 CreateOleObject y GetActiveOleObject...148 Ejemplo: Cliente del servidor de conversión de unidades... 149 Servidores de automatización externos al proceso...154 HResult y Safecall....154 Automatizando una aplicación existente....156 Eventos y funciones de respuesta....168 Disp-interfaces...168 Interfaces de respuesta....185 Microsoft ADO...198 La filosofía de ADO...199 Obteniendo ADO...200 Instalando ADO en Delphi...200 Conectando a una base de datos...201 Abriendo un conjunto de datos....202 Ejecutando un comando...204 Accediendo a los valores de los campos....205 Manejando errores de bases de datos...205 Ejemplo: aplicación Microsoft ADO... 206 Resumen....210 5 Controles ActiveX y ActiveForms....211 Usando controles ActiveX existentes en Delphi...211 Microsoft Agent....211 Ejemplo de aplicación Microsoft Agent....222 Creación de controles ActiveX...228 Razones para crear controles ActiveX...228 Convirtiendo un componente VCL a un Control ActiveX...229 Registrando un control ActiveX...247 Probando el control ActiveX en Visual Basic...247
VI Añadiendo una página de propiedades a un control ActiveX...247 Distribuyendo controles ActiveX...248 ActiveForms...249 Creando un ActiveForm...249 Probando un ActiveForm...264 Resumen...265 6 DCOM...267 Bases de DCOM...267 Programación con DCOM...267 Creando un Servidor DCOM...268 Instalación de un servidor DCOM...272 Creando un cliente DCOM....276 Implementación de conjuntos de datos remotos con DCOM...278 Definiendo la aplicación...279 Creando el servidor...279 Creando el cliente administrativo...293 Creando el cliente punto de venta...300 Resumen....305 7 Almacenamiento Estructurado....307 Definiendo el almacenamiento estructurado....307 Programación con almacenamiento estructurado...309 Creando un fichero de almacenamiento estructurado...309 Abriendo un fichero de almacenamiento estructurado existente..312 Trabajando con flujos...313 Creando y utilizando almacenes adicionales....316 Iterando a través de un fichero de almacenamiento estructurado..316 Comprimiendo un fichero de almacenamiento estructurado...318 Ejemplo: Uso de ficheros de almacenamiento estructurado... 319 Ejemplo: Visualizar un fichero de almacenamiento estructurado..337 Resumen...341 8 Almacenamiento Estructurado y OLE...343 Conjuntos de Propiedades OLE...343 Convenios de los conjuntos de propiedades OLE...344 Las interfaces IPropertySetStorage e IPropertyStorage....344 Un componente para leer y escribir conjuntos de propiedades...356
VII Ejemplo: Accediendo a propiedades definidas por el usuario.. 361 Ejemplo: Encontrando ficheros por sus propiedades...364 Documentos compuestos y contenedores OLE...369 Activando y desactivando servidores OLE...371 Guardando y cargando objetos en ficheros y flujos....371 Mezcla de menús...371 Usando el Portapapeles...372 Ejemplo: Un contenedor OLE sencillo... 373 Resumen....376 9 Programación del shell de Windows....377 Manejadores de menús contextuales...377 La interfaz IShellExtInit...379 La interfaz IContextMenu...380 Registrando el manejador de menú contextual....385 Manejadores de ganchos de copia...391 La interfaz ICopyHook...392 Registrando un manejador de gancho de copia...396 Accesos directos del shell...399 Interfaces de los enlaces del shell...402 Creando un enlace...403 Iconos de la bandeja...412 Mensajes de iconos de bandeja...414 El componente TDCPTrayIcon...414 Un ejemplo de aplicación de bandeja...419 Manejadores de páginas de propiedades....421 Creando una plantilla de diálogo...423 Interfaces de un manejador de página de propiedades...424 Implementando el procedimiento de diálogo....431 Implementando la función de respuesta...432 Dónde ir desde aquí....433 Apéndices A - Lecturas y recursos recomendados....435 Programación en Delphi...435 Programación COM...436 Indice...437