La.biblia.de.Delphi7[Marco.cantu]

1143

Click here to load reader

Transcript of La.biblia.de.Delphi7[Marco.cantu]

lndice

Agradecimientos ....................................................................................................................... Contactar con el autor ..............................................................................................................

. .

6 7

Siete versiones y contando ..................................................................................................... La estructura del libro ............................................................................................................ Normas usadas en este libro ............................................................................................Parte I Bases

29 31 32

......................................................................................................................... 33 1. Delphi 7 y su IDE .............................................................................................................. 35. .

Ediciones de Delphi ................................................................................................................ 36 Una vision global del IDE ..................................................................................................... 37 Un IDE para dos bibliotecas ............................................................................................ 38 . Configuration del escritorio ..................................................................................... 38 Environment Options ....................................................................................................... 40 40 Sobre 10s menus ................................................................................................................. El cuadro de dialog0 Environment Options .............................................................. 41 TO-DO List .......................................................................................................................... 41 Mensajes ampliados del compilador y resultados de busqueda en Delphi 7 .............. 43 44 El editor de Delphi ................................................................................................................. El Code Explorer ............................................................................................................... 46 . Exploracion en el editor ................................................................................................... 48 Class Completion .............................................................................................................. 49 Code Insight ...................................................................................................................... 50

.

Code Completion ......................................................................................................... 50 Code Templates ............................................................................................................ 52 Code Parameters .......................................................................................................... 52 Tooltip Expression Evaluation ................................................................................... 53 Mas teclas de metodo abreviado del editor .................................................................... 53 Vistas que se pueden cargar ............................................................................................. 54 Diagram View .............................................................................................................. 54 Form Designer ......................................................................................................................... 56 Object Inspector ................................................................................................................ 58 Categorias de propiedades .......................................................................................... 60 Object TreeView ................................................................................................................ 61 Secretos de la Component Palette ......................................................................................... 63 Copiar y pegar componentes ............................................................................................ 64 De las plantillas de componentes a 10s marcos ............................................................. 65 Gestionar proyectos ................................................................................................................ 67 Opciones de proyecto ........................................................................................................ 69 Compilar y crear proyectos .............................................................................................. 71 Ayudante para mensajes del compilador y advertencias ......................................... 73 Exploracion de las clases de un proyecto ....................................................................... 74 Herramientas Delphi adicionales y externas .............................. ........................................ 75 Los archivos creados por el sistema ..................................................................................... 76 Un vistazo a 10s archivos de codigo fuente .................................................................... 82 El Object Repository ............................................................................................................... 84 Actualizaciones del depurador en Delphi 7 ......................................................................... 872 El lenguaje de programaci6n Delphi

.

..........................................................................89

Caracteristicas centrales del lenguaje .................................................................................. 90 Clases y objetos ....................................................................................................................... 91 Mas sobre metodos ............................................................................................................ 93 Creacion de componentes de forma dinamica ............................................................ 94 Encapsulado ............................................................................................................................ 95 Privado, protegido y public0 ............................................................................................ 96 Encapsulado con propiedades ......................................................................................... 97 Propiedades de la clase TDate ................................................................................... 99 Caracteristicas avanzadas de las propiedades ........................................................ 100 Encapsulado y formularios ............................................................................................. 101 Aiiadir propiedades a formularios ........................................................................... 101 Constructores ......................................................................................................................... 103 Destructores y el metodo Free ....................................................................................... 104 El modelo de referencia a objetos de Delphi ..................................................................... 104 Asignacion de objetos ..................................................................................................... 105 Objetos y memoria ........................................................................................................... 107 Destruir objetos una sola vez ................................................................................... 108 Herencia de 10s tipos existentes .......................................................................................... 109 Campos protegidos y encapsulado ................................................................................ 111 Herencia y compatibilidad de tipos ............................................................................... 113 Enlace posterior y polimorfismo ......................................................................................... 114

Sobrescribir y redefinir metodos ................................................................................... 115 Metodos virtuales frente a metodos dinamicos ............................................................ 117 Manejadores de mensajes ......................................................................................... 117 Metodos abstractos .......................................................................................................... 118 Conversion descendiente con seguridad de tipos .............................................................. 119 Uso de interfaces ................................................................................................................... 121 Trabajar con excepciones ..................................................................................................... 124 Flujo de programa y el bloque finally ........................................................................... 125 Clases de excepciones ..................................................................................................... 127 Registro de errores .......................................................................................................... 129 Referencias de clase .............................................................................................................. 130 Crear. componentes usando referencias de clase ....................................................... 132 3 La biblioteca en tiempo de ejecuc~on

.

.. .........................................................................

135

Las unidades de la RTL ........................................................................................................ 136 . Las unidades System y SysInit ...................................................................................... 139 Cambios recientes en la unidad System .................................................................. 140 Las unidades SysUtils y SysConst ................................................................................. 141 Nuevas hnciones de SysUtils .................................................................................. 142 Rutinas extendidas de formato de cadenas en Delphi 7 ........................................ 144 La unidad Math ............................................................................................................... 145 Nuevas funciones matematicas ................................................................................ 145 Redondeo y dolores de cabeza .................................................................................. 147 Las unidades ConvUtils y StdConvs .............................................................................148 La unidad DateUtils ........................................................................................................ 148 La unidad StrUtils ........................................................................................................... 149 De Pos a PosEx .......................................................................................................... 150 La unidad Types .............................................................................................................. 151 La unidad Variants y VarUtils ....................................................................................... 151 Variantes personalizadas y numeros complejos ..................................................... 152 Las unidades DelphiMM y ShareMem ......................................................................... 154 Unidades relacionadas con COM .................................................................................. 154 Convertir datos ...................................................................................................................... 154 iConversiones de divisas? ................................................................................................... 158 Gestion de archivos con SysUtils ........................................................................................162 La clase TObject ................................................................................................................... 163 Mostrar information de clase ........................................................................................ 1674 La biblioteca de clases principales

.

.............................................................................169

El paquete RTL. VCL y CLX ..............................................................................................170 171 Partes tradicionales de la VCL ...................................................................................... La estructura de CLX ..................................................................................................... 172 Partes especificas de VCL de la biblioteca ................................................................... 173 La clase TPersistent .............................................................................................................. 173 La palabra clave published .............................................................................................176 Acceso a las propiedades por su nombre ...................................................................... 177 La clase TComponent ...........................................................................................................180

Posesion ............................................................................................................................ La matriz Components ......................................................................................... Cambio de propietario .............................................................................................. La propiedad Name ......................................................................................................... . Elimination de campos del formulario ......................................................................... Ocultar campos del formulario ...................................................................................... La propiedad personalizada Tag .................................................................................... ............................ Eventos ...................................................................................................... : Eventos en Delphi ........................................................................................................... Punteros a metodo ....................................................................................................... Los eventos son propiedades ......................................................................................... Listas y clases contenedores ............................................................................................... Listas y listas de cadena ............................................................................................... Pares nombre-valor (y extensiones de Delphi 7) ................................................... Usar listas de objetos ................................................................................................. Colecciones ...................................................................................................................... Clases de contenedores ............................................................................................. . . . Listas asociativas de verification ............................................................................ Contenedores y listas con seguridad de tipos .......................................................... Streaming ............................................................................................................................... La clase TStream ............................................................................................................. Clases especificas de streams ......................................................................................... Uso de streams de archivo .............................................................................................. Las clases TReader y TWriter ........................................................................................ Streams y permanencia ................................................................................................... Compresion de streams con ZLib .................................................................................. Resumen sobre las unidades principales de la VCL y la unidad BaseCLX ................... La unidad Classes ........................................................................................................... Novedades en la unidad Classes .............................................................................. . . Otras unidades prlncipales .............................................................................................

.

.

180 181 182 184 185 186 188 188 188 189 190 193 193 194 195 196 196 198 199 202 202 204 205 206 207 213 215 215 216 217219

5 Controles visuales

.

...........................................................................................................

VCL frente a VisualCLX ...................................................................................................... Soporte dual de bibliotecas en Delphi .......................................................................... Clases iguales, unidades diferentes ......................................................................... DFM y XFM ............................................................................................................... Sentencias uses .......................................................................................................... Inhabilitar el soporte de ayuda a la biblioteca dual ............................................... Eleccion de una biblioteca visual .................................................................................. Ejecucion en Linux ................................................................................................... Compilacion condicional de las bibliotecas ........................................................... Conversion de aplicaciones existentes .......................................................................... Las clases TControl y derivadas ......................................................................................... Parent y Controls ............................................................................................................ Propiedades relacionadas con el tamafio y la posicion del control ........................... Propiedades de activation y visibilidad ........................................................................ Fuentes .............................................................................................................................

220 222 223 224 226 226 226 227 228 229 230 231 232 232 233

Colores ............................................................................................................................. 233 La clase TWinControl (VCL) ........................................................................................ 235 La clase TWidgetControl (CLX) ................................................................................... 236 Abrir la caja de herramientas de componentes ................................................................. 236 Los componentes de entrada de texto ........................................................................... 237 El componente Edit ................................................................................................... 237 El control LabeledEdit ............................................................................................. 238 El componente MaskEdit .......................................................................................... 238 Los componentes Memo y RichEdit ........................................................................ 239 El control CLX Textviewer ...................................................................................... 240 Seleccion de opciones ..................................................................................................... 240 Los componentes CheckBox y RadioButton ........................................................... 241 Los componentes GroupBox ..................................................................................... 241 El componente RadioGroup ..................................................................................... 241 Listas .................'............................................................................................................... 242 El componente ListBox ............................................................................................. 242 El componente ComboBox ....................................................................................... 243 El componente CheckListBox .................................................................................. 244 Los cuadros combinados extendidos: ComboBoxEx y ColorBox ......................... 245 Los componentes Listview y TreeView .................................................................. 246 El componente ValueListEditor ............................................................................... 246 Rangos .............................................................................................................................. 248 El componente ScrollBar .......................................................................................... 248 Los componentes TrackBar y ProgressBar ............................................................. 249 El componente UpDown ........................................................................................... 249 El componente PageScroller .................................................................................... 249 El componente ScrollBox ......................................................................................... 250 Comandos ......................................................................................................................... 250 Comandos y acciones ................................................................................................ 251 Menu Designer .......................................................................................................... 251 Menus contextuales y el evento OncontextPopup .............................................. 252 Tecnicas relacionadas con 10s controles ............................................................................ 254 Gestion del foco de entrada ............................................................................................ 254 Anclajes de control ......................................................................................................... 257 Uso del componente Splitter .......................................................................................... 258 Division en sentido horizontal ................................................................................. 260 Teclas aceleradoras ......................................................................................................... 261 Sugerencias flotantes ...................................................................................................... 262 Personalizacion de las sugerencias .......................................................................... 263 Estilos y controles dibujados por el propietario .......................................................... 264 Elementos del menu dibujados por el usuario ........................................................ 265 Una ListBox de colores ............................................................................................. 267 Controles ListView y TreeView ........................................................................................... 270 Una lista de referencias grafica ..................................................................................... 270 Un arb01 de datos ............................................................................................................ 275 La version adaptada de DragTree ............................................................................ 278 Nodos de arb01 personalizados ...................................................................................... 280

6 Creac~on de la interfaz de usuario

.

..

..............................................................................283

Formularios de varias paginas ............................................................................................ 284 Pagecontrols y Tabsheets .............................................................................................. 285 Un visor de imagenes con solapas dibujadas por el propietario ................................ 290 La interfaz de usuario de un asistente .......................................................................... 294 El control ToolBar ................................................................................................................ 297 El ejemplo RichBar ......................................................................................................... 298 Un menu y un cuadro combinado en una barra de herramientas .............................. 300 Una barra de estado simple ............................................................................................ 301 Temas y estilos ...................................................................................................................... 304 Estilos CLX ..................................................................................................................... 305 Temas de Windows XP ................................................................................................... 305 El Componente ActionList .................................................................................................. 308 Acciones predefinidas en Delphi ................................................................................... 310 Las acciones en la practica ............................................................................................ 312 La barra de herramientas y la lista de acciones de un editor ..................................... 316 Los contenedores de barra de herramientas .......................................................................318 ControlBar ....................................................................................................................... 320 Un menu en una barra de control ............................................................................323 Soporte de anclaje en Delphi ......................................................................................... 323 Anclaje de barras de herramientas en barras de control ............................................ 324 Control de las operaciones de anclaje ..................................................................... 325 Anclaje a un Pagecontrol ..............................................................................................329 La arquitectura de ActionManager ..................................................................................... 331 Construir una sencilla demostracion ............................................................................ 332 Objetos del menu utilizados con menos frecuencia .....................................................336 Modificar un programa existente .................................................................................. 339 Emplear las acciones de las listas ................................................................................. 3407 Trabajo con formularios

.

................................................................................................ 345

La clase TForm ..................................................................................................................... 346 Usar formularios normales ............................................................................................. 346 El estilo del formulario .................................................................................................. 348 El estilo del borde ........................................................................................................... 349 Los iconos del borde .......................................................................................................352 Definicion de mas estilos de ventana ............................................................................ 354 Entrada directa en un formulario ........................................................................................ 356 Supervision de la entrada del teclado ........................................................................... 356 Obtener una entrada de raton ........................................................................................ 358 Los parametros de 10s eventos de raton ............................................................... 359 Arrastrar y dibujar con el raton ..................................................................................... 359 Pintar sobre formularios ...................................................................................................... 364 Tecnicas inusuales: Canal Alpha, Color Key y la API Animate ..................................... 366 Posicion, tamaiio, desplazamiento y ajuste de escala ....................................................... 367 .. La posicion del formulario ............................................................................................. 368 Ajuste a la ventana (en Delphi 7) ................................................................................. 368 El tamafio de un formulario y su zona de cliente ........................................................ 369

Restricciones del formulario .......................................................................................... 370 Desplazar un formulario ................................................................................................ 370 Un ejemplo de prueba de desplazamiento ............................................................... 371 Desplazamiento automatico ..................................................................................... 373 Desplazamiento y coordenadas del formulario ...................................................... 374 Escalado de formularios ................................................................................................. 376 Escalado manual del formulario .............................................................................. 377 Ajuste automatic0 de la escala del formulario ............................................................. 378 Crear y cerrar formularios ................................................................................................... 379 Eventos de creacion de formularios .............................................................................. 381 Cerrar un formulario ...................................................................................................... 382 Cuadros de dialog0 y otros formularios secundarios ........................................................ 383 Afiadir un formulario secundario a un programa ........................................................ 384 Crear formularios secundarios en tiempo de ejecucion .............................................. 385 Crear un unica instancia de formularios secundarios ........................................... 386 . Creacion de un cuadro de d~alogo ....................................................................................... 387 El cuadro de dialogo del ejemplo RefList .................................................................... 388 Un cuadro de dialog0 no modal ..................................................................................... 390 . Cuadros de dialog0 predefinidos ......................................................................................... 393 Dialogos comunes de Windows ................................................................................... 394 Un desfile de cuadros de mensaje ................................................................................. 395 Cuadros "Acerca den y pantallas iniciales ......................................................................... 396 ., Creacion de una pantalla inicial ................................................................................... 397

.

.

Parte I1 Arquitecturas orientadas a objetos en Delphi

...............................................401 8. La arquitectura de las aplicaciones Delphi ...............................................................403.

El objeto Application ............................................................................................................ 404 . Mostrar la ventana de la aplicacion .............................................................................. 406 Activacion de aplicaciones y formularios .................................................................... 407 Seguimiento de formularios con el objeto Screen ..................................................... 407 De eventos a hilos ................................................................................................................. 412 Programacion guiada por eventos ................................................................................. 412 Entrega de mensajes Windows ...................................................................................... 414 Proceso secundario y multitarea .................................................................................... 414 Multihilo en Delphi ........................................................................................................ 415 Un ejemplo con hilos ................................................................................................ 416 Verificando si existe una instancia previa de una aplicacion .......................................... 418 Buscando una copia de la ventana principal ................................................................ 418 Uso de un mutex .............................................................................................................. 419 Buscar en una lista de ventanas .................................................................................... 420 Controlar mensajes de ventana definidos por el usuario ............................................ 421 Creacion de aplicaciones MDI ............................................................................................ 422 MDI en Windows: resumen tecnico ............................................................................. 422 Ventanas marco y ventanas hijo en Delphi ........................................................................ 423 Crear un menu Window completo ................................................................................. 424 El ejemplo MdiDemo ...................................................................................................... 426 Aplicaciones MDI con distintas ventanas hijo .................................................................. 428

.

Formularios hijo y mezcla de menus ............................................................................ El formulario principal ................................................................................................... Subclasificacion de la ventana MdiClient .................................................................... Herencia de formularios visuales ........................................................................................ Herencia de un formulario base .................................................................................... Formularios polimorficos ............................................................................................... Entender 10s marcos ............................................................................................................. Marcos y fichas ............................................................................................................... Varios marcos sin fichas ................................................................................................. Formularios base e interfaces .............................................................................................. Uso de una clase de formulario base ............................................................................. Un truco adicional: clases de interposition ............................................................ Uso de interfaces ............................................................................................................. El gestor de memoria de Delphi ..........................................................................................9 Creac~on de componentes Delphi

.

..

428 429 430 432 433 436 439 442 444 446 447 450 451 452455

.................................................................................

Ampliacion de la biblioteca de Delphi ............................................................................... 456 Paquetes de componentes .............................................................................................. 4 5 6 Normas para escribir componentes ............................................................................... 458 Las clases basicas de componentes ............................................................................... 459 .. Creacion de nuestro primer componente ........................................................................... 460 El cuadro combinado Fonts ............................................................................................ 460 Creacion de un paquete .................................................................................................. 465 ~QuC hay detras de un paquete? ............................................................................... 466 Uso del cuadro combinado Fonts ................................................................................... 469 Los mapas de bits de la Component Palette ................................................................. 469 Creacion de componentes compuestos ............................................................................... 471 Componentes internos .................................................................................................... 471 Publicacion de subcomponentes .................................................................................... 472 Componentes externos .................................................................................................... 475 Referencias a componentes mediante interfaces .......................................................... 477 Un componente grafico complejo ........................................................................................ 481 Definition de una propiedad enumerada ...................................................................... 482 Escritura del metodo Paint ............................................................................................. 484 Adicion de las propiedades TPersistent ........................................................................ 486 Definition de un nuevo evento personalizado ............................................................. 488 Uso de llamadas de bajo nivel a la API de Windows ..... ....................................... 489 La version CLX: Llamadas a funciones Qt nativas ............................................... 490 Registro de las categorias de propiedades .................................................................... 490 Personalizacion de 10s controles de Windows ................................................................... 492 El cuadro de edicion numeric0 ...................................................................................... 494 Un editor numeric0 con separador de millares ...................................................... 495 El boton Sound ................................................................................................................ 496 Control de mensaje internos: El boton Active ........................................................... 498 Mensajes de componente y notificaciones .................................................................... 499 Mensajes de componentes ........................................................................................ 499 Notificaciones a componentes .................................................................................. 503 Un ejemplo de mensajes de componente ................................................................. 503

:

Un cuadro de dialog0 en un componente ........................................................................... Uso del componente no visual ....................................................................................... Propiedades de coleccion ............................................................................................... Definicion de acciones personalizadas ........................................................................ Escritura de editores de propiedades .................................................................................. Un editor para las propiedades de sonido ................................................................ Instalacion del editor de propiedades ..................................................................... Creacion de un editor de componentes ............................................................................... Subclasificacion de la clase TComponentEditor ......................................................... Un editor de componentes para ListDialog .................................................................. Registro del editor de componentes ........................................................................10 Bibliotecas y paquetes

504 508 508 512 516 517 520 521 522 522 524

.

................................................................................................. 527528 528 529 530 531 532 534 535 537 537 539 540 540 542 544 546 548 550 551 553 555 558 561

La funcion de las DLL en Windows ............................................................................ El enlace dinamico .......................................................................................................... Uso de las DLL ................................................................................................................ Normas de creacion de DLL en Delphi ....................................................................... Uso de las DLL existentes .................................................................................................... Usar una DLL de C++ .................................................................................................... Creacion de una DLL en Delphi ......................................................................................... La primera DLL en Delphi ...................................................................................... Funciones sobrecargadas en las DLL de Delphi ................................................... Exportar cadenas de una DLL ................................................................................. Llamada a la DLL de Delphi ...................................................................................... Caracteristicas avanzadas de las DLL en Delphi ............................................................ Cambiar nombres de proyecto y de biblioteca ............................................................. Llamada a una funcion DLL en tiempo de ejecucion .................................................. Un formulario de Delphi en una DLL .......................................................................... Bibliotecas en memoria: codigo y datos ............................................................................. Compartir datos con archivos proyectados en memoria ............................................. Uso de paquetes Delphi ........................................................................................................ Versiones de paquetes .................................................................................................... Formularios dentro de paquetes .......................................................................................... Carga de paquetes en tiempo de ejecucion ................................................................ Uso de interfaces en paquetes .................................................................................. Estructura de un paquete ..................................................................................................... 11 Modelado y programacih orientada a objetos (con ModelMaker)

.

...................567568 569 569 571 572 574 575 576 576

Comprension del modelo interno de ModelMaker ............................................................ Modelado y UML .................................................................................................................. Diagramas de clase ........................................................................................................ Diagramas de secuencia ............................................................................................. Casos de uso y otros diagramas ..................................................................................... Diagramas no W ........................................................................................................ Elementos comunes de 10s diagramas ........................................................................... Caracteristicas de codification de ModelMaker .......................................................... Integracion Delphi / ModelMaker .................................................................................

Gestion del modelo de codigo ........................................................................................ El editor Unit Code Editor ............................................................................................. El editor Method Implementation Code Editor ........................................................... La vista de diferencias .................................................................................................... La vista Event Types View ............................................................................................. Documentacion y macros ..................................................................................................... Documentacion frente a comentarios ............................................................................ Trabajo con macros ......................................................................................................... Reingenieria de codigo ......................................................................................................... .. Aplicacion de patrones de diseiio .................................................................................. Plantillas de codigo ......................................................................................................... Detallitos poco conocidos ...................................................................................................12 De COM a COM+

578 580 582 582 584 585 585 587 587 590 593 595

.

..................................................................................................... 597598 599 601 603 604 605 608 609 610 611 612 614 617 618 619 621 622 624 626 627 627 628 629 630 633 633 635 636 636 638 639 640 642

Una breve historia de OLE y COM ..................................................................................... Implementacion de IUnknow .............................................................................................. Identificadores globalmente unicos ............................................................................... El papel de las fabricas de clases .................................................................................. Un primer sewidor COM ..................................................................................................... Interfaces y objetos COM ............................................................................................... Inicializacion del objeto COM ....................................................................................... Prueba del sewidor COM ............................................................................................... Uso de las propiedades de la interfaz ........................................................................... Llamada a metodos virtuales ......................................................................................... Automatization ..................................................................................................................... Envio de una llamada Automatizacion ......................................................................... Creacion de un sewidor de Automatizacion ...................................................................... El editor de bibliotecas de tipos .................................................................................... El codigo del sewidor ..................................................................................................... Registro del sewidor de autornatizacion ...................................................................... Creacion de un cliente para el sewidor ........................................................................ El alcance de 10s objetos de automatizacion ................................................................ El senidor en un componente ...................................................................................... Tipos de datos COM ....................................................................................................... Exponer listas de cadenas y fuentes ....................................................................... Us0 de programas Office ................................................................................................ Uso de documentos compuestos .......................................................................................... El componente Container ............................................................................................... Uso del objeto interno .................................................................................................... Controles ActiveX ................................................................................................................. Controles ActiveX frente a componentes Delphi ........................................................ Uso de controles ActiveX en Delphi ............................................................................. Uso del control WebBrowser .................................................................................... Creacion de controles ActiveX ............................................................................................ Creacion de una flecha ActiveX .................................................................................... Afiadir Nuevas Propiedades ........................................................................................... Adicibn de una ficha de propiedades ............................................................................

ActiveForms ..................................................................................................................... Interioridades de ActiveForm ................................................................................... El control ActiveX XClock ...................................................................................... ActiveX en paginas Web ................................................................................................ COM+ .................................................................................................................................... Creacion de un componente COM+ .............................................................................. Modulos de datos transaccionales ................................................................................. Eventos COM+ ................................................................................................................ COM y .NET en Delphi 7 ....................................................................................................Parte I11 Arquitecturas orientadas a bases de datos en Delphi

644 644 645 646 648 649 651 653 656

................................ 659 13. Arquitectura de bases de datos Delphi ..................................................................... 661.

Acceso a bases de datos: dbExpress. datos locales y otras alternativas .......................... 662 La biblioteca dbExpress .................................................................................................. 662 Borland Database Engine (BDE) .................................................................................. 664 InterBase Express (IBX) ................................................................................................ 664 MyBase y el componente ClientDataSet ....................................................................... 665 dbGo para ADO ............................................................................................................... 665 MyBase: ClientDataSet independiente ............................................................................... 666 Conexion a una tabla local ya existente ....................................................................... 667 De la DLL Midas a la unidad MidasLib ....................................................................... 669 Formatos XML y CDS .................................................................................................... 669 Definition de una tabla local nueva .............................................................................. 670 Indexado ........................................................................................................................... 671 Filtrado ............................................................................................................................. 672 Busqueda de registros ..................................................................................................... 673 Deshacer y Savepoint ................................................................................................ 674 Activar y desactivar el registro ................................................................................ 675 Uso de controles data-aware ................................................................................................ 675 Datos en una cuadricula ................................................................................................. 676 DBNavigator y acciones sobre el conjunto de datos ................................................... 676 Controles data-aware de texto ....................................................................................... 677 Controles data-aware de lista ........................................................................................ 677 El ejemplo DbAware ................................................................................................. 678 Uso de controles de busqueda ........................................................................................ 679 Controles grAficos data-aware ....................................................................................... 681 El componente DataSet ........................................................................................................ 681 El estado de un Dataset .................................................................................................. 686 Los campos de un conjunto de datos .................................................................................. 687 Uso de objetos de campo ................................................................................................ 690 Una jerarquia de clases de campo ................................................................................. 692 ., Adicion de un campo calculado ..................................................................................... 695 Campos de busqueda ....................................................................................................... 699 Control de 10s valores nulos con eventos de campo .................................................... 701 Navegacion por un conjunto de datos ................................................................................. 702 El total de una columna de tabla ...................................................................................703 Uso de marcadores .......................................................................................................... 704

Edicion de una columna de tabla ................................................................................. 707 Personalizacion de la cuadricula de una base de datos .................................................... 707 Pintar una DBGrid ...................................................................................................... 708 Una cuadricula que permite la seleccion multiple ................................................. 710 Arrastre sobre una cuadricula ........................................................................................ 712 Aplicaciones de bases de datos con controles estandar .................................................... 713 Imitacion de 10s controles data-aware de Delphi ....................................................... 713 Envio de solicitudes a la base de datos ......................................................................... 716 Agrupacion y agregados ....................................................................................................... 718 Agrupacion ...................................................................................................................... 718 Definicion de agregados ................................................................................................. 719 Estructuras maestroldetalles ................................................................................................ 721 Maestro/detalle con 10s ClientDataSet ..................................................................... 722 Control de errores de la base de datos ............................................................................ 72314 Clientelsemidor con dbExpress

.

............................................................................

727

La arquitectura clientelservidor .......................................................................................... 728 Elementos del disefio de bases de datos .......................................................................... 730 Entidades y relaciones .................................................................................................... 730 Reglas de normalizacion ........................................................................................ 731 De las claves primarias a 10s OID ................................................................................. 731 Claves externas e integridad referencial ................................................................. 733 . . Mas restricciones ............................................................................................................ 734 Cursores unidireccianales ....................................................................................... 734 Introduccion a InterBase ...................................................................................................... 736 Uso de IBConsole ............................................................................................................ 738 Programacion de servidor en InterBase ........................................................................ 740 Procedimientos almacenados ................................................................................. 740 Disparadores (y generadores) ................................................................................... 741 La biblioteca dbExpress ....................................................................................................... 743 Trabajo con cursores unidireccionales ..................................................................... 743 Plataformas y bases de datos ........................................................................................ 744 Problemas con las versiones de controladores e inclusion de unidades .................... 745 Los componentes dbExpress ................................................................................................ 746 El componente SQLConnection .................................................................................... 747 Los componentes de conjuntos de datos de dbExpress ............................................... 751 El componente SimpleDataSet de Delphi 7 ........................................................... 752 El componente SQLMonitor .......................................................................................... 753 Algunos ejemplos de dbExpress .................................................................................... 754 Uso de un componente unico o de varios ..................................................................... 755 Aplicacion de actualizaciones .................................................................................. 755 . . Seguimiento de la conexion ..................................................................................... 756 Control del codigo SQL de actualizacion ............................................................... 757 Acceso a metadatos de la base de datos con SetSchemaInfo ................................ 758 Una consulta parametrica ............................................................................................... 760 Cuando basta una sola direccion: imprimir datas ....................................................... 762 Los paquetes y la cache ........................................................................................................ 765

Manipulacion de actualizaciones .................................................................................. 766 El estado de 10s registros ....................................................................................... 766 Acceso a Delta ........................................................................................................... 767 Actualizar 10s datos .................................................................................................... 768 Uso de transacciones ....................................................................................................... 771 Uso de InterBase Express ............................................................................................... 774 Componentes de conjunto de datos IBX ..................................................................... 776 Componentes administrativos IBX .......................................................................... 777 Creacion de un ejemplo IBX ....................................................................................... 777 Creacion de una consulta en vivo .................................................................................. 779 Control en InterBase Express ........................................................................................ 783 Obtencion de mas datos de sistema ............................................................................... 784 Bloques del mundo real ....................................................................................................... 785 Generadores e identificadores ........................................................................................ 786 Busquedas sin distincion entre mayusculas y minusculas .......................................... 788 Manejo de ubicaciones y personas ........................................................................... 790 Creacion de una interfaz de usuario .......................................................................... 792 Reserva de clases ............................................................................................................. 795 Creacion de un dialogo de busqueda ............................................................................. 798 Adicion de un formulario de consulta libre ................................................................ 800 15 Trabajo con ADO

.

.......................................................................................................... 803

Microsoft Data Access Componentes (MDAC) ............................................................. 805 Proveedores de OLE DB .............................................................................................805 Uso de componentes dbGo ................................................................................................... 807 Un ejemplo practico ................................................................................................... 808 El componente ADOConnection ............................................................................. 811 Archivos de enlace de datos ......................................................................................... 811 Propiedades dinamicas ....................................................................................................... 812 Obtencion de information esquematica ............................................................................ 813 Uso del motor Jet ............................................................................................................. 815 Paradox a traves de Jet ................................................................................................... 816 Excel a traves de Jet ....................................................................................................... 817 Archivos de texto a traves de Jet ............................................................................. 819 ., Importaclon y exportation ............................................................................................ 821 Trabajo con cursores ............................................................................................................. 822 . Ubicacion de cursor ................................................................................................... 822 Tipo de cursor .................................................................................................................. 823 Pedir y no recibir ............................................................................................................. 825 Sin recuento de registros ................................................................................................ 826 Indices de cliente ............................................................................................................. 826 . . . Repllcaclon ...................................................................................................................... 827 Procesamiento de transacciones .................................................................................... 829 Transacciones anidadas ........................................................................................... 830 Atributos de ADOConnection ................................................................................... 830 Tipos de bloqueo ............................................................................................................. 831 . . El bloqueo peslmlsta ............................................................................................. 832

.

Actualizacion de 10s datos ................................................................................................... Actualizaciones por lotes ............................................................................................... Bloqueo optimists ........................................................................................................... Resolution de conflictos de actualizacion .................................................................... Conjuntos de registros desconectados ................................................................................ Pooling de conexiones .......................................................................................................... Conjuntos de registros permanentes ............................................................................. El modelo de maletin ...................................................................................................... Unas palabras sobre ALIO.NET...........................................................................................16 Aplicaciones DataSnap multicapa

832 834 836 839 840 841 843 844 845 847

.

.............................................................................

Niveles uno. dos y tres en la historia de Delphi ................................................................ 848 Fundamento tecnico de DataSnap ................................................................................. 850 La interfaz AppSener .................................................................................................... 850 Protocolo de conexion ..................................................................................................... 851 Proporcionar paquetes de datos ..................................................................................... 853 Componentes de soporte Delphi (entorno cliente) .................................................... 854 Componentes de soporte Delphi (entorno senidor) .................................................... 856 Construction de una aplicacion de ejemplo ...................................................................... 856 El primer senidor de aplicacion ................................................................................... 856 El primer cliente ligero .................................................................................................. 858 Adicion de restricciones a1 senidor .................................................................................... 860 Restricciones de campo y conjuntos de datos .............................................................. 860 Inclusion de propiedades de campo .............................................................................. 862 Eventos de campo y tabla ............................................................................................... 862 Adicion de caracteristicas a1 cliente ................................................................................... 863 Secuencia de actualization ............................................................................................ 864 Refresco de datos ............................................................................................................. 865 Caracteristicas avanzadas de DataSnap ............................................................................. 867 Consultas por parametros ............................................................................................... 868 Llamadas a metodos personalizados ............................................................................. 868 Relaciones maestroldetalle ............................................................................................. 870 Uso del agente de conexion ............................................................................................ 871 Mas opciones de proveedor ............................................................................................ 872 Agente simple de objetos ................................................................................................ 873 Pooling de objetos ........................................................................................................... 874 Personalizacion de paquetes de datos ...........................................................................874 17. CreacMn de componentes de bases de datos

...........................................................

877

El enlace de datos ................................................................................................................. 878 La clase TDataLink ......................................................................................................... 878 Clases de enlaces de datos derivadas ............................................................................ 879 Creacion de controles data-aware orientados a campos ..................................................880 Una ProgressBar de solo lectura ...................................................................................880 Una TrackBar de lectura y escritura .............................................................................884 Creacion de enlaces de datos personalizados ....................................................................887 Un componente visualizador de registros ....................................................................888

Personalizacion del componente DBGrid .......................................................................... Construir conjuntos de datos personalizados .................................................................... La definicion de las clases ............................................................................................. Apartado I: Inicio. apertura y cierre ............................................................................. Apartado 11: Movimiento y gestion de marcadores ..................................................... Apartado 111: Buffers de registro y gestion de campos ............................................... Apartado IV: De buffers a campos ................................................................................ Comprobacion el conjunto de datos basado en streams .............................................. Un directorio en un conjunto de datos ............................................................................... Una lista como conjunto de datos .................................................................................. Datos del directorio ......................................................................................................... Un conjunto de datos de objetos ..........................................................................................18 Generation de informes con Rave

893 897 898 902 907 911 915 917 918 919 920 924931

.

..

.............................................................................

Presentation de Rave ............................................................................................................ Rave: el entorno visual de creacion de informes ......................................................... El Page Designer y el Event Editor ..................................................................... El panel Property .................................................................................................. El panel Project Tree ................................................................................................. Barras de herramientas y la Toolbar Palette .......................................................... La barra de estado ..................................................................................................... Uso del componente RvProject ...................................................................................... Formatos de representacion ........................................................................................... Conexiones de datos ....................................................................................................... Componentes del Rave Designer ........................................................................................ Componentes basicos ...................................................................................................... Componentes Text y Memo ...................................................................................... El componente Section ............................................................................................. Componentes grhficos ............................................................................................... El componente FontMaster ...................................................................................... Numeros de pagina .................................................................................................... Componentes de dibujo ............................................................................................. Componentes de codigo de barras ........................................................................... Objetos de acceso a datos ............................................................................................... Regiones y bandas ........................................................................................................... El Band Style Editor ................................................................................................. Componentes data-aware ............................................................................................... El Data Text Editor ................................................................................................... De Text a Memo ........................................................................................................ Calculo de totales ...................................................................................................... Repeticion de datos en paginas ................................................................................ Rave avanzado ....................................................................................................................... Informes maestro-detalle ................................................................................................ Guiones de informes ....................................................................................................... Espejos .............................................................................................................................. Calculos a tope ................................................................................................................ CalcTotal ....................................................................................................................

932 933 934 934 934 935 936 936 938 939 941 942 942 942 943 943 944 944 944 945 946 947 949 949 950 951 951 951 952 953 954 955 955

Parte IV Delphi e Internet

..............................................................................................959 961 19. Programacidn para Internet: sockets e Indy .........................................................

.

Creacion de aplicaciones con sockets ................................................................................. 962 Bases de la programacion de sockets ............................................................................ 963 Configuracion de una red local: direcciones IP ................................................ 964 Nombres de dominio local ........................................................................................ 964 Puertos TCP ............................................................................................................... 964 Protocolos de alto nivel ............................................................................................ 965 Conexiones de socket ................................................................................................ 965 Uso de componentes TCP de Indy ................................................................................. 966 Envio de datos de una base de datos a traves de una conexion de socket ................ 970 Envio y recepcion de correo electronic0 ....................................................................... 973 Correo recibido y enviado .............................................................................................. 975 Trabajo con HTTP ................................................................................................................ 977 Obtencion de contenido HTTP ................................................................................. 978 La M I WinInet .......................................................................................................... 982 Un navegador propio ...................................................................................................... 983 Un sencillo servidor HTTP ............................................................................................ 985 Generacion de HTML ........................................................................................................... 987 Los componentes productores de codigo HTML de Delphi ........................................ 987 Generacion de paginas HTML ....................................................................................... 988 Creacion de paginas de datos ................................................................................. 990 Produccion de tablas HTML .......................................................................................... 991 Uso de hojas de estilo ..................................................................................................... 993 Paginas dinamicas de un servidor personalizado ........................................................ 99420 Programacidn Web con WebBroker y WebSnap

.

....................................................997

Paginas Web dinarnicas .................................................................................................. 998 Un resumen de CGI ........................................................................................................ 999 Uso de bibliotecas dinamicas ....................................................................................... 1000 Tecnologia WebBroker de Delphi ..................................................................................... 1001 Depuracion con Web App Debugger ...................................................................... 1004 Creacion de un WebModule multiproposito ............................................................... 1007 Informes dinamicos de base de datos .......................................................................... 1009 Consultas y formularios ................................................................................................ 1010 Trabajo con Apache ...................................................................................................... 1014 Ejemplos practices .............................................................................................................. 1016 Un contador Web grafico de visitas ............................................................................ 1017 Busquedas con un motor Web de busquedas .............................................................. 1019 1021 WebSnap ............................................................................................................................ ., , . Gestion de varias paglnas ........................................................................................ 1025 Guiones de servidor ...................................................................................................... 1027 Adaptadores ................................................................................................................... 1030

Campos de adaptadores .......................................................................................... Componentes de adaptadores ................................................................................. Uso del Adapterpageproducer ........................................................................... Guiones en lugar de codigo .................................................................................... Encontrar archivos ........................................................................................................ WebSnap y bases de datos .................................................................................................. Un modulo de datos WebSnap ..................................................................................... El DataSetAdapter ........................................................................................................ Edicion de 10s datos en un formulario ........................................................................ Maestro/Detalle en WebSnap ................................................................................... Sesiones, usuarios y permisos ........................................................................................... Uso de sesiones .............................................................................................................. Peticion de entrada en el sistema ............................................................................ Derechos de acceso a una unica pagina ..............................................................

1030 1031 1031 1034 1035 1036 1036 1036 1039 1041 1043 1043 1045 1047

21 Programacibn Web con IntraWeb

.

...........................................................................1049

Introduccion a IntraWeb ............................................................................................... 1050 De sitios Web a aplicaciones Web ........................................................................... 1051 Un primer vistazo interior ...................................................................................... 1054 Arquitecturas IntraWeb .......................................................................................... 1057 Creacion del aplicaciones IntraWeb ............................................................................ 1058 Escritura de aplicaciones de varias paginas .......................................................... 1060 Gestion de sesiones ................................................................................................. 1064 Integracion con WebBroker (y WebSnap) .............................................................. 1066 Control de la estructura ................................................................................................ 1068 Aplicaciones Web de bases de datos ................................................................................. 1070 Enlaces con detalles ...................................................................................................... 1072 Transporte de datos a1 cliente ...................................................................................... 1076

22 Uso de tecnologias XML

.

............................................................................................ 10791080 1080 1082 1083 1084 1085 1087 1090 1094 1098 1099 1103 1108 1109 1110 1111 1116

Presentacion de XML ......................................................................................................... Sintaxis XML basica .................................................................................................. XML bien formado ........................................................................................................ Trabajo con XML ............................................................................