Documentos de Académico
Documentos de Profesional
Documentos de Cultura
WINDEV 21
Documentación Versión 21 (2) -1215
Visite regularmente la página web www.pcsoft.fr, espacio actualizado para ver si hay actualizaciones disponibles.
Introducción |2
Contenido
Dirección de Soporte técnico gratuito: supportgratuit@pcsoft.fr .............................................................................. 2
Introducción ....................................................................................................................................................... 14
Preliminares .................................................................................................................................................... 14
Presentación del curso de auto-formación ......................................................................................................... 14
¿Cómo acceder a la ayuda en línea? ................................................................................................................. 14
Leyenda de los símbolos .................................................................................................................................. 16
Si ya conoce WINDEV 20 … .............................................................................................................................. 16
¿Qué puedo hacer con WINDEV? ...................................................................................................................... 17
Lección 1.1. Descubra WINDEV............................................................................................................................ 19
Lo que va a aprender en esta lección… ............................................................................................................. 19
Presentación ................................................................................................................................................... 20
Lanzamiento de WINDEV ................................................................................................................................. 20
Entorno de desarrollo ....................................................................................................................................... 20
El editor ....................................................................................................................................................... 20
La barra de menú (cinta) en detalle ............................................................................................................... 21
Lección 1.2. Mi primera ventana .......................................................................................................................... 23
Lo que va a aprender en esta lección… ............................................................................................................. 23
Presentación ................................................................................................................................................... 24
Apertura del proyecto ................................................................................................................................... 24
Mi primera ventana: Introducir y mostrar los datos ............................................................................................ 24
Presentación ................................................................................................................................................ 24
Creación de la ventana ................................................................................................................................. 25
Introducir y mostrar el valor introducido ........................................................................................................ 26
Mejoras en la ventana .................................................................................................................................. 29
Lección 1.3. Ventanas más evolucionadas............................................................................................................. 31
Lo que va a aprender en esta lección… ............................................................................................................. 31
Presentación ................................................................................................................................................... 32
Gestionar la introducción de un numérico para hacer un cálculo ......................................................................... 32
Dar formato ................................................................................................................................................. 32
Prueba de la ventana .................................................................................................................................... 33
Uso de un campo Combo para proponer varias posibilidades........................................................................... 33
Creación y uso de un procedimiento. ............................................................................................................. 36
Mostrar la fecha y la hora en tiempo real .......................................................................................................... 36
Presentación ................................................................................................................................................ 36
Creación de la ventana ................................................................................................................................. 36
Establecimiento del timer .............................................................................................................................. 39
Creación de un botón para abandonar la ventana. .......................................................................................... 40
Creación de una ventana con un menú ............................................................................................................. 41
Describir el menú ......................................................................................................................................... 41
Introducción |3
Asociar un código a las opciones del menú .................................................................................................... 43
WINDEV: Conceptos básicos y terminología ...................................................................................................... 44
Conceptos básicos ........................................................................................................................................ 44
Terminología ................................................................................................................................................ 45
Lección 1.4. Bases de programación..................................................................................................................... 47
Lo que va a aprender en esta lección… ............................................................................................................. 47
Introducción .................................................................................................................................................... 48
Declaración de distintos tipos de variables......................................................................................................... 48
Distintos tipos de variables ........................................................................................................................... 48
Declaración de variables y su alcance ............................................................................................................ 48
Instrucciones básicas de WLangage .................................................................................................................. 48
Instrucciones condicionales ........................................................................................................................... 49
Instrucciones de bucle .................................................................................................................................. 50
Comentarios ................................................................................................................................................ 51
Operadores básicos de WLangage .................................................................................................................... 51
Operadores lógicos ....................................................................................................................................... 51
Operadores de comparación.......................................................................................................................... 52
Operadores de indirección ............................................................................................................................ 52
Procedimientos y funciones .............................................................................................................................. 53
Definición .................................................................................................................................................... 53
Procedimiento local ...................................................................................................................................... 53
Procedimiento global y colección de procedimientos. ...................................................................................... 53
¿Cómo elegir si un procedimiento es global o local?........................................................................................ 54
A propósito del paso de parámetros .............................................................................................................. 54
Llamada de un procedimiento ....................................................................................................................... 54
Creación de un procedimiento ....................................................................................................................... 54
¿Un ejercicio de aplicación? Su turno! ............................................................................................................ 55
Tratamientos de las cadenas ............................................................................................................................ 55
Ejemplo práctico .......................................................................................................................................... 55
Principales manipulaciones sobre una cadena de caracteres. ........................................................................... 55
¿Un ejercicio de aplicación? Su turno! ............................................................................................................ 57
Tratamientos de los numéricos ......................................................................................................................... 57
Ejemplo práctico .......................................................................................................................................... 57
Principales manipulaciones sobre los numéricos ............................................................................................. 57
¿Un ejercicio de aplicación? Su turno! ............................................................................................................ 58
Tratamiento de los monetarios ......................................................................................................................... 58
Ejemplo práctico .......................................................................................................................................... 58
Detalles ....................................................................................................................................................... 59
Mezcla de cadenas y numéricos..................................................................................................................... 59
Tratamiento de las fechas y de las horas ........................................................................................................... 60
Las fechas ....................................................................................................................................................... 60
Introducción |4
Ejemplo práctico .......................................................................................................................................... 60
Máscara de introducción y valor devuelto ....................................................................................................... 60
¿En qué día estamos? ................................................................................................................................... 62
¿En qué día estamos, pero el día y el mes en letras? ...................................................................................... 62
¿Cuál es el número de días entre dos fechas? ................................................................................................ 62
¿Qué día de la semana es una fecha concreta? .............................................................................................. 63
Pequeño ejercicio práctico ............................................................................................................................ 63
Manipulación de las variables de tipo Fecha ................................................................................................... 63
¿Un ejercicio de aplicación? Su turno! ............................................................................................................ 64
Las horas ........................................................................................................................................................ 64
Ejemplo práctico .......................................................................................................................................... 64
¿Qué hora es? .............................................................................................................................................. 65
¿Cuánto tiempo ha transcurrido entre dos horas? ........................................................................................... 65
¿Un ejercicio de aplicación? Su turno! ............................................................................................................ 66
Cálculos con las fechas y las horas.................................................................................................................... 66
Lección 1.5. Preguntas/Respuestas ...................................................................................................................... 67
Lo que va a aprender en esta lección… ............................................................................................................. 67
Preguntas/Respuestas ...................................................................................................................................... 68
Lección 2.1. Presentación .................................................................................................................................... 72
Lo que va a aprender en esta lección… ............................................................................................................. 72
Presentación del proyecto realizado en este capítulo .......................................................................................... 73
Lección 2.2. WINDEV y las bases de datos ........................................................................................................... 74
Lo que va a aprender en esta lección… ............................................................................................................. 74
Presentación ................................................................................................................................................... 75
HFSQL ............................................................................................................................................................ 75
Distintos modos de acceso a las bases de datos ................................................................................................ 75
Acceso nativo ............................................................................................................................................... 75
Acceso ODBC Directo .................................................................................................................................... 76
Acceso OLE DB............................................................................................................................................. 76
Acceso ODBC a través de OLE DB ................................................................................................................. 76
Lección 2.3. Proyecto y análisis ............................................................................................................................ 77
Lo que va a aprender en esta lección… ............................................................................................................. 77
Presentación ................................................................................................................................................... 78
Creación del proyecto ...................................................................................................................................... 78
Creación del análisis ........................................................................................................................................ 79
Creación de la descripción del fichero de datos .................................................................................................. 80
Creación de un fichero de datos: Uso de un fichero predefinido. ..................................................................... 80
Creación de un fichero de datos: creación del fichero y sus rúbricas ................................................................ 82
Importación de un fichero CSV ...................................................................................................................... 85
Importación directa de ficheros de datos existentes ....................................................................................... 88
Creación de las relaciones ................................................................................................................................ 88
Introducción |5
Generación del análisis ..................................................................................................................................... 93
Lección 2.4. El RAD completo .............................................................................................................................. 95
Lo que va a aprender en esta lección… ............................................................................................................. 95
¿Qué es el RAD? .............................................................................................................................................. 96
Generación del RAD ......................................................................................................................................... 96
Prueba de la aplicación .................................................................................................................................... 99
Lección 3.1. Presentación .................................................................................................................................. 102
Lo que va a aprender en esta lección… ........................................................................................................... 102
Presentación de la aplicación realizada en este capítulo ................................................................................... 103
Proyectos proporcionados .............................................................................................................................. 103
Proyecto ejemplo ....................................................................................................................................... 103
Proyectos corregidos .................................................................................................................................. 104
Lección 3.2. Ventanas adición y modificación ...................................................................................................... 105
Lo que va a aprender en esta lección… ........................................................................................................... 105
Presentación ................................................................................................................................................. 106
Creación de una ventana que liste los productos.............................................................................................. 106
Creación de la ventana ............................................................................................................................... 106
Creación de los campos .............................................................................................................................. 107
Prueba de la ventana .................................................................................................................................. 109
Creación de una ventana “Ficha Producto” ...................................................................................................... 111
Creación de la ventana ............................................................................................................................... 111
Creación de los campos de entrada ............................................................................................................. 112
Creación de los botones .............................................................................................................................. 113
Mejoras del interface de la ventana. ............................................................................................................ 114
Mostrar la ficha desde la lista de productos .................................................................................................. 117
Gestión de la modificación de un producto ...................................................................................................... 118
Modificar la imagen del producto ................................................................................................................. 118
Validación de las modificaciones del producto .............................................................................................. 119
Probar la modificación de un producto ......................................................................................................... 120
Creación de un nuevo producto ...................................................................................................................... 120
Añadir un botón ......................................................................................................................................... 121
Añadir en el fichero de datos....................................................................................................................... 121
Probar la adición de un producto. ................................................................................................................ 122
Visualizar los registros introducidos ............................................................................................................. 123
Lección 3.3. Búsqueda simple y recorrido por los registros .................................................................................. 125
Lo que va a aprender en esta lección… ........................................................................................................... 125
Presentación ................................................................................................................................................. 126
Modificación de la ventana. Uso de un campo Pestaña ..................................................................................... 126
Creación del campo Pestaña ....................................................................................................................... 126
Modificaciones del campo Pestaña ............................................................................................................... 128
Implementación de la búsqueda ..................................................................................................................... 130
Introducción |6
Zona de visualización de las informaciones encontradas ............................................................................... 130
Búsqueda idéntica ...................................................................................................................................... 131
Búsqueda genérica ..................................................................................................................................... 135
Recorrido de las fichas ................................................................................................................................ 136
Prueba de la ventana .................................................................................................................................. 138
Lección 3.4. Búsqueda multi-criterio ................................................................................................................... 139
Lo que va a aprender en esta lección… ........................................................................................................... 139
Presentación ................................................................................................................................................. 140
Creación de la consulta para buscar los pedidos .............................................................................................. 140
Creación de la consulta ............................................................................................................................... 140
Prueba de la consulta ................................................................................................................................. 143
Uso de parámetros en la consulta................................................................................................................ 143
Prueba de la consulta parametrizada ........................................................................................................... 146
Creación del interface para realizar una búsqueda multi-criterio ....................................................................... 146
Modificaciones del campo pestaña ............................................................................................................... 146
Creación de los campos de parametrización de los criterios y mostrar el resultado ......................................... 147
Lección 3.5. Imprimir el contenido de un campo Tabla ........................................................................................ 157
Lo que va a aprender en esta lección… ........................................................................................................... 157
Presentación ................................................................................................................................................. 158
Impresión del contenido de un campo Tabla ................................................................................................... 158
Impresión directa mediante la FAA (Funcionalidades Automáticas de la Aplicación) ........................................ 158
Creación de un informe automático sobre un campo Tabla ........................................................................... 160
Lección 3.6. Imprimir un pedido......................................................................................................................... 162
Lo que va a aprender en esta lección… ........................................................................................................... 162
Presentación ................................................................................................................................................. 163
Creación del informe “Bono de pedido” ........................................................................................................... 163
Creación de la consulta ............................................................................................................................... 163
Creación del informe basado en una consulta............................................................................................... 165
Modificación del informe “Bono de pedido” .................................................................................................. 171
Mostrar el informe impreso desde una opción de menú .................................................................................... 173
Creación del menú contextual ..................................................................................................................... 173
Asociación del menú contextual al campo Tabla ........................................................................................... 174
Prueba de impresión ................................................................................................................................... 174
Lección 3.7. Imprimir una lista de clientes .......................................................................................................... 176
Lo que va a aprender en esta lección… ........................................................................................................... 176
Presentación ................................................................................................................................................. 177
Creación del informe ...................................................................................................................................... 177
Lanzamiento de la impresión de un informe por programación ......................................................................... 183
Lección 3.8. Estadísticas: Campos Gráfico y Tablero Cruzado Dinámico ................................................................ 185
Lo que va a aprender en esta lección… ........................................................................................................... 185
Presentación ................................................................................................................................................. 186
Introducción |7
Mostrar los datos en un campo Gráfico ........................................................................................................... 186
Selección de datos a mostrar en el campo Gráfico ........................................................................................ 186
Creación del campo Gráfico......................................................................................................................... 188
Creación de tableros de síntesis mediante el campo Tablero Cruzado Dinámico ................................................. 192
Creación del campo Tablero Cruzado Dinámico ............................................................................................ 192
Prueba del Tablero Cruzado Dinámico ......................................................................................................... 194
Lección 3.9. Enviar un email .............................................................................................................................. 197
Lo que va a aprender en esta lección… ........................................................................................................... 197
Presentación ................................................................................................................................................. 198
Una ventana para enviar los emails................................................................................................................. 199
Creación de la ventana ............................................................................................................................... 199
Creación de los campos de parametrización del envío ................................................................................... 199
Creación de los campos que permitirán introducir las características del email ............................................... 200
Envío del email ........................................................................................................................................... 202
Mejoras en la ventana .................................................................................................................................... 203
Cierre de la ventana ................................................................................................................................... 203
Dar forma a la ventana ............................................................................................................................... 203
Apertura no modal de la ventana. ............................................................................................................... 204
Lección 3.10. Identificar al usuario: el Groupware Usuario ................................................................................... 206
Lo que va a aprender en esta lección… ........................................................................................................... 206
Presentación ................................................................................................................................................. 207
Integrar el groupware usuario ........................................................................................................................ 207
Configurar el groupware usuario ..................................................................................................................... 209
Creación de los usuarios y los grupos. ......................................................................................................... 210
Definición de los derechos. ......................................................................................................................... 212
Prueba de la aplicación ............................................................................................................................... 214
Desmarcar la gestión del groupware usuario ................................................................................................... 215
Lección 3.11. Reutilización del código mediante los componentes externos ........................................................... 216
Lo que va a aprender en esta lección… ........................................................................................................... 216
Presentación ................................................................................................................................................. 217
Trabajo en equipo ...................................................................................................................................... 217
Los proyectos voluminosos ......................................................................................................................... 217
Las bases de datos accedidas por varios proyectos ....................................................................................... 217
Tratamientos utilizados en varios proyectos ................................................................................................. 217
La posibilidad de difundir una funcionalidad o un conjunto de funcionalidades ............................................... 218
Componente externo multi-productos .......................................................................................................... 218
Paso a paso................................................................................................................................................... 218
Paso 1: Creación de un componente externo ............................................................................................... 218
Paso 2: Uso del componente externo ........................................................................................................... 222
Distribución de un componente externo. ......................................................................................................... 225
Distribución simple ..................................................................................................................................... 225
Introducción |8
Distribución profesional .............................................................................................................................. 225
Lección 3.12. Consumir un WEBSERVICE ............................................................................................................ 226
Lo que va a aprender en esta lección… ........................................................................................................... 226
Presentación ................................................................................................................................................. 227
Ejemplo práctico ........................................................................................................................................ 227
Importación de un WebService ....................................................................................................................... 227
Consumo de un WebService ........................................................................................................................... 229
Lección 3.13. Siga la evolución de sus aplicaciones ............................................................................................. 231
Lo que va a aprender en esta lección… ........................................................................................................... 231
Presentación ................................................................................................................................................. 232
El tablero de a bordo ..................................................................................................................................... 232
Pruebas automáticas ...................................................................................................................................... 232
Lección 3.14. Desplegar la aplicación ................................................................................................................. 236
Lo que va a aprender en esta lección… ........................................................................................................... 236
Presentación ................................................................................................................................................. 237
Creación del ejecutable .................................................................................................................................. 237
Creación de la instalación .............................................................................................................................. 240
Instalación de una aplicación .......................................................................................................................... 243
Los distintos tipos de despliegue..................................................................................................................... 244
Presentación .............................................................................................................................................. 244
Instalación con actualización de red. ........................................................................................................... 245
Instalación con actualización por internet..................................................................................................... 245
Instalación Multi-sitio .................................................................................................................................. 246
Lección 3.15. Difundir “Informes y Consultas” con sus aplicaciones ...................................................................... 247
Lo que va a aprender en esta lección… ........................................................................................................... 247
Presentación del software “Informes & Consultas” ........................................................................................... 248
Lanzamiento del software “Informes & Consultas” ........................................................................................... 248
Difundir el software “Informes & Consultas” con su aplicación .......................................................................... 248
Parametrización del proyecto ...................................................................................................................... 248
Parametrización del análisis ........................................................................................................................ 249
Parametrización de los informes .................................................................................................................. 250
Parametrización de las consultas ................................................................................................................. 250
Creación del ejecutable y difusión de la aplicación ........................................................................................ 251
Instalar y utilizar el software “Informes y Consultas”........................................................................................ 252
Instalación de la aplicación ......................................................................................................................... 252
Prueba de la aplicación ............................................................................................................................... 253
Conclusión .................................................................................................................................................... 255
Lección 3.16. Gestionar el multi-lenguaje ........................................................................................................... 256
Lo que va a aprender en esta lección… ........................................................................................................... 256
¿Qué es una aplicación multi-lenguaje? ........................................................................................................... 257
Seleccione los idiomas del proyecto ................................................................................................................ 257
Introducción |9
Internalización del análisis .............................................................................................................................. 258
Internalización de los elementos del proyecto .................................................................................................. 260
Internalización de una imagen .................................................................................................................... 261
Internacionalización de los campos. ............................................................................................................. 262
Internacionalización de un mensaje de programación ................................................................................... 262
Internacionalización de los menús ............................................................................................................... 263
Las herramientas de traducción ...................................................................................................................... 264
Entrada directa de las traducciones ............................................................................................................. 264
Traducción con WDMSG y WDTRAD ............................................................................................................ 264
Otros elementos para traducir: los mensajes de framework .......................................................................... 265
Programación del cambio de lenguaje ............................................................................................................. 265
Añadir una opción de menú ........................................................................................................................ 265
Programación ............................................................................................................................................. 266
Prueba del proyecto ................................................................................................................................... 266
Lección 3.17. GDS ............................................................................................................................................. 269
Lo que va a aprender en esta lección… ........................................................................................................... 269
Introducción .................................................................................................................................................. 270
GDS (Gestor de fuentes) ................................................................................................................................ 270
Principio del GDS ........................................................................................................................................ 270
Creación de la base de fuentes.................................................................................................................... 271
Integración de un proyecto en el GDS ............................................................................................................. 271
Añadir el proyecto en el GDS....................................................................................................................... 271
Apertura del proyecto desde el GDS ............................................................................................................ 274
Configuración del GDS ................................................................................................................................ 275
Manipulación del proyecto mediante el GDS .................................................................................................... 276
Modificación de un parámetro del proyecto .................................................................................................. 276
Modificar una ventana del proyecto. ............................................................................................................... 278
Reintegración del elemento extraído ............................................................................................................ 279
Sincronización del proyecto ......................................................................................................................... 280
Modo desconectado (o nómada) ................................................................................................................. 280
Administrador del GDS ................................................................................................................................ 281
Desconexión del GDS.................................................................................................................................. 281
Conclusión .................................................................................................................................................... 282
Lección 4.1. Introducción .................................................................................................................................. 285
Lo que va a aprender en esta lección… ........................................................................................................... 285
Presentación ................................................................................................................................................. 286
¿Para qué pasar un sitio a modo HFSQL Cliente/Servidor? ................................................................................ 286
Lección 4.2. Establecimiento de una base de datos Cliente/Servidor ..................................................................... 287
Lo que va a aprender en esta lección… ........................................................................................................... 287
Presentación ................................................................................................................................................. 288
Instalación de un servidor HFSQL local............................................................................................................ 288
Introducción |10
Creación de una aplicación utilizando una base de datos HFSQL Cliente/Servidor............................................... 288
Adaptación de un sitio para utilizar una base de datos HFSQL Cliente/Servidor .................................................. 289
Presentación .............................................................................................................................................. 289
Adaptación del ejemplo .............................................................................................................................. 289
Funcionalidades disponibles en modo HFSQL Cliente/Servidor .......................................................................... 292
Lección 4.3. Administrar una base de datos Cliente/Servidor ................................................................................ 293
Lo que va a aprender en esta lección… ........................................................................................................... 293
Presentación ................................................................................................................................................. 294
Configuración de los puestos .......................................................................................................................... 294
El Centro de Control HFSQL ............................................................................................................................ 294
Crear una cuenta usuario en el Centro de Control HFSQL ................................................................................. 295
Copia de seguridad de la base de datos .......................................................................................................... 299
Conclusión .................................................................................................................................................... 300
Lección 4.4. Instalación de cliente ...................................................................................................................... 301
Lo que va a aprender en esta lección… ........................................................................................................... 301
Presentación ................................................................................................................................................. 302
Lanzamiento del asistente de creación de instalación ....................................................................................... 302
Lección 5.1. Presentación .................................................................................................................................. 304
Lo que va a aprender en esta lección… ........................................................................................................... 304
Presentación ................................................................................................................................................. 305
Apertura del proyecto ................................................................................................................................. 305
Lección 5.2. Auditorías del proyecto ................................................................................................................... 306
Lo que va a aprender en esta lección… ........................................................................................................... 306
¿Qué es una auditoría? .................................................................................................................................. 307
Auditoría estática. .......................................................................................................................................... 307
Procedimiento no ejecutado ........................................................................................................................ 308
Elemento huérfano ..................................................................................................................................... 309
Consulta a optimizar ................................................................................................................................... 310
Limpieza del proyecto ................................................................................................................................. 311
Auditoría dinámica. ........................................................................................................................................ 311
Lección 5.3. Analizador de actuaciones ............................................................................................................... 314
Lo que va a aprender en esta lección… ........................................................................................................... 314
Presentación ................................................................................................................................................. 315
Lanzar el analizador de actuaciones ................................................................................................................ 315
Análisis del resultado ..................................................................................................................................... 316
Lección 5.4. Depuración de un proyecto ............................................................................................................. 320
Lo que va a aprender en esta lección… ........................................................................................................... 320
Presentación ................................................................................................................................................. 321
Utilizar el depurador ...................................................................................................................................... 321
Lección 6.1. Presentación .................................................................................................................................. 326
Lo que va a aprender en esta lección… ........................................................................................................... 326
Introducción |11
Presentación ................................................................................................................................................. 327
Ejemplo práctico ........................................................................................................................................ 327
Lección 6.2. Gestión automática de errores ........................................................................................................ 328
Lo que va a aprender en esta lección… ........................................................................................................... 328
Presentación ................................................................................................................................................. 329
Funcionamiento.......................................................................................................................................... 329
Establecimiento .......................................................................................................................................... 329
Tipo de errores a los que concierne ............................................................................................................. 329
Gestión automática de los errores: un ejemplo didáctico .................................................................................. 330
Lección 6.3. Manipular ficheros externos ............................................................................................................ 334
Lo que va a aprender en esta lección… ........................................................................................................... 334
Presentación ................................................................................................................................................. 335
Manipulación de los fichero texto o CSV .......................................................................................................... 335
Presentación .............................................................................................................................................. 335
Ejemplo práctico ........................................................................................................................................ 335
Manipulación de los directorios ....................................................................................................................... 336
Ejemplo práctico ........................................................................................................................................ 336
Manipulación de los ficheros XML .................................................................................................................... 336
Presentación .............................................................................................................................................. 336
Ejemplo práctico ........................................................................................................................................ 337
Manipulación de los ficheros XLS .................................................................................................................... 338
Ejemplos prácticos ..................................................................................................................................... 338
Lección 6.4. Compilación dinámica ..................................................................................................................... 340
Lo que va a aprender en esta lección… ........................................................................................................... 340
Presentación ................................................................................................................................................. 341
Ejemplo ........................................................................................................................................................ 341
Lección 6.5. Eventos Windows ........................................................................................................................... 343
Lo que va a aprender en esta lección… ........................................................................................................... 343
Introducción .................................................................................................................................................. 344
Ejemplo práctico ........................................................................................................................................ 344
Tratamientos opcionales propuestos por WINDEV ............................................................................................ 344
Eventos de Windows ...................................................................................................................................... 345
Ejercicio: Detectar el clic sobre una lista ...................................................................................................... 345
Lección 6.6. Los hilos ........................................................................................................................................ 348
Lo que va a aprender en esta lección… ........................................................................................................... 348
Definición ...................................................................................................................................................... 349
Ejemplo ........................................................................................................................................................ 349
Lección 6.7. Los sockets .................................................................................................................................... 350
Lo que va a aprender en esta lección… ........................................................................................................... 350
Presentación ................................................................................................................................................. 351
Aplicación Servidor: caso de un servidor simplificado ....................................................................................... 351
Introducción |12
Creación del socket .................................................................................................................................... 351
Intercambio de datos ................................................................................................................................. 351
Cierre del socket ........................................................................................................................................ 351
Aplicación Cliente........................................................................................................................................... 352
Conexión al servidor ................................................................................................................................... 352
Intercambio de datos ................................................................................................................................. 352
Fin de comunicación ................................................................................................................................... 352
Ejemplo práctico ............................................................................................................................................ 352
Prueba del ejemplo .................................................................................................................................... 352
Análisis del código utilizado ......................................................................................................................... 352
Lección 6.8. El FTP ............................................................................................................................................ 354
Lo que va a aprender en esta lección… ........................................................................................................... 354
Presentación ................................................................................................................................................. 355
Conectarse a un servidor FTP ......................................................................................................................... 355
Enviar un fichero ........................................................................................................................................... 356
Listar los ficheros presentes en un servidor FTP............................................................................................... 356
Recuperar un fichero ..................................................................................................................................... 357
Desconectarse de un servidor FTP .................................................................................................................. 357
Lección 6.9. La POO (Programación Orientada a Objetos).................................................................................... 358
Lo que va a aprender en esta lección… ........................................................................................................... 358
Conceptos ..................................................................................................................................................... 359
Las clases .................................................................................................................................................. 359
Los objetos ................................................................................................................................................ 359
Los miembros ............................................................................................................................................ 359
Los métodos .............................................................................................................................................. 359
Noción de herencia ..................................................................................................................................... 359
Constructor y Destructor ............................................................................................................................. 359
Encapsulación de datos .............................................................................................................................. 359
Ejemplo ..................................................................................................................................................... 359
Crear un programa orientado a objeto ......................................................................................................... 360
Ejemplo simple .............................................................................................................................................. 360
Declarar una clase ...................................................................................................................................... 360
Describir los métodos ................................................................................................................................. 361
Describir los métodos ................................................................................................................................. 361
Diagrama UML ............................................................................................................................................... 362
Conclusión ........................................................................................................................................................ 364
Introducción |13
Introducción
Preliminares
Atención: Este manual es un curso de auto-formación. Es aconsejable consulta la ayuda en línea cuando utiliza
WINDEV.
El manual del curso de auto-formación tiene por objetivo hacerle descubrir WINDEV, de familiarizarle con los editores
y aprender los conceptos de WINDEV.
Este manual NO ES EXHAUSTIVO de las posibilidades de WINDEV.
Dedique al menos algunas horas para seguir este curso y para aprender WINDEV: Las rentabilizará rápidamente.
Si intenta arrancar el desarrollo de una aplicación sin haber seguido este curso, perderá su tempo, mucho más que
las horas que pueda pasar en este curso de auto-formación.
Este curso se ha concebido para poder seguirlo de dos maneras:
Seguir todos los ejercicios detallados en las lecciones del curso (método aconsejado).
Si tiene prisa y ya tiene una experiencia significativa, puede simplemente leerlo sin ejecutar los ejercicios
(todas las manipulaciones están ilustradas). A pesar de todo, para que los conceptos sean asimilados más
rápidamente, es preferible ejecutar las manipulaciones.
WINDEV está en permanente evolución y las imágenes de las ventanas que ilustran el curso, pueden diferir de las
ventanas mostradas por el producto durante las distintas manipulaciones.
Cada ventana de diálogo mostrada por WINDEV tiene un botón permitiendo acceder a la página de ayuda
correspondiente.
El menú de ayuda de los editores (opción “Ayuda” disponible en el panel “Inicio”, en el grupo “Ayuda en línea” del
menú de WINDEV) permite lanzar la ayuda en línea.
Introducción |14
La ayuda puede mostrarse:
En un “navegador de ayuda” específico:
Introducción |15
La ayuda en línea de WINDEV, WEBDEV y WINDEV Mobile en Internet es accesible desde cualquier
puesto que disponga de un acceso a Internet, sin que el producto esté necesariamente instalado.
Esta ayuda se actualiza regularmente.
Notas
El contenido de la ayuda: ayuda común a WINDEV, WEBDEV y WINDEV Mobile o ayuda del producto en
curso de utilización.
Hay disponible un ejemplo para completar el curso. Los ejemplos están disponibles a través de la ventana
de inicio de WINDEV.
Este símbolo presenta una “Astucia”: la lectura del texto asociado está vivamente aconsejada.
Si ya conoce WINDEV 20 …
Si conoce ya WINDEV 20, el seguir este curso solo le reportará beneficios: será una buena ocasión de “revisar” las
posibilidades de WINDEV!
Introducción |16
¿Qué puedo hacer con WINDEV?
WINDEV es un AGL (Atelier de Génie Logiciel – Taller de Ingeniería de Software). Le permitirá desarrollar aplicaciones
en todos los campos:
Gestión de stocks, inventario, trazabilidad de las mercancías.
Regulación y seguimiento de máquinas en una cadena de producción.
Toma de pedidos para el tratamiento rápido de venta pública (feria, escuela, stand, …)
Fichas de clientes
Herramientas de ayuda a la toma de decisiones de urgencia en un teléfono portátil
Verificación de la identidad de los visitantes de un evento: salón, presentación de productos, …
Medicina o veterinaria en movimiento
Toma de información en la vía pública: salón profesional, callejeo para un sondeo, estadio, …
WINDEV es un entorno completo de desarrollo que integra todas las herramientas necesarias para el ciclo de
realización de una aplicación.
Al contrario que otros lenguajes de desarrollo tradicionales, no se necesitará buscar y reunir los módulos para poder
concebir, probar e instalar una aplicación.
El L5G (Lenguaje de 5ª generación) de WINDEV, el WLangage, le sorprenderá por su simplicidad: unas pocas horas
serán suficientes para aprender el lenguaje, una semana será suficiente para mostrar toda su potencia!.
Al estar en francés, WLangage (disponible también en inglés) le hará ganar tiempo!.
Introducción |17
CAPÍTULO 1
Descubriendo
WINDEV
Lanzamiento de WINDEV
Lance WINDEV 21 (si no lo había hecho ya).
Si no había lanzado nunca WINDEV 21, se abrirá un asistente de bienvenida:
o Si posee una versión antigua de WINDEV, este asistente le permitirá recuperar las configuraciones
existentes.
o Si es un nuevo usuario, este asistente le permitirá parametrizar su entorno. Podrá así elegir la
configuración de su entorno. Podrá así la configuración de pantalla a utilizar y parametrizar los Centros de
Control. Para más detalles, consulte la ayuda en línea.
Si ya ha lanzado WINDEV 21, identifíquese si fuera necesario. Se abre el entorno de desarrollo. Aparece la
ventana de bienvenida. Esta ventana de bienvenida permite:
o Crear un proyecto
o Abrir un proyecto existente
o Abrir un ejemplo
o Abrir uno de los proyectos del curso de auto-formación.
Detengámonos un instante en el entorno de desarrollo de WINDEV. Para ello, desde la ventana de bienvenida:
o Clique sobre “Curso de auto-formación”.
o Clique sobre “Aplicación completa (con ventanas)”.
o El proyecto correspondiente se abrirá en el editor.
Entorno de desarrollo
El editor
En entorno de desarrollo de WINDEV está formado por un interface específico y de varios editores que permiten crear
los distintos elementos de sus aplicaciones.
Así, el editor de ventanas permite crear las ventanas, el editor de informes permite crear informes, …
Todos los editores tienen el mismo entorno:
Los distintos paneles de la cinta permiten acceder a las opciones de los distintos editores para el proyecto en curso.
Varios tipos de paneles están disponibles:
El panel en curso: La pestaña del panel aparece en blanco y un trazo naranja pálido se muestra arriba de la
pestaña.
Los paneles contextuales, específicos al elemento en curso: el nombre del panel aparece en azul.
Los paneles disponibles: su nombre aparece en negro.
En función del panel seleccionado, las opciones que se muestran en la cinta cambian. Hay disponibles varios tipos de
opciones:
Opciones a marcar
Botones a clicar
Botones con flecha que permiten desplegar opciones. Hay dos tipos de botones de flecha:
o Botones de flecha que permiten simplemente desplegar un menú
o Botones de flecha que permiten desplegar un menú (clic sobre la flecha) o efectuar una acción por
defecto (clic sobre el icono del botón).
Las opciones están reunidas por grupos. Cada grupo de opciones tiene un nombre y puede tener un botón de
agrupación . Este botón permite efectuar una acción específica según el grupo en curso: mostrar la descripción
del elemento en curso, mostrar la ayuda, …
En este curso, para designar una opción de menú, hablaremos de paneles y de grupos.
Por ejemplo:
Para mostrar la ayuda, en el panel “Inicio”, dentro del grupo “Ayuda en línea”, clique sobre “Ayuda”.
Las ventanas permiten mostrar o introducir las informaciones en la pantalla. El usuario puede actuar
Notas
Algunos ejemplos le permitirán conocer las bases de la programación en WINDEV y le permitirán a continuación
abordar sujetos más completos.
Las lecciones de este primer capítulo le permitirán:
Crear ventanas sencillas
Manipular cadenas, numéricos y monetarios
Manipular fechas y horas.
Apertura del proyecto
Lance WINDEV 21 (si no lo había hecho ya). Si es necesario, muestre la ventana de bienvenida de WINDEV:
Utilice la combinación de teclas [CTRL]+[>]
Abra el proyecto “WD Mis Primeras Ventanas”
Para ello, en la ventana de bienvenida, clique sobre “Curso de Auto-formación” y seleccione el primer proyecto
“Mis primeras ventanas (Ejercicio)”.
Astucia: Si la ventana de bienvenida no es visible, en el panel “Inicio”; dentro del grupo “Ayuda en línea”,
despliegue “Guía de Auto-formación” y luego seleccione la opción “Mis primeras ventanas (Ejercicio)”.
En este capítulo, nos concentraremos en la creación de ventanas simples. El proyecto “WD Mis
Importante
Hay disponible un proyecto corregido. Este proyecto contiene las distintas ventanas creadas en esta
lección. Para abrir el proyecto corregido:
En la ventana de bienvenida, clique sobre “Curso de auto-formación” y selecciones el proyecto
Corregido
Esta ventana permitirá al usuario introducir su nombre y mostrar un mensaje de bienvenida con el botón “Mostrar”.
Podrá tener la tentación de decir que esto es muy sencillo, muy básico, pero le aconsejamos que realice esta ventana.
Se arriesga a sorprenderse por la facilidad y la intuitividad del editor de WINDEV. Además esta ventana le permitirá
descubrir los conceptos fundamentales para el seguimiento de este curso.
2. Aparece la ventana de creación de un nuevo elemento. Esta ventana permite crear todos los elementos que
pueden asociarse a un proyecto.
3. Clique sobre “Ventana”, luego sobre “Ventana”. Aparece el asistente de creación de ventanas.
4. Seleccione “En blanco” en la lista de ventanas “estándar” mostrada a la izquierda. En la lista de plantillas
presentes a la derecha, la plantilla “Elegante” está seleccionada por defecto. Puede elegir cualquier plantilla
de las propuestas en la lista.
En este capítulo, nos concentraremos en la creación de ventanas simples. El proyecto “WD Mis
Primeras Ventanas” es un proyecto vacío, ya creado. La creación de un proyecto, se abordará en una
Nota
próxima lección.
Vamos a definir las características básicas de la ventana: su nombre y el título que se mostrará en la barra de
título.
Haga doble clic sobre la ventana que acaba de crearse. La ventana de descripción se muestra en la pestaña
“General”. El nombre propuesto por defecto para la ventana es “WIN_SinNombre1”.
Observe bien el nombre de la ventana que WINDEV le propone por defecto: este nombre empieza
por las letras “WIN_”. Este prefijo se añade automáticamente porque el proyecto utiliza una carta de
programación.
La carta de programación permite definir un prefijo para cada tipo de objeto y así identificar
rápidamente el elemento manipulado:
Nota
El editor de código propone distintos tratamientos para cada tipo de campo. Estos tratamientos
corresponden a los eventos relacionados con el campo.
Así, para el campo “Botón”, se muestran dos tratamientos:
Nota
Inicialización
Clic sobre el botón, que se ejecuta cuando el usuario clica en el botón.
Observación: Algunos tratamientos suplementarios pueden añadirse si fuera necesario.
4. En el tratamiento “Clic sobre BTN_Mostrar”, introduzca el siguiente código (no olvide el espacio después de
“días”, porque si no, el nombre aparecerá pegado al texto:
Info (“Buenos días “ + EDT_Nombre)
Observación sobre la ayuda a la introducción: Cuando introduce los dos primeros caracteres, WINDEV propone
todas las palabras del vocabulario WLangage que contienen estos caracteres. La asistencia al desarrollador es muy
potente. No puede equivocarse introduciendo el nombre de un elemento: los errores de sintaxis se minimizan. Basta
con seleccionar la palabra deseada y validar con la tecla [ENTER]. De este modo, podrá concentrarse solo en el
algoritmo.
Es por ello que la carta de programación es muy importante. Todos los elementos manipulados en el
código de la aplicación utilizan el mismo nombre y así pueden ser fácilmente encontrados cuando se
Nota
introduce el código.
Cuando introduce el código en el editor de código, observará que los distintos elementos
introducidos utilizan distintos colores. Esta es la coloración sintáctica. El editor de códigos permite de
este modo identificar rápidamente los distintos elementos manipulados por el código:
Nota
La función Info muestra el mensaje pasado en parámetro. Nuestro mensaje está construido a partir del texto
“Buenos días “ y el valor del campo “EDT_Nombre”. El signo “+” indica una operación llamada “concatenación” entre
dos cadenas.
En este ejemplo, el texto introducido se muestra en una ventana del sistema, pero también se puede
Nota
Por defecto, los caracteres se introducirán en mayúsculas o minúsculas según la posición de la tecla
[CAPSLOCK] del teclado. Este tipo de introducción puede generar problemas en una búsqueda, por
ejemplo.
Nota
Acaba de crear rápidamente y con éxito su primera ventana. Siguiendo el curso vamos a descubrir nuevos conceptos
de WINDEV.
Valide el mensaje y cierre la ventana de prueba (clique sobre el aspa arriba a la derecha de la ventana). El editor
reaparecerá.
Cierre la ventana “WIN_Entrada” mostrada en el editor: en el panel “Inicio”, dentro del grupo “General”, clique
sobre “Cerrar”.
Cierre el proyecto: En el panel “Inicio”, dentro del grupo “General”, despliegue “Cerrar” y seleccione “Cerrar el
proyecto”.
Dar formato
Cree una nueva ventana en blanco:
1. Clique sobre en los botones de acceso rápido. La ventana de creación de un nuevo elemento se mostrará:
Clique sobre “Ventana” y luego sobre “Ventana”. Se mostrará el asistente de creación de ventanas.
2. Seleccione en “En blanco” y la plantilla “Elegante”.
3. Valide. La ventana se creará automáticamente en el editor.
4. Haga un clic sobre el botón derecho en la ventana y seleccione la opción “Descripción”.
5. Seleccione la pestaña “General”. Indique el nombre de la ventana “WIN_Calculo” y el título “Ejemplo de
cálculo”. Valide la ventana de descripción.
6. Guarde la ventana: Clique sobre en los botones acceso rápido.
7. Valide las informaciones mostradas en la ventana para guardar clicando sobre el botón verde.
El cálculo del importe TTC se efectuará a cada modificación del campo que contiene el importe libre de tasas.
Para realizar el cálculo del importe TTC:
1. Muestre el código del campo “EDT_PrecioHT” (Opción “Código” del menú contextual del campo). Los distintos
tratamientos asociados por defecto al campo de edición aparecerán:
o Inicialización: ejecutado al abrir la ventana
o Entrada en el campo: ejecutado cuando entra el cursor de introducción en el campo.
o Salida del campo: ejecutado cuando se cambia de campo (tecla [TAB], cambio de campo por el ratón, …)
o A cada modificación del campo: Ejecutado cuando cambia el contenido del campo (entrada o pulsación de
una letra, por ejemplo).
2. En el tratamiento “A cada modificación “, introduzca el siguiente código:
// TVA fijado a 20% para el ejemplo
// Esto podría ser una variable cualquiera proveniente de una base de datos
EDT_PrecioTTC = EDT_PrecioHT + 1.20
3. Cierre la ventana de código (cruz de cierre de la ventana de código).
4. Guarde la ventana.
Prueba de la ventana
Probar la ventana:
6. Pruebe su ventana ( en los botones de acceso rápido) y seleccione los distintos valores en el campo
Combo.
6. Para finalizar, hay que sustituir el segundo código de cálculo de TVA (está en el tratamiento “A cada
modificación” del campo “Precio HT”) para que llame al procedimiento “CalculoTVA()”.
7. Ahora sí que está terminado. Puede guardar y probar su ventana para verificar que todo funcione
correctamente.
Esta ventana muestra la fecha y la hora. Sencillo! No obstante, la hora se actualiza en tiempo real. Para ello, WINDEV
pone a su disposición los “Timers”.
Un timer permite ejecutar en paralelo una tarea que deberá lanzarse periódicamente (adquisición de datos en tarea
de fondo, refresco automático de datos, lanzamiento de un programa a una hora determinada, …).
Pero empecemos por crear nuestra ventana!
Creación de la ventana
Cree una nueva ventana en blanco:
1. Clique sobre en los botones de acceso rápido. Se abre la ventana de creación de un nuevo elemento:
clique sobre “Ventana” y luego sobre “Ventana”. Aparece el asistente de creación de ventanas.
2. Seleccione “En blanco” en la lista de ventanas “estándar” mostradas a la izquierda. En la lista de plantillas que
hay a la derecha, está propuesta automáticamente la plantilla “Elegante”.
Capítulo 1 – Descubriendo WINDEV |36
3. Valide. La ventana se crea automáticamente en el editor.
Guarde la ventana clicando sobre en los botones de acceso rápido. En la ventana que aparece, introduzca:
El título del elemento: “Actualización de la hora con el timer”
El nombre del elemento: “WIN_Timer”.
Por defecto, la máscara de entrada del campo corresponde a la máscara numérica definida por el
proyecto. Esta información se selecciona en la pestaña “Idiomas” de la descripción del proyecto. Para
mostrar la descripción del proyecto, en el panel “Proyecto”, dentro del grupo “Proyecto”, clique sobre
“Descripción”.
Nota
De este modo, la misma máscara se utiliza automáticamente en todos los campos numéricos de la
aplicación. Esta funcionalidad es muy útil en las aplicaciones multi-lenguaje.
2. Seleccione la máscara de visualización “DDDD DD MMMMM AAAA”. Esta máscara de visualización permite
mostrar la fecha en una forma literal “Martes, 16 Julio 2015”.
3. Este campo permite solamente mostrar la fecha. No se podrá efectuar ninguna entrada. Para ello, bastará con
indicar que el campo está en modo “Solo visualización” en la pestaña “IHM” de la ventana de descripción del
campo.
4. Valide.
La máscara que hemos elegido permite mostrar la fecha con todas las letras. Para evitar mostrar una fecha
truncada, vamos a agrandar la anchura del campo:
1. Seleccione el campo de edición.
2. Agrande el campo en anchura con la ayuda de las trazadas de redimensionamiento.
Para mostrar la fecha del día en el campo de tipo Data, hay que inicializarlo con esta fecha. Esta operación se realiza
por programación.
Muestre el código asociado al campo que acaba de crear:
1. Seleccione el campo de edición: hay que clicar bajo con el ratón.
2. Muestre el menú contextual (clic derecho del ratón) y seleccione la opción “Código”. Aparecerá el editor de
código.
3. En el tratamiento “Inicialización de EDT_Dia”, introduzca el siguiente código:
MySelf = Today()
Examinemos el código de inicialización:
MySelf es una palabra clave que representa el nombre del campo en curso. MySelf permite introducir un
código local (tratamiento de un campo, …) o global (procedimiento global, clase, …) independiente del campo
en curso.
Today es una función WLangage que permite (como su nombre indica) obtener la fecha del día.
El signo “=” permite afectar el campo en curso con el resultado de la función WLangage Today.
Guarde la ventana y pruébela (clicando sobre y luego sobre en los botones de acceso rápido).
Guarde la ventana y pruébela (clicando sobre y luego sobre en los botones de acceso rápido). La fecha y
la hora se muestran. Ahora vamos a actualizar la hora en el transcurso del tiempo.
Establecimiento del timer
Para actualizar el campo Hora, vamos a llamar cada segundo a un procedimiento que modificará el campo Hora con la
hora actual. Este procedimiento será local de la ventana: en efecto, este procedimiento solo será llamado en esta
ventana.
En la ventana de cálculo, ya hemos creado un procedimiento a partir de un código existente. Ahora, vamos a detallar
los distintos pasos de creación de un procedimiento.
Observación: Siguiendo este curso, veremos en detalle los distintos tipos de procedimientos.
Para crear un procedimiento local:
1. Seleccione en el panel “Explorador del proyecto” el nombre de la ventana “WIN_Timer”.
2. Clique sobre l flecha a la izquierda para mostrar los distintos elementos.
3. Clique sobre “Procedimientos locales”. Se seleccona la carpeta.
4. En el menú contextual de “Procedimientos locales” (clic derecho), seleccione la opción “Nuevo procedimiento
local”.
5. En la ventana que aparece, indique el nombre del procedimiento “PonerEnHora” y clique sobre el botón
“Añadir”.
6. El procedimiento aparece en el editor de código. Introduzca el siguiente código:
EDT_Hora = Now ()
2. Clique en la ventana de inicio de la ventana (fondo gris). Muestre el menú contextual (clic derecho) y
seleccione la opción “Código”.
3. Se muestran los distintos tratamientos asociados a la ventana.
4. En el tratamiento “Fin de inicialización de WIN_Timer”, introduzca el siguiente código:
TimerSys (PonerEnHora, 100, 1)
5. Este código permite indicar que el procedimiento “PonerEnHora” se llamará todos los segundos(100
representa las centésimas de segundo).
Guarde la ventana y pruébela (clicando sobre sobre y luego sobre en los botones de acceso rápido).
Hemos visto aquí la creación de un timer por programación. También puede crearse un timer
automáticamente desde el editor de código. Para más detalles, consulte la ayuda en línea (palabra
Nota
3. En la pestaña “IHM”, el botón es de tipo “Abandonar”. El código del botón se ejecutará cuando se utilice la
tecla [ESC].
WINDEV propone varios tipos para los botones: Ayuda, Normal, Validación, Interrupción y
Abandonar.
Para más detalles sobre los distintos tipos de botones:
Nota
Describir el menú
Para crear una ventana que tiene un menú:
1. Clique sobre en los botones de acceso rápido para crear una nueva ventana.
2. La ventana de creación de un nuevo elemento se muestra: clique sobre “Ventana” y luego sobre “Ventana”.
3. En el asistente que se muestra, seleccione “En blanco” y valide.
4. De un nombre y un título a esta ventana. Esta ventana tendrá por nombre “WIN_Menu” y como título “Menú
principal”.
5. Guarde la ventana.
6. En el panel “Ventana”, dentro del grupo “Barras y menús”, despliegue “Menú principal” y seleccione la opción
“Añadir el menú principal”.
7. Un menú se inserta en la ventana bajo la barra del título. Este menú solo contiene una opción que se llama
“Menú”.
Observación: Cada opción del menú se introduce directamente en el menú. Cada opción comporta una letra de
llamada. Esta letra de llamada permite acceder directamente a la opción con la combinación de teclas [ALT] + letra.
El carácter “&” deberá entonces preceder a la letra de llamada (Por ejemplo “&Ventanas”; la letra de llamada será la
“V”).
Para crear una opción de menú y para modificarla, hay que utilizar el menú contextual del menú o de la opción
del menú. Para mostrar el menú contextual del menú:
1. Seleccione el menú.
2. Clique con el botón derecho del ratón.
3. Se muestra el siguiente menú contextual:
WINDEV propone varios tipos para los botones: Ayuda, Normal, Validación, Interrupción y
Abandonar.
Para más detalles sobre los distintos tipos de botones:
Nota
2. En el menú contextual de la opción “Fichero”, seleccione la opción “Transformar para desplegar un sub-
menú” e introduzca “Salir”.
Para el menú “Ventanas”:
1. Seleccione la opción “Fichero”.
2. En el menú contextual de la opción “Fichero”, seleccione la opción “Añadir después” e introduzca
“&Ventanas”.
3. En el menú contextual de la opción “Ventanas”, seleccione “Transformar para desplegar un sub-menú” e
introduzca “&Entrada de un texto”.
4. En el menú contextual de la opción “Entrada de un texto” seleccione “Añadir después” e introduzca “&Hora en
tiempo real”.
En sus aplicaciones, le aconsejamos que siga el estándar de los menús de Windows. Asegúrese en
particular de los siguientes puntos:
Cada opción del menú principal deberá proponer al menos una sub-opción.
La primera letra de cada opción deberá estar en mayúscula, lo mismo cuando no sea la letra
de llamada. La letra de llamada deberá estar subrayada (utilice el carácter “&”).
Si una opción del menú llama a una ventana con parametrización antes de ejecutar la opción
Nota
6. Repita esta operación para la opción “Cálculo del TVA” e introduzca el siguiente código:
Ya lo habrá deducido: la función Open permite abrir una ventana para efectuar una introducción. La función Close
en cuanto a ella, cierra la ventana en curso.
En este código, las funciones WLangage utilizadas son en francés. Si está más familiarizado con la
lengua de Shakespeare, puede visualizar e introducir el código en versión inglesa: en el panel
Nota
“Código”, dentro del grupo “Lenguas”, despliegue “Convertir el código” y seleccione “Convertir al
inglés”.
opción de menú.
Las propiedades permiten conocer si una opción está o no visible, marcada o no, …
Para más detalles, consulte la ayuda en línea (Palabra clave: “Menú”).
Conceptos básicos
WINDEV permite crear sencillamente una aplicación. Pero ¿qué cubre exactamente el término Aplicación?
Una aplicación es una herramienta que permite realizar tareas, acciones automáticamente. Una aplicación está
formada por un programa ejecutable (o un conjunto de programas ejecutables), de librerías, de ficheros de datos, …
Un programa ejecutable es un fichero compuesto de elementos directamente manipulables por el usuario (ventanas,
informes impresos, …). Esto es lo que lanza el usuario final de una aplicación.
Para crear un ejecutable, WINDEV propone crear un proyecto. Un proyecto interconecta entre ellos los distintos
elementos del programa y los organiza. Es a partir del proyecto desde donde podrá crearse el programa ejecutable.
Si su aplicación manipula datos, WINDEV permite definir la estructura de la base de datos mediante el análisis. El
análisis WINDEV contiene la descripción de los ficheros (llamados comúnmente “Tablas” en numerosas bases de
datos). Estos ficheros contendrán los datos de las aplicaciones.
La descripción de los ficheros de datos en el análisis no implica su creación. Los ficheros de datos
Nota
Uno o varios proyectos WINDEV pueden estar relacionados con el mismo análisis. En este caso, se habla de análisis
compartido. Por ejemplo, una aplicación de gestión comercial puede estar dividida en varios módulos ejecutables.
Cada módulo utiliza el mismo análisis (y en ejecución, cada ejecutable puede igualmente utilizar los mismos ficheros
de datos).
La mayoría de desarrolladores están tentados a declarar todas sus variables en “global” dentro de un
proyecto. Este tipo de programación es efectivamente fácil. Las variables son todas globales y pueden
manipularse desde no importa que tratamiento.
Pero este tipo de programación es a menudo la causa de “machacar” las variables y otros efectos
Atención!
secundarios indeseados.
Es pues preferible declarar un número limitado de variables locales y luego declarar las variables
locales.
Si desea compartir valores entre dos ventanas, es vivamente aconsejable utilizar el método de “paso
de parámetros”, método que veremos un poco más tarde.
Para buscar rápidamente una ventana en el proyecto en curso, utilice la combinación de teclas
[CTRL]+[E]. Se abrirá una ventana que permitirá realizar una búsqueda de todas las ventanas que
Astucia
contengan las letras introducidas en el campo de búsqueda. Hay que seleccionar la ventana deseada y
validarla para que esta ventana se abra en el editor.
WLangage propone también los bucles del tipo FOR ALL, END permitiendo recorrer los elementos
de un campo, las cadenas de caracteres, los registros de un fichero de datos, … Estos bucles
Notas
Algunos ejemplos:
FOR I = 1 TO 100 // Aquí no es necesario declarar I
Cuenta ++ // Equivalente a Cuenta = Cuenta + 1
END
I is int = 0
WHILE I <EDT_Maximo
I++ // Equivalente a I = I + 1
END
I is int = 0
LOOP
I++ // equivalente a I = I +1
IF I >EDT_Maximo THEN EXIT
END
Ejemplo práctico:
Después de haber presentado las principales instrucciones de bucle, verifiquemos el funcionamiento en ejecución.
Abra la ventana “WIN_Code.wdw”: En el panel “Explorador del proyecto”, en la carpeta “Ventanas”, doble clic
sobre el nombre de la ventana. Esta ventana presenta varios ejemplos.
Puede realizar la operación inversa (quitar los comentarios) seleccionando con el teclado (o el
ratón) las líneas a las que se van a quitar los comentarios y luego pulsando las teclas
[CTRL]+[SHIFT]+[/] (del teclado numérico).
Lance la prueba de esta ventana ( en los botones de acceso rápido) y pruebe los operadores lógicos.
Operadores de comparación
WLangage tiene numerosos operadores de comparación que permiten realizar numerosos tratamientos.
Operadores de igualdad: igualdad (=), igualdad flexible (~=) o igualdad muy flexible (~~).
Operadores de comparación: distinto (<>), inferior y superior (<, <=, >, >=), o empieza por ([=, [=~,
[=~~).
Ejemplo práctico
Una página de ejemplo está disponible para probar algunos casos de utilización de los distintos operadores de
comparación.
En el proyecto “WD Bases Programación”, abra la ventana “WIN_Operador”.
Lance la prueba de esta ventana ( en los botones de acceso rápido) y pruebe los operadores de comparación.
Operadores de indirección
El mecanismo de la “indirección” permite construir el nombre de un campo, de una rúbrica del fichero o el nombre de
una variable a partir de una expresión de tipo cadena.
Esto permite por ejemplo, crear tratamientos genéricos independientes de los nombres de los campos, variables,
campos del fichero, …
La indirección se realiza con la ayuda de los operadores { }.
Para optimizar la velocidad de sus aplicaciones, es aconsejable precisar con el uso de la sintaxis de indirección, el tipo
del elemento manipulado.
Así, si manipula un campo, el tipo correspondiente será IndControl.
He aquí algunos ejemplos de indirección:
Ejemplo de indirecciones simples:
{“NOM”, IndControl} = NomCli
// es equivalente a NOM=NomCli
{“NOM”,IndControl} = {“CL.NOMCLI”}
// es equivalente a NOM=CL.NOMCLI
{“PAGE_CLI.NOM”, IndControl = NomCli
// es equivalente a PAGE_CLI.NOM=NomCli
{“PAGE_CLI”+”.NOM”, IndControl} = NomCli
// es equivalente a PAGE_CLI.NOM = NomCli
Ejemplo de indirección con un procedimiento:
NombreCampo is string
NombreCampo = “INTRODUCIR1” //INTRODUCIR1 es el nombre del campo
// llamada a un procedimiento que vuelve un campo invisible
PROCEDURE INVISIBLE (NombreDelCampo)
{NombreDelCampo, IndControl}..Visible = False
Para más detalles sobre el uso de las indirecciones, consulte el ejemplo unitario “Uso de las
Ejemplo
indirecciones” (ejemplo unitario) proporcionado estándar con WINDEV. Este ejemplo es accesible
desde la ventana de bienvenida de WINDEV ([CTRL]+[<]).
Procedimiento local
Un procedimiento “local” está enlazado a una ventana y solamente a esta ventana.
Un procedimiento, cuando es local, puede utilizarse solamente en los tratamientos de la ventana y los campos de la
ventana en la que está declarado. Forma parte de la ventana.
Pulsar simultáneamente las teclas [CTRL]+[F2] permite regresar al código anterior en el nombre
del procedimiento.
Creación de un procedimiento
Un procedimiento puede crearse directamente desde el editor principal de WINDEV. Basta con utilizar la pestaña
“Explorador del proyecto”.
Para crear un procedimiento local:
1. En la pestaña “Explorador del proyecto”, seleccione el nombre de la ventana asociada al procedimiento local.
2. Clique sobre la flecha a la izquierda para mostrar los distintos elementos.
3. Seleccione “Procedimientos locales”.
4. En el menú contextual de “Procedimientos locales”, seleccione la opción “Nuevo procedimiento local” . En la
ventana que aparece, indique el nombre del procedimiento y valide.
5. El procedimiento aparece en el editor de código. Introduzca el código del procedimiento.
Ejemplo práctico
Después de haber visto la teoría, un poco de práctica!
En el proyecto “WD Bases Programacion”, abra la ventana “WIN_Code” (doble clic sobre su nombre en el
explorador del proyecto). Esta ventana presenta distintos ejemplos.
Ejemplo práctico
Abra si fuera necesario el proyecto “WD Bases Programacion.WDP”:
1. Cierre si es necesario el proyecto en curso.
2. En la ventana de bienvenida, clique sobre la opción “Curso de Auto-formación” y seleccione el proyecto
“Bases de programación”.
Abra la ventana “WIN_Cadena.WDW”: doble clic sobre su nombre en el explorador del proyecto. Esta ventana
ilustra las distintas manipulaciones que explicaremos en esta lección.
Ejemplo práctico
Abra si es necesario el proyecto “WD Bases Programacion.WDP”:
1. Cierre si es necesario el proyecto en curso.
2. En la ventana de bienvenida, clique sobre la opción “Curso de auto-formación” y seleccione el proyecto
“Bases de programación”.
Abra la ventana “WIN_Numerico.WDW”: doble clic sobre el nombre de la ventana en el panel “Exploración del
proyecto”.
Pruebe la ventana. Esta ventana presenta una vista de las manipulaciones sobre los “numéricos”.
Si lo que desea es mostrar el resultado del cálculo, hace falta utilizar el siguiente código:
Info (“Un cálculo: “ + (1 + 2))
La caja de diálogo mostrará “Un cálculo: 3”.
Manipulaciones diversas
Algunos ejemplos de manipulaciones de numéricos realizadas en WLangage:
La parte entera de un número se averigua por la función IntegerPart, la parte decimal por la función
DecimalPart:
InfoBuild (“Parte entera de %1: %2” + CR + “Parte decimal de %1: %3”, …
EDT_RealConSigno, IntegerPart (EDT_RealConSigno), DecimalPart (EDT_RealConSigno))
El valor absoluto de un número lo devuelve la función Abs:
InfoBuild (Valor absoluto de %1: %2”, EDT_RealConSigno, Abs(EDT_RealConSigno))
El valor redondeado de un número lo devuelve la función Round:
InfoBuild (Redondeo de %1: %2”, EDT_RealConSigno, Round (EDT_RealConSigno))
La función Root permite calcular la raíz enésima de un número:
InfoBuild (“Raíz cuadrada de %1: %2”, EDT_Referencia_Raiz, Root (EDT_Referencia_Raiz, 2))
La función Power permite elevar un número a la potencia N:
InfoBuild (Potencia 2 de %1: %2”, EDT_Referencia_Potencia, …
Power (EDT_Referencia_Potencia, 2))
Observación: El tipo de los campos de entrada numéricos
Cuando un campo se define como numérico, no se conoce a priori su tipo (entero, real, real doble, …). Su tipo se
define automáticamente en función de la máscara seleccionada para el campo.
Para forzar el tipo de un campo, basta con utilizar una variable introducida. Por ejemplo:
Val1 is integer
Val1 = 123456789
EDT_Num1 = Val1 // Afectación del campo
Val1 = EDT_Num1 // Recuperación del campo
Detalles
Los reales permiten manipular por programación los números decimales.
Los monetarios permiten gestionar igualmente estos números decimales pero de manera más precisa.
En efecto, con los reales, los redondeos se realizan por sistema y estos redondeos pueden inducir a errores de
cálculo.
Por ejemplo:
// Con una variable de tipo Real Doble, el cálculo es falso
MiReal is real
MiReal =18.6 – 8.6 – 10
Error (“18.6 – 8.6 – 10 = “ + MiReal)
Para probar este código, clique sobre el botón “Resta de reales” en la ventana de prueba.
Para efectuar las divisiones con los monetarios, es aconsejable pasar por variables intermedias de tipo “Monetario”.
Monetario1, Monetario2 are currency
// Atribuir un número a las dos variables monetarias
Monetario1 = “12 345 678 901 234 567,123456”
Monetario2 = “12 345 678 901 234 567,123456”
// División de Monetario1 por Monetario2
Monetario1 = Monetario1 / Monetario2
// Mostrar el resultado de la división
Info (“12 345 678 901 234 567,123456”, “ dividido por “, …
12 345 678 901 234 567,123456 “, “ = “ + Monetario1
Para probar este código, clique en el botón “División de monetarios” en la ventana de prueba.
Para hacer cálculos avanzados, WLangage pone a su disposición el tipo Numeric. Por defecto, el
tipo Numeric corresponde a 32 cifras para la parte entera y 6 cifras para la parte decimal (como
Observación
el tipo monetario).
Pero la ventaja del tipo Numeric es que se puede configurar el número de cifras a utilizar para la
parte entera y el número de cifras a utilizar para la parte decimal.
Para más detalles, consulte la ayuda en línea (Palabra clave: “Numeric”).
Si desea transformar un número en una cadena de caracteres respetando un formato bien precisado, basta con
utilizar la función NumToString. Por ejemplo:
NumToString (1234.567, “012,3f” ) // devuelve “00001234,567”
A cada vez que deba utilizar la función NumToString y no sepa exactamente que parámetros tiene que utilizar,
utilice el asistente de código propuesto por WINDEV: este asistente le dará la sintaxis a utilizar en función del
resultado deseado.
En el editor de código, cuando se introduce el nombre de una función seguido del paréntesis
abierto, aparecen varias informaciones en una lista:
Notas
Las fechas
Ejemplo práctico
Abra si es necesario el proyecto “WD Bases Programacion.WDP”:
1. Cierre si es necesario el proyecto en curso.
2. En la ventana de bienvenida, clique sobre la opción “Curso de auto-formación” y seleccione el proyecto
“Bases de la programación”.
Abra la ventana “WIN_Date.WDW”. Esta ventana ilustra las explicaciones dadas en esta lección.
Existe la posibilidad de elegir una máscara de entrada de tipo “Fecha Sistema”. En este caso, el
formato mostrado será el definido en los “Parámetros regionales del panel de configuración de
Notas
Para comprender la importancia y las relaciones entre la máscara de entrada y el valor devuelto, observemos los
siguientes ejemplos:
Si la máscara de entrada de un campo fecha es “DD/MM/AA” y el valor devuelto es “AAAAMMDD”:
EDT_DateJ = “20131225” // Muestra la fecha de la forma “25/12/13”
EDT_DateJ = “131225” // Muestra la fecha de una forma incorrecta
La fecha mostrada será incorrecta.
Si la máscara de entrada de un campo fecha es “MM/DD/AAAA” y el valor devuelto es “MMAADD”:
EDT_DateJ = “131225” // Muestra la fecha de la forma “12/25/2013”
EDT_DateJ = “20131225” // Muestra la fecha de una forma incorrecta
La fecha mostrada será incorrecta.
Por lo tanto, deberemos prestar mucha atención al formato del valor devuelto en un campo de tipo
fecha u hora.
Las funciones WLangage que manipulan:
Las fechas utilizan el formato “AAAAMMDD”.
Las horas utilizan el formato “HHMMSSCC” (algunas utilizan el formato “HHMMSSCCC”, para la gestión de los
milisegundos).
máscara se utilizará automáticamente en todos los campos de tipo Fecha del proyecto.
Esta funcionalidad es igualmente muy útil en los sitios multi-lenguaje.
Para probar esta funcionalidad en nuestro ejemplo, clique sobre el botón “DiferenciaFechas”.
También es posible obtener la duración entre la fecha del día y una fecha específica en forma de
un texto claro (hay dos días, en tres semanas, …). Basta con utilizar:
Una máscara de visualización del tipo “Duración relativa”.
Observación
El tipo “Date” permite gestionar las fechas comprendidas entre el “01/01/0001” y el “31/12/9999” ( Se puede estar
tranquilo por una buena temporada).
Más en serio, para manipular el valor de estas variables, puede utilizar las sintaxis siguientes:
MiFecha is Date = “20121021”
Info (DateToString (MiFecha)) // Muestra “21/10/2012”
MiFecha..Year = MiFecha..Year + 1
MiFecha..Month = MiFecha..Month + 1
MiFecha..Day = MiFecha..Day + 1
Info (DateToString (MiFecha)) // Muestra “22/11/2013”
Las horas
Ejemplo práctico
Abra si es necesario el proyecto “WD Bases Programacion.WDP”.
1. Cierre si es necesario el proyecto en curso.
2. En la ventana de bienvenida, clique sobre la opción “Curso de auto-formación” y seleccione el proyecto
“Bases de programación.
Abra la ventana “WIN_Hora.WDW”. Esta ventana ilustra las explicaciones ofrecidas en esta lección.
Pruebe esta ventana.
Para probar esta funcionalidad en nuestro ejemplo, clique sobre el botón “Sin las centésimas”.
¿Cuánto tiempo ha transcurrido entre dos horas?
Ahora son las 17:25. ¿Cuánto tiempo ha pasado desde las 12:15? El código es el siguiente:
// muestra el tiempo transcurrido desde las 12:15
Diff is int = TimeDifference (“1215”, Now ())
Resultado_Tiempo is Time = IntegerToTime (Abs (Diff))
No ponga ningún “:” en la hora pasada como parámetro a la función TimeToString, ya que
Atención!
falseará el resultado.
Para calcular las duraciones de más de 24 horas, utilice los tipos Fecha, Hora, …
Para probar esta funcionalidad en nuestro ejemplo, clique sobre el botón “Primer ejemplo”.
El mismo cálculo puede efectuarse utilizando las variables de tipo Time o Duration.
WLangage propone tipos de variables específicas para los valores de tipo Date, Time, DateTime o Duration. Estas
variables son asimilables a las “cadenas”. Cada una contiene un valor según el cuadro siguiente:
Para probar esta funcionalidad en nuestro ejemplo, clique sobre el botón “Segundo ejemplo”.
Para visualizar el elemento correspondiente al tratamiento en curso, en el panel “Código”, en el grupo “Navegación”,
clique sobre “Ir al objeto” ([CTRL]+[ALT]+[F2]). Se muestra la página que contiene el elemento deseado.
El código fuente en curso puede imprimirse directamente clicando sobre el icono en el panel “Inicio” o con la
combinación de teclas [CTRL]+[P].
Las funciones de búsqueda o de reemplazamiento (en el código, el interface, …) son accesibles desde el panel
“Inicio”, en el grupo “Buscar” o en la pestaña “Buscar – Reemplazar” ([CTRL]+[F]):
El editor de código permite colapsar o desplegar el código WLangage. Esta funcionalidad es muy útil si sus
tratamientos utilizan numerosas instrucciones estructuradas (bucles, condiciones, recorridos, …).
Para replegar el código, en el panel “Visualización”, despliegue “Replegar” y seleccione la opción de menú “Replegar
todo” (o el atajo [CTRL]+[SHIFT]+[*] (del teclado numérico)).
Solo los comentarios quedarán visibles. Pasando sobre cada línea de comentario permite visualizar el código asociado
dentro de una burbuja:
La combinación de teclas [CTGRL]+[*] (del teclado numérico) permite desplegar todo el código. El clic sobre los
símbolos “-“ o “+” permite plegar o desplegar solamente la parte de código correspondiente.
Pulsando la tecla [F6] se pueden mostrar las informaciones (nombre y fecha de la creación/modificación) de cada
línea de código.
En el editor de código, para activar (o no) la numeración de las líneas de código, en el panel “Visualizar”, dentro del
grupo “Ayuda a la edición”, clique sobre “Mostrar los números de línea”.
Pregunta ¿Hay un medio de conseguir fácilmente la sintaxis o la ayuda sobre una función?
Pregunta ¿Cuáles son los atajos del teclado a conocer en el editor de código?
Hay que utilizar una caja de diálogo avanzada. Estas cajas de diálogo permiten gestionar:
La interrogación directiva (función Dialog): el usuario responde a una pregunta utilizando los botones que
contienen el texto de la acción a efectuar.
La entrada inmediata (función Input), proponiendo al usuario introducir directamente en la caja de diálogo el
valor deseado.
Para más detalles sobre estas funciones, consulte la ayuda en línea (palabra clave: “Dialog” e “Input”).
Capítulo 1 – Descubriendo WINDEV |69
Para probar los distintos métodos de diálogo con el usuario:
1. Abra si es necesario el proyecto “WD Bases Programacion.WDP”: en el panel “Inicio”, en el grupo “Ayuda en
línea”, despliegue “Guía de Auto-formación” y luego seleccione “Bases de programación”.
2. Abra la ventana “WIN_Dialogo.WDW”. Esta ventana ilustra los distintos modos de diálogo posibles.
3. Pruebe esta ventana (botón “GO”).
4. Clique sobre los distintos botones para probar los distintos modos de diálogo.
5. Detenga la prueba de esta ventana y vuelva al editor de código para estudiar el código de cada botón.
Para aplicar las distintas manipulaciones en las cajas de diálogos, le proponemos un pequeño ejercicio:
1. En el proyecto “WD Bases Programación”, abra la ventana “WIN_Dialogo” si es necesario (doble clic sobre su
nombre en el explorador del proyecto).
2. En la zona “Su turno”, se le propone un ejercicio:
o En el botón “Su código”, escriba el código que permite pedir al usuario su nombre. Muestre este nombre
en la barra de mensaje y en una caja de información. Si el usuario anula la entrada del nombre, muestre
un texto para indicar esta anulación.
o Pruebe la ventana para probar su código.
Corrección: El botón “Código corregido” contiene la solución.
Mi primera base
de datos
En un próximo capítulo, nos concentraremos en el desarrollo de los elementos (ventanas, informes, …) de una
aplicación con datos, que desarrollaremos de principio a fin, desde la creación del interface hasta la distribución final.
Verá así todos los puntos importantes de una aplicación.
En este capítulo, la base de datos que crearemos juntos es una gestión de pedidos.
Esta mismo tipo de base de datos será más adelante utilizado en el capítulo 3 de este curso para desarrollar una
aplicación completa. La base de datos utilizada es HFSQL Clásico, la base de datos gratuita proporcionada con
WINDEV. Más adelante en este curso, estudiaremos la base de datos HFSQL Cliente/Servidor.
WINDEV sabe gestionar los distintos formatos de base de datos (por no decir todas). Los formatos más habituales
son:
HFSQL, sistema de base de datos integrado con WINDEV y proporcionado en estándar. La base de datos
HFSQL está disponible en modo clásico o Cliente/Servidor.
AS/400, Access, Sybase, Informix, …
Oracle, SQL Server, MySQL, xBase, …
Todas las bases accesibles en lenguaje SQL bajo Windows.
Texto (Ficheros ASCII).
Para acceder a los datos, hay distintas técnicas:
Acceso nativo.
Acceso OLE DB.
Acceso ODBC directo.
Acceso ODBC a través de OLE DB.
HFSQL
HFSQL es una base de datos a la vez muy potente, muy rápida y muy robusta.
HFSQL funciona bajo Windows y Linux, en móviles (iOS, Android, Windows CE, Windows RT), en redes de cualquier
tipo y tamaño, y gestiona automáticamente varios centenares de accesos simultáneos.
La difusión de HFSQL es libre y gratuita con sus aplicaciones WINDEV.
HFSQL propone todas las funcionalidades de una base de datos, principalmente:
El diario
Las transacciones
La replicación
Los triggers
Para más detalles sobre el establecimiento de estas funcionalidades, consulte la ayuda en línea.
En las distintas partes de este curso de auto-formación, vamos a manipular una base de datos HFSQL clásico y luego
una base HFSQL Cliente/Servidor.
Acceso OLE DB
Un acceso a través de OLE DB es un acceso que utiliza un estándar de acceso multi-bases. Este tipo de acceso setá
basado en el MDAC (Microsoft Data Access Component) de Microsoft.
Si utiliza un acceso OLE DB, deberá instalar obligatoriamente el MDAC en los puestos usuarios
Atención!
Todas las bases de datos no son obligatoriamente accesibles a través de este método. Si desea utilizar este tipo de
acceso, verifique que existe un driver OLE DB.
Las funciones WLangage SQL* y HRead pueden utilizarse en este tipo de acceso.
3. La primera pantalla del asistente permite introducir el nombre del proyecto, su emplazamiento y su
descripción. En nuestro caso, el proyecto se va a llamar simplemente “WD Mi Primera Base de Datos”. Por
defecto, WINDEV propone crear este proyecto en el directorio “\Mis Proyectos\WD Mi Primera Base de
Datos”. Puede conservar este emplazamiento o modificarlo con el botón […]. Para el resumen del proyecto,
introduzca “El proyecto tiene como objetivo gestionar los clientes y sus pedidos.
4. Los distintos apartados del asistente se muestran a la izquierda del asistente. Estos apartados son
directamente accesibles con un clic. Los otros apartados de la parte “Descripción” no son fundamentales,
clique directamente en “Cartas”.
5. Este apartado permite definir la carta de programación utilizada. No modifique las opciones propuestas. Pase
al apartado siguiente con la ayuda de la flecha “siguiente” situada bajo.
6. Este paso permite definir la carta gráfica. Seleccione “Elegante”. Pase a la etapa siguiente con la ayuda de las
páginas situadas bajo.
Para seguir las distintas lecciones de este capítulo y optimizar su aprendizaje de WINDEV, es
aconsejable crear el proyecto “WD Mi Primera Base de Datos”.
Un ejemplo corregido está disponible en cualquier momento para validar las operaciones
Notas
efectuadas.
Para abrir el proyecto corregido, en el panel “Inicio”, en el grupo “Ayuda en línea”, despliegue
“Guia de auto-formación” y luego seleccione “Mi primera base de datos (Corrregido)”.
Para crear los distintos ficheros de este análisis, vamos a utilizar distintos métodos disponibles en WINDEV.
4. Marque solamente las siguientes rúbricas: IDCliente, Sociedad, Nombre, Apellidos, Direccion, CodigoPostal,
Poblacion, EstadoDepartamento, Pais, Telefono, Movil, Email.
5. Valide el asistente.
6. El fichero “Cliente” se crea automáticamente en el editor de análisis.
También puede crear un fichero de datos directamente desde el editor de análisis: en el panel
Notas
7. Pase a la etapa siguiente y seleccione el tipo de la base asociada al fichero de datos. Vamos a trabajar sobre
ficheros de datos HFSQL Clásico. Pase a la etapa siguiente.
8. Clique sobre el botón verde para validar. El fichero de datos se crea automáticamente en el análisis. Se abre a
continuación la ventana de descripción de los campos.
Vamos a introducir las rúbricas del fichero “Pedido”. En la ventana de descripción del fichero de datos, puede
observar que ya se ha creado una rúbrica automáticamente: “IDPedido”. Esta rúbrica corresponde al identificador
automático del fichero de datos. Esta rúbrica se compone con las letras “ID” y el nombre del fichero.
Vamos a crear las restantes rúbricas del fichero de datos.
En primer lugar, vamos a crear la rúbrica “Fecha”. Esta rúbrica contendrá la fecha del pedido.
1. En la ventana de descripción de las rúbricas, doble clic sobre la columna “Nombre” de la primera línea vacía.
Esta columna pasa automáticamente a modo introducción. Introduzca “Fecha”.
2. Clique en la columna “Texto”. Automáticamente aparece el nombre de la rúbrica. Vamos a modificar el texto
del campo clicando debajo: introduzca “Fecha del pedido”. En la columna “Tipo”, aparecerá seleccionado de
modo automático el tipo “Texto”. Despliegue la lista y seleccione el tipo “Fecha”.
La noción de clave es una de las características de una rúbrica. En efecto, cuando se crea
unarúbrica, puede indicar si se trata de:
No es clave
Clave única: El valor de esta clave será único en el conjunto del fichero de datos (es
Notas
4. La definición de clave se realiza de la siguiente manera: Re-seleccione la línea de la rúbrica “Fecha” para
activar los campos de descripción presentes a la derecha de la pantalla. Hay que especificar entonces el tipo
de clave utilizado. En nuestro caso, la fecha es una clave con duplicados.
5. También es igualmente necesario definir el sentido del recorrido de la clave. El sentido del recorrido permite
definir la clasificación por defecto de esta rúbrica. En nuestro caso, para efectuar el recorrido sobre esta
clave, la clasificación por defecto será “ascendiente”.
Ahora vamos a crear la rúbrica “Estado” que permite conocer el estado del pedido.
1. Posiciónese sobre una nueva línea de la tabla e introduzca:
El nombre: Estado
El texto: Estado del pedido
El tipo: Selector, Lista, Combo. En la ventana que se abre, puede seleccionar el tipo de campo creado por
defecto para este campo. Aquí, será un selector. Valide la ventana.
2. En la parte inferior de la pantalla, clique sobre la doble flecha para mostrar los parámetros del campo
enlazados con la rúbrica seleccionada.
Las informaciones que se introduzcan aquí se utilizarán automáticamente cuando se creen las ventanas
enlazadas al fichero de datos. Aquí encontrará el tipo de campo y el texto.
Vamos a introducir las distintas opciones correspondientes al estado del pedido en la pestaña “Contenido”:
Clique en la pestaña “Contenido”.
Clique sobre el botón “+” para añadir la primera opción
La opción 1 corresponderá a “En espera”. Introduzca “En Espera” en el campo de edición a derecha del
selector.
Clique sobre el botón “+” para añadir la segunda opción.
Introduzca “Validado” en lugar de “Opción 2”.
Clique de nuevo sobre el botón “+”.
Introduzca “Anulado” en lugar de “Opción 3”.
Capítulo 2 –Mi primera base de datos |84
3. Clique nuevamente sobre la doble flecha.
4. De la misma manera:
Posiciónese sobre una nueva línea de la tabla y cree la rúbrica “TotalHT”. Este campo es de tipo “Monetario”.
Posiciónese sobre una nueva línea de la tabla y cree la rúbrica “TotalTTC”: Este campo es de tipo
“Monetario”.
5. Listo, la descripción del fichero “Pedido” ha finalizado. Valide la ventana de descripción de las rúbricas.
6. El fichero “Pedido” aparecerá sobre el editor de análisis. Se puede agrandar el fichero mostrado. Hay que
clicar sobre el fichero, seleccionar el recuadro negro bajo del fichero y desplazar el ratón hacia abajo.
Un fichero CSV es un fichero de texto que utiliza un formato específico. Este fichero contiene
datos para cada línea. Estos datos están separados por un carácter de separación (generalmente
Notas
A partir del fichero CSV que contiene los datos, WINDEB creará:
La descripción del fichero de datos en el análisis.
El fichero de datos HFSQL con los datos existentes en el fichero CSV.
Para importar un fichero CSV en el análisis:
1. En el panel “Análisis”, en el grupo “Creación”, despliegue “Importar” y seleccione “Importar descripciones de
ficheros/tablas”.
8. No olvide marcar la opción “La primera línea contiene los nombres de las columnas”.
9. Pase a la etapa siguiente.
11. El contenido del fichero CSV se convertirá automáticamente al formato HFSQL. El asistente propondrá crear el
fichero HFSQL en el directorio del proyecto. Conserve las opciones propuestas y pase a la etapa siguiente.
Ahora vamos a crear las relaciones entre los ficheros de datos. Una relación permite definir las constantes de
integridad (cardinalidades) entre dos ficheros de datos.
5. Pase a la etapa siguiente. El asistente propone automáticamente la clave utilizada para la relación (IDCliente).
6. Muestre la pantalla siguiente del asistente. El asistente propone crear la clave “IDCliente” en el fichero Pedido
para almacenar el cliente correspondiente al pedido.
De la misma manera, cree una relación entre los fichero “ModoLiquidacion” y “Pedido”. Estos dos ficheros se
relacionan de la forma siguiente:
Un pedido deberá tener un modo de liquidación
Un modo de liquidación puede utilizarse por varios pedidos.
En el asistente:
Las cardinalidades son las siguientes: ModoLiquidacion(0,n), Pedido (1,1)
La clave de la relación corresponde a la rúbrica “Codigo”.
Vamos ahora a crear una relación entre los ficheros “Pedido” y “Producto”. Esta relación nos permitirá crear un
fichero de relación, el fichero de líneas de pedido.
1. Cree de la misma forma la relación entre los ficheros.
2. Responda a las cuestiones planteadas por el asistente:
Cada pedido tiene al menos un producto: No
Cada pedido puede tener varios productos: Si
Cada producto tiene al menos un pedido: No
Cada producto puede tener varios pedidos: Si
3. Pase a la etapa siguiente. El asistente propone crear un fichero de relación. Conserve la opción “Crear
automáticamente el fichero de relación” y avance a la etapa siguiente.
Capítulo 2 –Mi primera base de datos |90
4. El asistente propone la clave única del fichero Producto a utilizar. Seleccione “Referencia”. Pase a la siguiente
etapa.
5. Valide la creación de la clave pasando a la etapa siguiente.
6. Conserve las opciones por defecto concernientes a las reglas de integridad y pase a la siguiente etapa.
7. El asistente propone la clave única del fichero Pedido a utilizar. Seleccione “IDPedido”. Pase a la etapa
siguiente.
8. Valide la creación de la clave pasando a la etapa siguiente.
9. Conserve las opciones por defecto, concernientes a las reglas de integridad y pase a la siguiente etapa.
10. Clique sobre la flecha verde. El fichero de relación se crea automáticamente en el editor de análisis.
Ahora vamos a modificar el fichero de relación que ha creado WINDEV. En efecto este fichero contendrá las líneas del
pedido.
Vamos a:
Modificar el nombre del fichero.
Modificar el nombre de sus rúbricas.
Añadir campos para conocer la cantidad de productos pedidos y el total de la línea de pedido.
Primero vamos a renombrar el fichero. Ya hemos hecho una manipulación semejante cuando hemos cambiado el
texto del fichero importado. Pero aquí, no solo vamos a modificar el texto: vamos también a renombrar el fichero
físico enlazado con la descripción del fichero.
1. Seleccione el fichero “Pedido_Producto”.
2. En el menú contextual (clic derecho), seleccione la opción “Descripción del fichero de datos”.
3. En la ventana que se muestra, modifique:
El nombre del fichero: “LineaPedido”.
El nombre en el disco: “LineaPedido”.
WINDEV proporciona distintos “Patrones RAD” que permiten generar varios modelos de
aplicación. Puede también crear sus propios patrones RAD.
Notas
Para más detalles, consulte la ayuda en línea (palabra clave: “Patrón RAD”).
Todas las ventanas, informes, consultas y código generados por RAD, son totalmente personalizables. También tiene
la posibilidad de modificar los tipos de campos, los valores por defecto, …
RAD permite igualmente generar ventanas de varios tipos, es el RAD Ventana. RAD Ventana está disponible cuando
crea una nueva ventana en su aplicación.
Aquí vamos a descubrir como utilizar el módulo RAD Proyecto.
RID (Rapid graphical Interface Design) (Diseño rápido del interface gráfico)
WINDEV permite también generar ventanas que contienen solamente los campos enlazados con
las rúbricas del análisis. Todo el código necesario para el funcionamiento de estas ventanas
Notas
Conserve solamente los ficheros Cliente, Pedido, ModoLiquidacion y Producto. Muestre la siguiente pantalla.
6. Indique si los campos Tabla generados en las ventanas de la aplicación deberán permitir la entrada o no. En
nuestro ejemplo, los campos Tabla permitirán al usuario introducir las nuevas informaciones. Seleccione “Si:
Autorizar la entrada en los campos Table”. Muestre la siguiente pantalla.
7. Indique si debe utilizarse el groupware usuario en la aplicación. El groupware usuario lo veremos más
adelante en una próxima parte del curso. Seleccione la opción “No: No integrar la gestión de groupware
usuario”. Pase a la etapa siguiente.
9. Avance a la etapa siguiente. Finaliza el asistente de generación del RAD y se abre el asistente de generación
del menú automático.
El menú automático es un menú de ayuda adaptado a sus aplicaciones. Este menú permitirá a
Notas
Las distintas opciones propuestas por el asistente de generación del menú automático son las siguientes:
Cuando se crea el menú “?”, la opción “? .. Ayuda de las FAA (Funcionalidades Automáticas de la
Aplicación)” añade automáticamente en su aplicación:
El componente “CCMenu”. En efecto, esta opción utiliza un procedimiento de este
Notas
Algunos errores de IHM pueden aparecer en el panel de los errores de compilación. Estos errores
señalan los problemas de interface especialmente en los informes (textos muy largos, por
Notas
Prueba de la aplicación
Probemos inmediatamente la aplicación generada.
Para lanzar la prueba de la aplicación:
Aplicación completa
con datos
Proyectos proporcionados
Proyecto ejemplo
Ya hemos visto en el capítulo anterior como crear un proyecto y un análisis. No volveremos a ello. Vamos a trabajar
en un proyecto que contiene ya un análisis y ficheros de datos previamente rellenos. El análisis de la aplicación es una
versión mejorada del análisis que había creado en el capítulo anterior.
Para abrir este proyecto en WINDEV:
1. Si es necesario, cierre el proyecto en curso para hacer aparecer la ventana de bienvenida.
2. En la ventana de bienvenida, clique sobre “Curso de auto-formación” y seleccione el proyecto “Aplicación
completa (Ejercicio)”.
Antes de comenzar a desarrollar la aplicación, detengámonos un instante en el análisis asociados al proyecto “WD
Aplicación completa”.
Para mostrar el análisis enlazado al proyecto, clique sobre en los botones de acceso rápido. Se muestra el
editor de análisis:
Hay disponible un proyecto corregido. Este proyecto contiene las distintas ventanas creadas en
esta lección. Para abrir el proyecto corregido, en el panel “Inicio”, dentro del grupo “Ayuda en
Corregido
Hemos llamado a esta ventana “Menú” porque esta ventana es la ventana principal de nuestra
Notas
En memoria: se habla entonces de campo Tabla memoria o Campo Tabla relleno por
programación.
Proveniente de ficheros de datos o de consultas: Se habla entonces de campo Tabla
Fichero.
Proveniente de variables WLangage: se habla entonces de tabla sobre fuente
4. La siguiente pantalla del asistente propone los distintos ficheros de datos y las consultas presentes en el
proyecto en curso. Despliegue “Análisis” si hace falta y seleccione el fichero “Producto”. Pase a la etapa
siguiente.
Prueba de la ventana
Vamos a continuación a probar la ventana que acabamos de crear.
Pongámonos unos instantes en el sitio del usuario final para ver las posibilidades del campo Tabla en ejecución.
Por ejemplo, clique dos veces sucesivamente en la columna “Etiqueta”: los datos mostrados se clasifican de
forma distinta. Una flecha a la izquierda de la columna indica que la columna está clasificada, así como el
sentido de clasificación.
La lupa indica que puede realizarse directamente una búsqueda en la columna.
Por ejemplo, clique sobre la lupa de la columna “Referencia”. Aparecerá una zona de introducción que
permitirá introducir la referencia buscada. Introduzca “REF-010”. Automáticamente, el producto
correspondiente a esta referencia se mostrará.
En algunos minutos, acabamos de ver y probar algunas funcionalidades que están incluidas automáticamente con el
campo Tabla. No tiene que programar nada para proponer estas funcionalidades a sus usuarios. Estas funcionalidades
se llaman “FAA (Funcionalidades Automáticas de la Aplicación).
Numerosos campos proponen las FAA por defecto. Si estas funcionalidades no deben proponerse
(por razones de seguridad o de confidencialidad), es posible desactivarlas en el editor o por
Notas
programación. Para más detalles, consulte la ayuda en línea (palabra clave: “Funcionalidades
automáticas de la aplicación”).
Tener la lista de los productos, está muy bien, pero poder modificar un producto, es mejor. Ahora vamos a crear una
ventana que muestre el detalle del producto para poder modificarlo.
Cierre la ventana que se está probando con el aspa situada arriba de la pantalla. El editor de WINDEV
reaparecerá.
3. Seleccione con la ayuda del ratón el conjunto de las rúbricas mostradas en el panel (excepto la rúbrica
“IDProducto”). Puede por ejemplo utilizar la multi-selección manteniendo la tecla [CTRL] presionada.
4. Efectúe un “Drag and Drop” (deslizar/desplazar) de estas rúbricas hacia la ventana que acaba de crear.
3. Queremos que los bordes externos e internos de los campos estén alineados. Clique sobre la opción
“Justificar (Int. Y Ext.)”.
Si no sabe que alineamiento elegir, pase por encima de las distintas opciones propuestas por el
panel “Alineamiento” de WINDEV. Cuando pasa con el ratón sobre una de las opciones, los
campos seleccionados en la ventana se posicionan y/o redimensionan en función de la opción
sobre la que se pasa.
Notas
3. Cierre la vista previa: clique en el botón “Cerrar” de la vista previa, o en el aspa arriba a la derecha de la
ventana.
2. Actualmente, el campo Tabla ocupa la totalidad de la ventana. Agrande el tamaño de la ventana hacia la
derecha. El campo Tabla se agrande también, por el mecanismo del anclaje.
3. Disminuya el tamaño del campo Tabla para que se muestren todas las ventanas.
Seleccione el campo con ayuda del ratón: unos punteros aparecen alrededor del campo.
Seleccione el puntero a la derecha del campo con el ratón para disminuir el tamaño del campo.
4. Ahora ya tenemos sitio a la derecha de la tabla para crear el botón de visualización del producto.
Para crear el botón de visualización del producto:
1. En el panel “Creación”, en el grupo “Campos habituales”, despliegue “Botón” (clique en la flecha situada bajo
).
2. En la lista de botones predefinidos, clique sobre “Modificar”. La forma del botón aparecerá bajo el ratón.
Clique a continuación a la derecha del campo Tabla para crear el botón.
3. Haga un clic derecho sobre el botón y en el menú que se muestra, seleccione la opción “Código”.
4. En la ventana de código que aparece, introduzca el siguiente código en el tratamiento “Clic sobre”:
Open (WIN_Ficha_del_producto)
Déjese guiar por el asistente para la introducción del código (también llamado “Completar”):
desde el momento que teclea el paréntesis abierto “(“, se abre una lista desplegable
proponiendo el nombre de todas las ventanas existentes en el proyecto. Bastará con seleccionar
Notas
5. Examinemos este código: la función Open permite abrir la ventana “WIN_Ficha_del_producto”. Ya hemos
visto esta función en el primer capítulo de este curso.
6. Guarde las modificaciones clicando sobre en los botones de acceso rápido.
7. Cierre la ventana de código (clique sobre el aspa arriba a la derecha del editor de código).
Vamos ahora a modificar la ventana “WIN_Ficha_del_producto” para mostrar el producto seleccionado en el campo
Tabla.
Muestre la ventana “WIN_Ficha_del_producto” en el editor: clique sobre el botón correspondiente en la barra de
botones.
Para mostrar los datos del producto:
1. Muestre los tratamientos asociados a la ventana.
En la zona al lado de la ventana (llamada “zona de inicio”), haga un clic derecho del ratón.
En el menú contextual que se muestra, seleccione “Código”.
Aparecerá el editor de código.
2. En el tratamiento “Fin de inicialización de WIN_Ficha_del_producto”, introduzca el siguiente código:
Capítulo 3 – Aplicación completa con datos |117
// Afectar el contenido de las rúbricas en los campos
FileToScreen ()
3. Cierre la ventana de código.
4. Guarde la ventana.
Muestre la ventana “WIN_Menu” en el editor: clique sobre el botón correspondiente en la barra de botones.
4. Haga un clic derecho sobre el botón. En el menú que se muestra, seleccione la opción “Código”.
5. En la ventana de código que se muestra, introduzca el siguiente código en el tratamiento “Clic sobre”:
fImageSelect (
WINDEV propone numerosos asistentes de código que con la ayuda de preguntas sencillas van
escribiendo la o las líneas de código correspondiente. No dude en utilizarlos, así evitará muchos
Notas
errores de sintaxis.
7. Conserve todas las opciones por defecto del asistente y valide. El código correspondiente se inserta
automáticamente:
sFichero is string
// Abre el selector de imágenes
sFichero = fImageSelect (“”,””,”Seleccione una imagen …”)
8. Añada el siguiente código:
// Si se ha seleccionado un fichero
IF sFichero <> “” THEN
// Afecte la imagen al campo Imagen
IMG_Visual = sFichero
END
Este código permite mostrar el fichero seleccionado al campo Imagen existente en la ventana.
9. Cierre el editor de código (clique sobre el aspa arriba a la derecha del editor de código).
Probaremos esta funcionalidad cuando la gestión de las modificaciones efectuadas en la ficha se haya finalizado.
Validación de las modificaciones del producto
Ya hemos creado 2 botones en la ventana “WIN_Ficha_del_producto”:
Un botón “Validar” para gestionar la validación de las modificaciones.
Un botón “Anular” para gestionar el retorno a la lista de productos.
Vamos ahora a introducir el código WLangage necesario para su funcionamiento.
Primero, muestre si hiciera falta la ventana “WIN_Ficha_del_producto” en el editor: clique en el botón
correspondiente en la barra de botones.
Vamos ahora a introducir el código del botón “Validar”.
1. Haga un clic derecho sobre el botón y luego seleccione la opción “Código” en el menú contextual.
2. En el tratamiento “Clic sobre”, introduzca el siguiente código:
ScreenToFile ()
HModify (Producto)
Close ()
Examinemos este código:
La función ScreenToFile permite inicializar las rúbricas con los valores de los campos enlazados, para el
registro en curso. Esta función es equivalente a las siguientes líneas:
Producto.Referencia = EDT_Referencia
Producto.Etiqueta = EDT_Etiqueta
Producto.Descripcion = EDT_Descripcion
…
Nuestra ventana utiliza menos de 10 campos y ya se nota la ventaja; piense simplemente con las ventanas que
contienen varias decenas de campos: una sola línea de código realiza todas las afectaciones!
La función HModify permite actualizar los datos del fichero de datos para el registro actual.
3. Guarde las modificaciones clicando sobre en los botones de acceso rápido.
2. WINDEV pide seleccionar la primera ventana del proyecto. En nuestro caso, esta ventana corresponderá a
“WIN_Menu”. Seleccione esta ventana y valide.
La primera ventana del proyecto corresponde a la primera ventana que se abre cuando se lanza
la aplicación.
La primera ventana puede definirse:
Cuando se crea el proyecto.
Cuando se crea el ejecutable.
Notas
En el explorador del proyecto: hay que seleccionar la ventana deseada, mostrar el menú
contextual y seleccionar la opción “Primera ventana del proyecto”.
Cuando se ha definido la primera ventana del proyecto, un pequeño 1 rojo aparece delante del
nombre de la ventana en el explorador del proyecto.
3. En la lista de productos, seleccione un producto en el campo Tabla (por ejemplo, el primero) y clique sobre el
botón “Modificar”.
4. El detalle del producto seleccionado aparece en la ventana ficha.
5. Modifique el precio de 100,23 euros e introduzca 200,00 y luego clique sobre el botón “Validar”.
6. Al volver a la lista de productos, podrá constatar que el precio de este artículo se ha actualizado.
7. Muestre de nuevo el detalle del producto.
8. Clique sobre el botón “Modificar” debajo de la imagen. Se mostrará el selector de imágenes. Seleccione una
imagen y valide. La imagen aparece en la ficha.
9. Clique sobre el botón “Anular”. La modificación de la imagen no se tiene en cuenta en el fichero de datos.
10. Cierre la aplicación clicando sobre el aspa.
ScreenToFile ()
HSave (Producto)
Close()
Cuando se añade o se modifica un registro, varios tipos de errores pueden surgir: error de
duplicados, error de integridad, error de contraseña, …
WINDEV propone varios modos de gestión de estos errores:
Modo automático: Para cada error encontrado en la gestión de registros de la base de
datos, una ventana específica se mostrará al usuario. Esta ventana permitirá al usuario
modificar directamente los datos.
Notas
Modo programado avanzado: Para cada error encontrado en la gestión de los registros
de la base de datos, se llamará a un procedimiento o una ventana personalizada de gestión
de errores.
El ejemplo didáctico “Detección de errores”, proporcionado con WINDEV permite probar estos
modos de gestión de los errores. Este ejemplo puede abrirse por la ventana de inicio de WINDEV
([CTRL]+[>], a través de la opción “Abrir un ejemplo”.
A continuación, se podrán recorrer los registros existentes en el fichero de datos a partir del cliente mostrado.
Hay disponible un proyecto corregido. Este proyecto contiene las distintas ventanas creadas en
esta lección. Para abrir el proyecto corregido, en el panel “Inicio”, dentro del grupo “Ayuda en
Corregido
Para redimensionar el campo Pestaña sin que se tenga en cuenta el anclaje de los campos
existentes en el panel, utilice la tecla [SHIFT] durante el redimensionamiento.
3. Clique sobre “Panel 2”. Se muestra el panel. Clique de nuevo sobre “Panel 2”. Introduzca el texto “Búsqueda
de clientes. Valide con la tecla [ENTER].
Desde el momento en que una imagen puede mostrarse en un campo o en una ventana,
WINDEV propone utilizar el catálogo de imágenes con el botón “Catalogo”. Este catálogo
Notas
Implementación de la búsqueda
Hemos acabado de preparar la ventana “WIN_Menu”. Podremos ahora concentrarnos en el contenido del panel de
búsqueda de clientes.
Este panel estará dividido en varias zonas:
Una zona de entrada de los elementos a buscar.
Una zona de visualización de las informaciones encontradas.
Una zona que contenga los botones de recorrido.
Zona de visualización de las informaciones encontradas
Primero vamos a crear los distintos campos que mostrarán las informaciones del cliente encontrado.
Para crear los campos de edición en la ventana, vamos a proceder del mismo modo que para la ventana de la ficha
del producto: un simple “Drag and Drop” desde el panle “Análisis”.
Para crear los distintos campos que muestran las informaciones sobre el cliente:
1. Muestre la ventana WIN_Menu en el editor y clique sobre la pestaña “Búsqueda de clientes”. Aparecerá el
panel vacío.
2. Muestre si es preciso el panel “Análisis”: en el panel “Inicio”, dentro del grupo “Entorno”, despliegue
“Paneles” y seleccione “Análisis”. Los distintos ficheros de datos descritos en el análisis aparecerán en el
panel.
3. Clique sobre el icono a la izquierda del fichero “Cliente”: los campos del fichero de datos se listarán.
4. Seleccione con la ayuda del ratón la totalidad de las rúbricas mostradas en el panel. Puede por ejemplo
utilizar la multi-selección manteniendo pulsada la tecla [CTRL].
5. Haga un “Drag and Drop” (Deslizar/Desplazar) estas rúbricas hacia la pestaña “Búsqueda de clientes”.
6. Los campos se crearán automáticamente en la pestaña. Estos campos se enlazan automáticamente con las
rúbricas correspondientes en el fichero de datos.
Pruebe la ventana ( en los botones de acceso rápido). Clique sobre la pestaña del panel “Búsqueda de
clientes”. La ventana aparecerá con todos los campos vacíos.
Búsqueda idéntica
Para realizar la búsqueda idéntica, vamos a seleccionar el nombre del cliente en un campo Combo. El botón “Buscar”
permitirá mostrar la ficha de la persona correspondiente. Solo una persona corresponderá al nombre seleccionado.
El campo combo se colocará debajo de los campos que acabamos de crear. Si los campos están muy encima de
la pestaña, habrá que desplazarlos hacia abajo. Para ello:
1. Seleccione el conjunto de campos existentes en la pestaña:
Utilice la combinación de teclas [CTRL]+[A]: Todos los campos de la ventana y del panel en curso se
seleccionarán.
Pulse sobre la tecla [CTRL].
Clique sobre la pestaña. Solo los campos del panel se seleccionarán.
2. Desplace los campos seleccionados hacia abajo con la ayuda del ratón.
4. Seleccione la opción “Mostrar los datos de un fichero o de una consulta existente”. Avance al paso siguiente
del asistente.
5. Seleccione el fichero de datos “Cliente”. Avance al paso siguiente.
6. Vamos a mostrar el apellido y el nombre de la persona.
9. El campo Combo no se enlazará con ninguna rúbrica. Guarde la opción “No” y avance al paso siguiente.
10. Valide la siguiente pantalla con la flecha amarilla.
11. Proporcione un nombre al campo (por ejemplo “COMBO_Cliente”) y un texto (por ejemplo “Cliente Buscado”).
12. Valide. Posicione el campo Combo en la ventana (por ejemplo, arriba a la izquierda).
13. Seleccione el campo Combo y con la ayuda de las asas, modifique su tamaño para poder ver el nombre
completo del cliente cuando se muestre.
existentes en las rúbricas del fichero de datos, se muestran en los campos correspondientes.
3. Este campo tiene como nombre “BTN_BusquedaGenerica” y como texto “Búsqueda Genérica”.
4. Si hiciera falta, adapte el tamaño del botón para que el texto aparezca correctamente en el botón.
5. Introduzca el siguiente código:
// Buscar un cliente por su nombre
HReadSeek (Cliente, NombreCompleto, EDT_Nombre_Buscado)
IF HFound (Cliente) THEN
Capítulo 3 – Aplicación completa con datos |135
// Muestra los datos del cliente
FileToScreen()
ELSE
Error (“No se corresponde con ningún cliente”)
END
La función HReadSeek permite realizar una búsqueda genérica. En este ejemplo, se realiza en el fichero
“Cliente” y sobre la rúbrica “NombreCompleto”. El valor buscado corresponde al valor introducido en el campo
“EDT_Nombre_Busqueda”. Este valor se obtiene utilizando directamente el nombre del campo.
También se puede realizar una búsqueda idéntica con la función HReadSeek: para ello hay que
Notas
4. El resultado es inmediato. Sin embargo, si existieran varios registros, solo se mostraría el primero.
5. Detenga la prueba y regrese al editor.
Recorrido de las fichas
Ahora vamos a añadir 4 botones que permitan recorrer los distintos registros del fichero “Cliente”. Estos botones son
del tipo “botones magneto”.
3. En la ventana que aparece, aparecen todos los estilos definidos para los botones. Seleccione el estilo
“BTN_Primero”.
4. Valide
Modifique el nombre del campo Botón.
1. Muestre la ventana de descripción del campo:
Seleccione el campo Botón.
Muestre el menú contextual (clic derecho) y seleccione la opción “Descripción”.
2. Este campo tiene como nombre “BTN_Primero”.
3. Valide la ventana de descripción.
Ahora introduciremos el código WLangage asociado a este campo:
1. Haga un clic derecho en el campo. En el menú que aparece, seleccione la opción “Código”.
2. En la ventana de código que aparece, introduzca el siguiente código en el tratamiento “Clic sobre”:
// Leer el primer cliente
HReadFirst (Cliente)
IF HOut (Cliente) = True THEN
// No hay clientes
Info (“No hay ninguna ficha a visualizar.”)
ELSE
// Mostrar los datos del cliente
FileToScreen()
Este tipo de consulta se llama consulta de selección porque en lenguaje SQL utiliza la orden
SELECT.
Hay disponible un proyecto corregido. Este proyecto contiene las distintas ventanas creadas en
esta lección. Para abrir el proyecto corregido, en el panel “Inicio”, dentro del grupo “Ayuda en
Corregido
1. Clique sobre en los botones de acceso rápido. Se mostrará la ventana de creación de un nuevo elemento:
Clique sobre “Consulta”. Se abre el asistente de creación de una consulta.
2. Selección la opción “Selección (SELECT)”.
En efecto, la consulta que vamos a crear nos permitirá seleccionar los registros. Avance al paso siguiente.
3. La ventana de descripción de la consulta aparecerá. Vamos a construir la consulta seleccionando los
elementos que deseamos en el resultado.
4. Haga doble clic sobre las rúbricas existentes en el análisis a la izquierda de la ventana de descripción. Las
rúbricas tomadas en cuenta aparecerán entonces en el centro de la pantalla.
Observación: Para hacer aparecer las rúbricas de los distintos ficheros de datos, hay que clicar sobre la “+”
que hay delante del nombre del fichero.
Deseamos mostrar:
o Las informaciones concernientes al pedido. Despliegue el fichero “Pedido” (clic sobre la “+”) y luego doble
clic sobre las rúbricas: “IDPedido”, “Fecha”, “Estado” y “TotalHT”.
o Las informaciones concernientes al cliente que ha pasado el pedido. Despliegue el fichero “Cliente” (clic
sobre la “+”) y luego doble clic sobre la rúbrica “NombreCompleto”.
o Las informaciones concernientes al modo de liquidación del pedido. Despliegue el fichero
“ModoLiquidacion” (clic sobre la “+”) y luego doble clic sobre la rúbrica “Texto”.
La ventana de descripción de la consulta es la siguiente:
1. Clique sobre .
2. El resultado se muestra en una ventana:
3. Cierre la ventana
Uso de parámetros en la consulta
En nuestro ejemplo, el usuario podrá seleccionar un valor para los siguientes criterios de selección:
Estado del pedido.
Modo de liquidación del pedido.
Fecha del pedido.
Hemos de modificar la consulta para que los criterios de búsqueda correspondan a los parámetros de la consulta.
Para definir los parámetros de la consulta, muestre la ventana de descripción de la consulta: doble clic sobre el
fondo de la representación gráfica de la consulta ( o bien, en el menú contextual, utilice la opción “Descripción de
la consulta”).
Le aconsejamos que prefije los parámetros de las consultas por “p”. Así será más sencillo
encontrarlas en el editor de código.
Notas
Ahora vamos a definir una condición sobre el modo de liquidación. Esta rúbrica no está presente en el
resultado de la consulta, pero de todas formas queremos aplicarle una condición. Para ello, vamos a integrar
la rúbrica en el resultado de la consulta y hacerla invisible para que no aparezca en el resultado.
1. En la parte izquierda de la ventana de descripción de la consulta, en el fichero “pedido”, doble clic sobre la
rúbrica “IDModoLiquidacion”. La rúbrica “IDModoLiquidacion” aparecerá en la lista de elementos de la
consulta.
2. Para no mostrar la rúbrica en el resultado:
La última condición de selección a definir concierne a la fecha del pedido. Esta fecha deberá estar comprendida
entre dos fechas introducidas por el usuario.
1. Seleccione en la lista de los elementos de la consulta la rúbrica “Pedido.Fecha”.
2. Clique sobre el botón “Entre dos fechas …”. Este botón permitirá definir directamente una condición de
selección.
3. En la ventana que aparece:
La condición de selección es “Está comprendido entre”.
Clique sobre “al parámetro”.
Indique el nombre del parámetro “pInicioPeriodo”.
Clique sobre el segundo “al parámetro”.
Indique el nombre del parámetro “pFinPeriodo”.
4. Valide la definición de la condición de selección.
5. Valide la ventana de descripción de la consulta. El gráfico de la consulta se ha modificado para tener en
cuenta las condiciones de selección que acabamos de definir.
1. Clique sobre .
2. Se abrirá una ventana que permitirá introducir los distintos parámetros de la consulta.
3. Introduzca los siguientes datos:
Desmarque el parámetro pEstado.
Seleccione el parámetro pInicioPeriodo. En la parte inferior de la pantalla introduzca “01/01/2013”.
Seleccione el parámetro pFinPeriodo. En la parte inferior de la pantalla introduzca “31/03/2013”.
Seleccione el parámetro pIDModoLiquidacion. En la parte inferior de la pantalla introduzca “1”.
Para una mejor lectura, vamos a renombrar las cabeceras de las columnas del campo Tabla.
1. Muestre la descripción del campo Tabla (doble clic sobre el campo).
Si se ha seleccionado el nombre del campo Tabla, la parte inferior presenta las características del
campo tabla.
Si se ha seleccionado una columna, la parte inferior presenta las características de las columnas.
2. Clique sobre la columna “COL_IDPedido”. El título de la columna aparecerá en la parte inferior de la pantalla.
Reemplace el texto “Identificador del pedido” por “ID”.
3. Clique sobre la columna “COL_NombreCompleto”. Sustituya el texto “Nombre Completo” por “Cliente”.
4. Clique sobre la columna “COL_Texto”. Sustituya el texto “Texto” por “Modo de Liquidación”.
5. Valide la ventana de descripción del campo Tabla. El campo se actualiza automáticamente con los cambios
efectuados.
Capítulo 3 – Aplicación completa con datos |149
6. Agrande el tamaño de las columnas ID, Fecha y Estado del campo Tabla, con la ayuda de los punteros de
redimensionamiento de las columnas.
7. Reduzca el tamaño de la columna “Modo de liquidación” para que todas las columnas aparezcan en el campo
Tabla.
8. Guarde la ventana clicando sobre en los botones de acceso rápido. Vamos a verificar los tamaños de las
columnas ejecutando la ventana.
siguiente razón: Los datos mostrados dependen del resultado de la consulta y solo pueden
conocerse en ejecución.
Los selectores de opciones también se llaman “cajas de opción”. Permiten seleccionar una opción
y solo una de entre las propuestas.
¿Cómo distinguir entre selector e interruptor?
Notas
El selector también se llama “Botón Radio”. Un método mnemotécnico muy sencillo: piense en
las radios antiguas: el botón permitía seleccionar una sola frecuencia!
El selector permite seleccionar una única opción.
Ahora vamos a utilizar el valor seleccionado en el campo Selector como parámetro de la consulta:
1. Muestre los tratamientos asociados al campo Tabla:
Seleccione el campo Tabla.
Muestre el menú contextual (clic derecho) y seleccione la opción “Código”.
El campo Combo permite mostrar una lista de elementos y seleccionar un elemento de esta lista.
A diferencia de una lista, un combo no aparece desplegado: se despliega cuando se pide, o
cuando se posiciona el cursor en la lista.
Los elementos que aparecen en el combo pueden determinarse cuando se crea el campo en el
Notas
Cambie el aspecto del campo: Para ocupar menos espacio, vamos a seleccionar un estilo mostrando el texto bajo
del campo.
1. Seleccione el campo Combo.
2. En el menú contextual (clic derecho), selección la opción “Elegir un estilo”.
3. En la ventana que aparece, seleccione el estilo “COMBO_Interno” y valide.
4. Reduzca el tamaño del campo.
Ahora, utilizaremos el valor seleccionado por el campo Combo como parámetro de la consulta.
1. Muestre los tratamientos asociados al campo Tabla:
Seleccione el campo Tabla.
Muestre el menú contextual (clic derecho) y seleccione la opción “Código”.
2. En el tratamiento de inicialización del campo Tabla, sustituya la línea:
MySource.pIDModoLiquidacion = “1”
Por el código:
MySource.pIDModoLiqudiacion = COMBO_ModoLiquidacion
En este código, COMBO_ModoLiquidacion es el nombre del campo Combo que acabamos de crear. El valor de
retorno de este campo, se asociará al parámetro pIDModoLiquidacion esperado por la consulta.
3. Cierre el editor de código.
Un modelo de campos es una ventana específica que contiene distintos campos. En esta
ventana, podrá poner cualquier tipo de campos. Un modelo de campos es un fichero de
extensión “WDT”.
El principal interés de un modelo de campos es la re-utilizabilidad. Un modelo de campos que
Notas
En blanco
Ficha
Etiqueta
Tabla
Tabla cruzada
Tabla jerárquica
Informe multi-columna
Correo
Formulario
Compuesto
Agenda o Planning
Diagrama de Gantt.
Vamos ahora a descubrir como crear los distintos tipos de informes en la aplicación “WD Aplicación Completa”.
Si no ha creado las ventanas de las lecciones anteriores, puede seguir esta lección abriendo un
proyecto corregido: En el panel “Inicio”, dentro del grupo “Ayuda en línea”, despliegue “Guía de
auto-formación” y luego seleccione “Aplicación completa (Con ventanas)”.
Corregido
6. Cuando los datos se muestran en el campo Tabla, muestre el menú contextual del campo (icono arriba a
la derecha o clic derecho sobre el campo).
“Informes y Consultas” para crear el informe correspondiente. Para más detalles sobre el
software Informes y Consultas, consulte “Difunda ‘Informes y Consultas’ con sus aplicaciones”.
Si no ha creado las ventanas de las lecciones anteriores, puede seguir esta lección abriendo un
proyecto corregido: En el panel “Inicio”, dentro del grupo “Ayuda en línea”, despliegue “Guía de
auto-formación” y luego seleccione “Aplicación completa (Con ventanas)”.
Corregido
WINDEV propone crear los informes a partir de numerosas fuentes de datos: ficheros de datos,
consultas, campos, ficheros de texto, …
En la mayoría de ocasiones, es aconsejable agrupar los datos a imprimir en una consulta, y luego
crear un informe sobre esta consulta. Si una información deberá añadirse en el informe, habrá
Nota
Creación de la consulta
Para crear la consulta base del informe, vamos a utilizar el editor de consultas.
1. Clique sobre en los botones de acceso rápido. Se muestra la ventana de creación de un nuevo elemento:
clique sobre “Consulta”. Se lanzará el asistente de creación de consultas.
2. Seleccione la opción “Selección (SELECT)”.
Efectivamente, la consulta que vamos a crear nos permitirá seleccionar los registros que se imprimirán en el
informe. Avance al paso siguiente.
3. La ventana de descripción de la consulta aparecerá. Vamos a construir la consulta seleccionando los
elementos que queremos en el resultado.
4. Doble clic sobre las rúbricas presentes en el análisis a la izquierda de la ventana de descripción. Las rúbricas
consideradas aparecerán entonces en el centro de la pantalla. Queremos imprimir en el informe:
Las informaciones referidas al cliente. En el fichero “Cliente”, doble clic sobre las rúbricas NombreCompleto,
Dirección, CodigoPostal, Ciudad y Pais.
Las informaciones referidas al pedido. En el fichero “Pedido”, doble clic sobre las rúbricas IDPedido y Fecha.
Las informaciones correspondientes al producto. En el fichero “Producto” , doble clic sobre las rúbricas
Referencia, Etiqueta y precioHT.
Las informaciones correspondientes a la línea de pedido. En el fichero “LineaPedido” doble clic sobre las
rúbricas Cantidad y TotalHT.
El orden en el que se insertan las rúbricas en la consulta es muy importante. Este orden es el
que se utilizará para mostrar los datos en el informe. Si el orden está definido correctamente, la
Nota
En este estado, esta consulta permite seleccionar todos los pedidos y las líneas de pedido correspondientes.
Queremos seleccionar los datos correspondientes a un solo pedido cuyo identificador conocemos. Vamos pues a
definir como parámetro el número de pedido.
Para gestionar el parámetro “Identificador del pedido”:
1. Seleccione en el centro de la pantalla la rúbrica Pedido.IDPedido.
2. Despliegue el botón “Condición de selección” y seleccione “Nueva condición”.
3. En la ventana que aparece, vamos a indicar que la condición de selección corresponde a un parámetro:
8. Guarde la consulta clicando sobre en los botones de acceso rápido. Valide si hiciera falta las
informaciones para guardarla.
Creación del informe basado en una consulta.
Para crear un informe:
Las rúbricas referidas a las líneas de pedido deberán quedarse en el cuerpo del informe. Estas rúbricas se
mostrarán para todas las líneas de pedidos del pedido.
Las rúbricas referidas a los totales del pedido se mostrarán en el pie de la página. Estas informaciones no
deberán repetirse para cada línea del pedido. Para las rúbricas TotalHT_Co y TotalTTC, clique sobre la línea
correspondiente a la rúbrica. Dentro de la columna “Bloque”, despliegue el combo y seleccione “Pie de
página”.
La siguiente tabla proporciona las distintas afectaciones de las rúbricas en el orden presentado por el asistente:
impresoras. Los márgenes físicos son aquellos reservados por las impresoras donde no se puede
imprimir. Además los márgenes físicos difieren en función de los modelos de impresoras.
Valide.
3. La ejecución del informe se muestra en la pantalla.
Vamos ahora a ubicar las informaciones del cliente y del pedido en la cabecera de la página:
1. Elimine el texto “Bono de pedido” que hay en la cabecera de la página.
2. Elimine los textos de delante de las informaciones del cliente (Nombre completo, …).
3. Posicione la rúbrica que contiene la ciudad junto al código postal.
4. Seleccione todas las informaciones del cliente y desplácelos con la ayuda del ratón hacia la derecha del
informe.
5. Suba el número de pedido y la fecha del pedido (arriba del bloque “Cabecera de página”).
contextuales (menú contextual de la ventana, menús contextuales de los campos, …), todos
estos menús se guardarán con la ventana.
En este código:
La función iPreview permite indicar que la impresión del informe se realizará en vista previa de impresión.
La función iInitReportQuery permite especificar los parámetros esperados por la consulta asociada al
informe. En nuestro caso, la consulta espera como parámetro el número de pedido. Este número de pedido
está en la columna COL_IDPedido del campo Tabla TABLE_REQ_BusquedaPedidos para la línea en curso.
La función iPrintReport permite lanzar la impresión del informe especificado (aquí, el informe
INF_Bono_de_pedido).
5. Cierre la ventana código y la ventana que contiene el menú contextual.
6. Guarde la ventana “WIN_Menu”.
Asociación del menú contextual al campo Tabla
Última etapa: Vamos a enlazar el menú contextual al campo Tabla.
1. En la ventana “WIN_Menu”, muestre la pestaña “Búsqueda de pedidos”.
2. Seleccione el campo Tabla y muestre su descripción (opción “Descripción” del menú contextual del campo).
3. En la pestaña “IHM”, despliegue el combo “Menu Ctx.).
4. Marque la opción “Añadir un menú contextual”, seleccione el menú “Menu_Pedido” y seleccione la opción “Al
principio” para indicar que el menú está situado antes del menú sistema.
5. Valide.
Prueba de impresión
Ya solo queda efectuar una prueba en real:
1. Lance la prueba de la ventana “WIN_Menu”.
2. Seleccione el panel pestaña “Búsqueda de pedidos”.
3. Especifique los criterios y lance una búsqueda.
4. Seleccione uno de los pedidos mostrados en el campo Tabla.
5. Imprima el pedido mediante el menú contextual
Si no ha creado las ventanas de las lecciones anteriores, puede seguir esta lección abriendo un
proyecto corregido: En el panel “Inicio”, dentro del grupo “Ayuda en línea”, despliegue “Guía de
auto-formación” y luego seleccione “Aplicación completa (Con ventanas)”.
Corregido
7. Vamos ahora a definir las opciones de clasificación de los datos en el informe. Por defecto, el asistente
propone la rúbrica utilizada como clave de recorrido del fichero de datos. Como queremos hacer un informe
que liste los clientes por país y por departamento, vamos a añadir una clasificación sobre estas rúbricas.
8. Para añadir una clasificación por país:
Clique sobre el botón “+” para añadir una rúbrica de clasificación.
En la ventana que se muestra, seleccione la rúbrica Cliente.Pais.
Las informaciones comunes a las distintas líneas están presentes en la cabecera de la rotura.
Los totales, contadores, … están en el fin de rotura.
Esta rotura permite agrupar una serie de registros de acuerdo con un mismo criterio. En nuestro
ejemplo, la rotura concierne al país y permite agrupar todos los clientes de un mismo país.
Desmarque las rúbricas IDCliente, Complemento, Teléfono, Movil y Email. Avance al paso siguiente.
16. Esta pantalla permite definir la configuración del informe.
Márgenes de impresión
Cuando elija los márgenes de impresión, no olvide tener en cuenta los márgenes físicos de las
Nota
impresoras. Los márgenes físicos son los márgenes reservados por la impresora en los que no es
posible imprimir. Además, los márgenes físicos difieren en función de los modelos de impresora.
Pruebe la ventana y sus opciones clicando sobre en los botones de acceso rápido.
Ahora vamos a finalizar este menú añadiendo una opción para cerrar la aplicación.
1. En el editor, seleccione la opción “Menú”.
2. En el menú contextual (clic derecho), seleccione la opción “Transformar para desplegar un sub-menu”.
3. En la zona de edición que se muestra, introduzca “Cerrar”.
4. Vamos a asociar esta opción de menú al atajo del teclado “[ALT]+[F4]”:
Seleccione la opción de menú “Cerrar”.
En el menú contextual (clic derecho), seleccione la opción “Descripción de la opción”.
En la pestaña “General”, en la zona “Atajo del teclado”, seleccione “F4” y marque “ALT”.
Valide
5. Muestre el código de la opción, y en el tratamiento “Selección de menú”, introduzca el siguiente código:
// Pregunta al usuario si realmente desea cerrar la aplicación
IF YesNo (No, “¿Cerrar la aplicación?”) = Yes THEN
// Fin de la aplicación
EndProgram ()
END
Examinemos este código:
Si no ha creado las ventanas de las lecciones anteriores, puede seguir esta lección abriendo un
proyecto corregido: En el panel “Inicio”, dentro del grupo “Ayuda en línea”, despliegue “Guía de
auto-formación” y luego seleccione “Aplicación completa (Con ventanas)”.
Corregido
Al tiempo y a medida que se va creando la consulta, el editor de consultas de WINDEV crea las
consultas en lenguaje natural (e igualmente en SQL).
Nota
De esta forma puede verificar que no está equivocándose para conseguir el objetivo de su
consulta.
4. En el asistente, seleccione un gráfico de tipo “Histograma”. Avance al paso siguiente del asistente.
5. Introduzca los parámetros del gráfico:
El título del gráfico: “Evolución de las ventas”.
La leyenda: el gráfico no tiene leyendas.
Las etiquetas deberán mostrarse.
Para las series (valores mostrados en el campo Gráfico): el campo gráfico mostrará una única serie
correspondiente al total TTC calculado por la consulta REQ_EvolucionVentas.
o Doble clic en el tablero “Fuentes de series”.
o Introduzca el texto “Serie 1”.
o La fuente corresponde a: Recorrido de un fichero o de una consulta.
o Los datos corresponden a la rúbrica “La_suma_TotalTTC” en la consulta “REQ_Evolucion_Ventas”.
11. Clique sobre para guardar la ventana y luego sobre para probar la ventana.
12. Clique sobre la pestaña “Gráfico” para visualizar el gráfico.
Para controlar el uso de un campo Gráfico, no dude en repasar los ejemplos proporcionados con
WINDEV:
Ejemplo
Como para el campo Gráfico, vamos a crear el campo Tablero cruzado dinámico en una nueva pestaña de la ventana
WIN_Menu.
Para crear una nueva pestaña en la ventana “WIN_Menu”:
1. Muestre si es necesario la ventana “WIN_Menu” en el editor de ventanas.
2. Doble clic sobre el campo Pestaña: la ventana de descripción del campo se mostrará.
3. En la pestaña “General”, seleccione el panel pestaña “Gráfico” y clique sobre el botón “Nuevo”. Una nueva
pestaña aparecerá.
4. Seleccione la nueva pestaña (con nombre “Panel 5”).
5. En la parte derecha de la pantalla, introduzca el texto del panel pestaña: “Tablero Cruzado Dinámico”.
6. En la parte derecha de la pantalla, seleccione una imagen en el catálogo de imágenes:
Clique en el botón “Catálogo”.
En el campo de búsqueda introduzca “Tablero”.
Seleccione el tema “Flat Soft” y valide.
Seleccione el segundo icono propuesto y valide las distintas pantallas.
7. Valide la ventana de descripción del campo Pestaña.
8. La nueva pestaña aparecerá en la ventana.
Creación del campo Tablero Cruzado Dinámico
Para crear un campo Tablero Cruzado Dinámico:
1. En la ventana “WIN_Menu”, seleccione la pestaña “Tablero Cruzado Dinámico” si hiciera falta.
2. En el panel “Creación”, en el grupo “Datos”, despliegue “Tabla y lista” y seleccione “Tablero Cruzado
Dinámico (TCD)”. El campo aparecerá bajo el cursor del ratón.
3. Clique en la pestaña “Tablero cruzado dinámico”. Se lanzará el asistente de creación de un campo Tablero
cruzado dinámico.
4. Avance al paso siguiente.
Puede guardar el resultado del tablero cruzado dinámico para evitar el recálculo a cada consulta.
Clique sobre las “+” para desplegar las distintas columnas y líneas.
Detenga la prueba. Vamos a hacer una pequeña mejora en este tablero cruzado dinámico. Efectivamente, nada
indica que una de las cifras en las celdas corresponde a una cantidad. Vamos a utilizar una máscara de
visualización específica para este valor.
Para poner una máscara de visualización en una celda:
1. Muestre la descripción del campo Tablero Cruzado Dinámico (doble clic sobre el campo).
2. En la pestaña “Contenido”, clique sobre “VAL_SinNombre2”. La descripción de los valores mostrados en las
celdas aparecerá.
3. En la zona “Máscara”, añada el prefijo “Cant: “.
Para ello, vamos a utilizar el protocolo SMTP. Este es el modo más utilizado actualmente en el mundo.
Para más detalles sobre otros métodos, consulte la ayuda en línea.
Si no ha creado las páginas de las lecciones anteriores, puede seguir esta lección abriendo un
proyecto corregido: En el panel “Inicio”, dentro del grupo “Ayuda en línea”, despliegue “Guía de
auto-formación” y luego seleccione “Aplicación completa (Con ventanas)”.
Corregido
También hay disponible un proyecto corregido: En el panel “Inicio”, dentro del grupo “Ayuda en
línea”, despliegue “Guía de auto-formación” y luego seleccione “Aplicación completa
(Corregida)”.
Creación de la ventana
Cree una nueva ventana:
1. Abra si hiciera falta el proyecto “WD Aplicación Completa”.
2. Cree una nueva ventana en blanco.
El campo que permitirá la entrada de la dirección del destinatario será un campo que propondrá las direcciones
de los clientes que hay en la base de datos pero también permitirá al usuario introducir una dirección distinta.
Para ello, vamos a utilizar un campo de tipo “Combo con entrada”, enlazado al fichero de datos Cliente.
1. En el panel “Creación”, dentro del grupo “Campos habituales”, clique sobre “Combo”.
2. La forma del campo aparecerá bajo el cursor del ratón.
3. Clique bajo el campo “Remitente”: El asistente de creación del campo Combo se lanza automáticamente.
4. Seleccione la opción “Mostrar los datos de un fichero o de una consulta existente”. Avance al paso siguiente.
5. Seleccione el fichero “Cliente”. Avance al paso siguiente.
6. Queremos mostrar en el campo las direcciones email de los clientes:
Desmarque la rúbrica “IDCliente”.
Capítulo 3 – Aplicación completa con datos |200
Marque la rúbrica “Email”.
Avance al paso siguiente.
7. La rúbrica de clasificación es la rúbrica “Email”. Avance al paso siguiente.
8. El valor de retorno es también la rúbrica “Email”. Avance al paso siguiente.
9. Conserve las opciones por defecto. Avance al paso siguiente.
10. En la pantalla “Parámetros suplementarios”, marque la opción “Autorizar la entrada”. De este modo, el
usuario podrá introducir una nueva dirección email. Avance al paso siguiente.
11. Modifique el nombre y el texto del campo Combo:
El nombre del campo es “COMBO_Destinatario”.
El texto del campo es “Destinatario”.
12. Valide el asistente. El campo se crea automáticamente en la ventana.
Para el cuerpo del mensaje, vamos a utilizar un campo de edición HTML: el usuario podrá así dar forma
fácilmente el texto del email mediante una barra de utilidades específica.
1. En el panel “Creación”, en el grupo “Campos habituales”, despliegue “Edición”.
2. Seleccione un campo de edición predefinido “Texto HTML”.
3. La forma del campo aparecerá bajo el cursor del ratón.
4. Clique bajo el campo “Sujeto”: El campo de edición se crea automáticamente.
5. Agrande el campo para que puedan visualizarse varias líneas.
6. Muestre la ventana de descripción del campo (doble clic sobre el campo).
En la pestaña “General”, modifique el modo de visualización de la barra de utilidades HTML. Esta barra de
utilidades deberá estar siempre visible.
Valide la ventana de descripción del campo.
7. Si hiciera falta, reposicione el campo para que se muestre correctamente la barra de utilidades.
Para que el usuario pueda añadir un dato adjunto, vamos a proponerle un selector de ficheros. Pero en vez de
crear todas las piezas, vamos a utilizar un campo de edición pre-definido de tipo fichero. Mediante el menú
contextual del campo (opción “Recorrer”), el usuario podrá seleccionar el fichero a adjuntar.
1. En el panel “Creación”, dentro del grupo “Campos habituales”, despliegue “Edición”. Se mostrará la lista de
los campos predefinidos disponibles por defecto.
2. Seleccione el campo “Fichero” y haga un “Drag and Drop” hacia la ventana “WIN_Envio_de_un_email”: deje
el campo bajo el campo “Texto HTML”. El selector de ficheros se crea inmediatamente.
Este código utiliza una variable avanzada de tipo EmailSMTPSession. Las distintas propiedades de esta variable
permiten definir las características de la sesión SMTP. La función EmailStartSession utilizada junto a esta
variable, permite abrir la sesión.
Código de preparación del email:
MiMensaje is Email
MiMensaje..Sender = EDT_Remitente
MiMensaje..Subjec t= EDT_Sujeto
MiMensaje..HTML = EDT_Texto_HTML
MiMensaje..Message = HTMLToText (EDT_Texto_HTML)
Capítulo 3 – Aplicación completa con datos |202
// Añadir un destinatario
Add (MiMensaje..Recipient, COMBO_Destinatario..DisplayedValue)
// Añadir el dato adjunto si se desea
IF EDT_Fichero <> “” THEN
EmailLoadAttachment (MiMensaje, EDT_Fichero)
END
Este código utiliza una variable de tipo Email. Las distintas propiedades de esta variable permiten definir las
características del email a enviar. Este código asocia pues el contenido de los distintos campos de la ventana
a las propiedades de la variable de tipo Email.
Código del envío del email:
// Envío del email
IF EmailSendMessage (MiSesion, MiMensaje) = False THEN
Error (“Error de envío”, ErrorInfo ())
ELSE
ToastDisplay (“Mensaje enviado”, toastShort, vaMiddle, haCenter)
END
El envío del email se realiza sencillamente con la función EmailSendMessage. Hay que pasarle como
parámetro la variable que contiene las características de la sesión SMTP y la variable que contiene las
características del email a enviar.
Si se envía el email, se muestra un mensaje de tipo Toast indicando que el email se ha enviado. Un mensaje
de tipo Toast corresponde a un mensaje furtivo.
Código de cierre de la sesión SMTP
// Cierre de la sesión SMTP
EmailCloseSession (MiSesion)
Este código cierra la sesión utilizando la función EmailCloseSession.
Guarde la página y su código ( o [CTRL]+[S]).
Mejoras en la ventana
Vamos a aportar algunas mejoras a nuestra página PopUp:
Añadir un botón de cierre.
Mejorar la forma de la ventana con la gestión de los anclajes y el orden de navegación.
Lanzar la ventana desde la ventana “WIN_Menu”.
Cierre de la ventana
Para añadir un botón que permita cerrar la ventana:
1. En el panel “Creación”, dentro del grupo “Campos habituales”, despliegue “Botón”: la lista de los botones
predefinidos se mostrará.
2. Clique sobre el botón “Cerrar”.
3. Clique en la ventana, en la posición donde se deberá crear el botón (por ejemplo, bajo, a la derecha del
botón “Enviar”).
Dar forma a la ventana
Para definir los anclajes:
Seleccione los campos “Remitente”, “Destinatario” y “Sujeto”: estos campos deberán anclarse en anchura.
Seleccione el campo “Texto HTML”: este campo deberá anclarse en anchura y en altura.
Seleccione los botones: estos campo deberán anclarse a la derecha y bajo.
Seleccione el campo de selección de fichero: este campo deberá anclarse en anchura y bajo.
Para definir el orden de navegación:
modificarse:
Proporcionando un orden de entrada automático: el primero será el campo situado más
arriba a la izquierda, el segundo, el situado a su derecha o inmediatamente debajo, …
Especificando un orden de entrada por selección.
4. Pulse de nuevo sobre la tecla [F5] para hacer desaparecer los números.
5. Guarde la ventana ( o [CTRL]+[S]).
Lance la prueba del proyecto ( en los botones de acceso rápido) y la apertura de la ventana de envío de
emails.
Si no ha creado las páginas de las lecciones anteriores, puede seguir esta lección abriendo un
Corregido
proyecto corregido: En el panel “Inicio”, dentro del grupo “Ayuda en línea”, despliegue “Guía de
auto-formación” y luego seleccione “Aplicación Completa (Corregida)”.
Si usted utiliza (o si el usuario final utiliza) Windows Vista (o un sistema operativo más reciente),
Notas
7. En la pestaña “Ficheros”, seleccione la opción “Activar el histórico de las conexiones”. Esta opción permite al
supervisor saber quién está conectado, cuando y a qué hora.
8. Seleccione la pestaña “Opciones”. Esta pestaña permite definir el modo de identificación del usuario:
Gestión para el groupware usuario.
Uso de un anuario LDAP. En este caso, cuando se instala la aplicación, el usuario podrá introducir los
parámetros de su anuario LDAP.
Uso de la autentificación Windows.
Capítulo 3 – Aplicación completa con datos |208
9. Valide. Aparecerá un mensaje indicando que por defecto, se ha creado un usuario Supervisor.
Por defecto, solo existe un usuario, el supervisor. La primera vez que se lanza la aplicación,
conéctese utilizando el nombre “Supervisor”. Podrá entonces definir la contraseña utilizada por el
supervisor.
Notas
1. Lance la prueba del proyecto ( en los botones de acceso rápido). Una ventana de login aparecerá.
2. Conéctese como supervisor.
3. Defina su contraseña y de su confirmación. Valide.
4. Aparecerá un nuevo menú, permitiendo probar su aplicación o configurarla.
5. Elija la opción “Configurar el Groupware”.
3. Clique sobre el botón “Guardar”. El grupo “Pruebas” aparecerá en la lista de los grupos definidos por el
groupware usuario.
Para asociar el usuario al grupo:
1. Seleccione el usuario “Prueba_1” en la ventana.
2. Realice un Drag and Drop del usuario “Prueba_1 hacia el grupo “Pruebas”.
1. Lance la prueba del proyecto ( en los botones de acceso rápido). Una ventana de login aparecerá.
2. Conéctese como usuario “Prueba_1” con la contraseña “Prueba_1”. Valide.
3. Se lanza la aplicación. Podrá observar que los botones “Nuevo” y “Modificar” están “grisados” y que la opción
“Enviar un Email” es invisible.
He aquí varios casos en los que los componentes pueden ser interesantes.
Trabajo en equipo
Un desarrollador crea y mantiene un componente externo que pone a disposición de los otros desarrolladores. No hay
riesgo de hacer modificaciones hechas “por error”!
Paso a paso
Paso 1: Creación de un componente externo
Vamos a crear un componente externo a partir del proyecto “WD Aplicación Completa”. Este proyecto permite
gestionar pedidos, productos y clientes. El componente externo que vamos a crear, nos permitirá conocer
instantáneamente desde otra aplicación, los clientes correspondientes a una ciudad determinada.
Cuando se llame al componente externo, podrá:
Pasar una ciudad en parámetro
Recuperar una cadena que contenga el nombre del cliente y el importe total de sus pedidos.
Para no tener que desarrollar el código necesario para el funcionamiento del componente, el proyecto “WD Aplicación
Completa” contiene todos los elementos necesarios.
Si no ha creado las páginas de las lecciones anteriores, puede seguir esta lección abriendo un
proyecto corregido: En el panel “Inicio”, dentro del grupo “Ayuda en línea”, despliegue “Guía de
auto-formación” y luego seleccione “Aplicación completa (Con ventanas)”.
Corregido
También hay disponible un proyecto corregido: En el panel “Inicio”, dentro del grupo “Ayuda en
línea”, despliegue “Guía de auto-formación” y luego seleccione “Aplicación completa
(Corregida)”.
Un componente
…
En cualquier momento, puede elegir la configuración sobre la que va a trabajar y generar en una
única operación todos los elementos para todas las configuraciones de un proyecto.
Si la opción “Autorizar la traducción del componente” está marcada, será posible traducir a partir de la aplicación
utilizando el componente los elementos especificados del componente.
Esta traducción será realizada con la ayuda de WDMSG, módulo independiente que permite extraer y reintegrar
los mensajes a traducir de un proyecto.
En este ejemplo, no marque esta opción. Avance al paso siguiente.
7. Elija las lenguas del componente. Nuestro ejemplo solo contiene el francés. Avance al paso siguiente.
8. El asistente propone a continuación gestionar las distintas versiones del componente. En nuestro ejemplo, el
componente acaba de ser creado
Conserve las opciones por defecto. Avance al paso siguiente.
9. Introduzca las distintas informaciones concernientes al componente:
Propietario
Texto, Copyright, …
10. Avance al paso siguiente.
11. Podrá asociar una imagen a su componente. Los usuarios del componente podrán identificarlos rápidamente
en el panel “Catálogo de ejemplos”. Avance al paso siguiente.
12. Especifique la presentación general del componente. Esta presentación permitirá al usuario del componente
conocer su finalidad. Introduzca por ejemplo:
13. Avance al paso siguiente. El asistente efectuará ahora la generación automática de la documentación del
componente. Esta documentación podrá estar basada en los comentarios insertados en su código.
Si creó el componente a partir del ejemplo “WD Aplicación Completa (con ventanas)”, seleccione
el subdirectorio “EXE\CompoPedidosPorCiudad”, y luego el fichero
“CompoPedidosPorCiudad.wdi”. El proeycto “WD Aplicación Completa (Con ventanas)” está
Notas
7. Después de haber clicado sobre “Abrir”, la descripción de nuestro componente se mostrará. Esta descripción
contiene:
En la pestaña “General”, los elementos introducidos cuando se creó el componente, así como su
emplazamiento.
Se puede acceder en cualquier momento a la descripción del componente. Basta con seleccionar
el componente en el explorador del proyecto y seleccionar la opción “Descripción” del menú
Notas
contextual. En este caso, también puede definirse el modo de carga del componente.
Vamos ahora a crear una nueva ventana en blanco para utilizar el componente.
1. Cree una ventana en blanco.
2. Guarde la ventana.
La ventana tiene como título “Clientes por ciudad”.
El nombre de la ventana es “WIN_Clientes_por_ciudad”.
Valide.
3. Muestre el código asociado a la ventana (opción “Código” del menú contextual”).
4. En el tratamiento “Fin de inicialización”, vamos a llamar la función “LocalizacionDatos” del componente. Esta
función espera como parámetro el camino que permita acceder a los ficheros de datos manipulados por el
componente. Introduzca el camino a los datos del ejemplo “WD Aplicación Completa”.
COL_Componentes.LocalizacionDatos (…
“C:\WINDEV\Autoformacion\Autoformacion\Ejercicios\” + …
“WD Aplicación Completa\Exe\CompoPedidosPorCiudad”)
// Indique el camino de SUS datos
5. Cierre el editor de código.
6. En la ventana, añada los campos siguientes:
Un campo de edición con el texto “Ciudad” y por nombre “EDT_Ciudad”.
Un campo Tabla “TABLE_Resultado”, relleno mediante programación y compuesto por dos columnas:
o Una columna “Nombre” de tipo Texto.
o Una columna “Total Ventas” de tipo Numérico.
Un botón con texto “Buscar” y por nombre “BTN_Buscar”.
Pruebe la ventana clicando sobre el botón en los botones de acceso rápido. En el campo de edición,
introduzca “París” (Respetando la mayúscula) y luego clique sobre el botón “Buscar”. Se mostrará la lista de
clientes.
Distribución simple
En este caso, deberá proporcionar todos los ficheros necesarios para el buen funcionamiento de su componente.
Estos ficheros se crean cuando se genera el componente (ficheros WDI, WDK, WDO, imágenes, otros documentos,
…). Estos ficheros se copiarán manualmente desde su directorio original hacia el directorio de destino. Los proyectos
WINDEV que utilizarán estos componentes, irán a buscar los ficheros dependientes a este directorio de destion.
Lista de ficheros a proporcionar para una distribución simple:
Ficheros generados automáticamente por WINDEV (WDK, WDI, …).
Ficheros de dependencias.
Si el componente utiliza estos ficheros de dependencias, hará que proporcionar el fichero WDO. Este fichero
contiene las referencias a los distintos ficheros externos utilizados por el componente.
Distribución profesional
La difusión de los componentes con la ayuda de un procedimiento de instalación, consiste en proporcionar a los
usuarios del componente de WINDEV, un programa de instalación. Este programa instala todos los ficheros necesarios
para el uso del componente en el directorio especificado por el usuario.
Este modo de instalación permite gestionar automáticamente:
El fichero WDO y la instalación de los ficheros suplementarios utilizados por el componente.
La instalación automática de las herramientas necesarias (MDAC, Driver ODBC para HFSQL, …).
La actualización automática de los ficheros de datos utilizados por el componente (si fuera necesaria).
La desinstalación del componente.
Cierre el proyecto”CompoUtilizacion”: En el panel “Inicio”, dentro del grupo “General”, despliegue “Cerrar” y
seleccione “Cerrar el proyecto”.
Abra el proyecto “WD Aplicación Completa”. Seleccione si es necesario la configuración del proyecto
correspondiente al componente en el explorador del proyecto.
Para crear la instalación, en el panel “Proyecto”, clique sobre “Procedimiento de instalación”. Se lanzará el
asistente de creación de un componente.
No vamos a detallar los distintos modos de instalación de un componente. Siga las instrucciones del asistente. Si
necesitara obtener más detalles relativos a la instalación de componentes, consulte la ayuda en línea (palabra clave:
“Componente externo, Distribuir un componente”).
(“casi”) todo!
Ejemplo práctico
Para probar y manipular un WebService, ponemos a su disposición un WebService específico para el Curso de Auto-
Formación.
Integrado con el proyecto “WD Aplicación Completa”, este WebService permite interrogar una base proveedor para
verificar la disponibilidad (stock) de un producto a partir de su referencia.
En primer lugar vamos a importar el WebService en el proyecto “WD Aplicación Completa”, y luego utilizarlo en la
aplicación para verificar a partir de una ficha Producto, la disponibilidad del producto visualizado.
Importación de un WebService
Cierre si es necesario el proyecto en curso. Aparecerá la ventana de bienvenida.
En la ventana de bienvenida, clique sobre “Curso de Auto-formación” y seleccione el proyecto “Aplicación
completa (Ejercicio)”. Se cargará el proyecto.
Astucia: Si no se muestra la ventana de bienvenida, en el panel “Inicio”, dentro del grupo “Ayuda en línea”,
despliegue “Guía de Auto-formación” y luego seleccione la opción “Aplicación Completa (Ejercicio)”.
Si no ha creado las páginas de las lecciones anteriores, puede seguir esta lección abriendo un
proyecto corregido: En el panel “Inicio”, dentro del grupo “Ayuda en línea”, despliegue “Guía de
auto-formación” y luego seleccione “Aplicación completa (Con ventanas)”.
Corregido
También hay disponible un proyecto corregido: En el panel “Inicio”, dentro del grupo “Ayuda en
línea”, despliegue “Guía de auto-formación” y luego seleccione “Aplicación completa
(Corregida)”.
Si fuera preciso, situese bajo la configuración del proyecto “Ejecutable Windows 32 bits”: en el explorador del
proyecto, en la carpeta “Configuraciones”, doble clic sobre “Ejecutable Windows 32 bits”.
Para importar un WebService en el proyecto:
1. En el panel “Proyecto”, dentro del grupo “Proyecto”, despliegue “Importar” y seleccione “Un WebService”.
2. Se lanza el asistente de importación. Avance al paso siguiente.
3. Indique la dirección a la que la descripción WSDL del WebService deberá importarse:
http://exemples.webdev.info/WSAUTOFORMATION_WEB/awws/WSAutoformation.awws?wsdl
Recuerde: este WebService permite interrogar una base proveedor para verificar la disponibilidad (stock) de
un producto a partir de su referencia.
5. Valide la ventana de información. El WebService importado está presente en la carpeta “WebServices” del
explorador del proyecto.
En nuestro ejemplo, el WebServicio importado se llama: WSAutoformation. Contiene una función: ProductoEnStock.
La función ProductoEnStock contiene 2 estructuras:
ProductoEnStock
ProductoEnStockRespuesta
La estructura ProductoEnStock contiene una variable sReferenciaProducto correspondiente al valor a pasar como
parámetro para la llamada a la función ProductoEnStock.
La estructura ProductoEnStockRespuesta contiene una variable (ProductoEnStockResultado) correspondiente al valor
de retorno de la función.
Consumo de un WebService
En nuestro ejemplo “WD Aplicación Completa”, vamos a integrar la llamada al WebService en la pestaña que permite
ver la lista de productos. Un botón “En stock? “ permitirá verificar la disponibilidad del producto mostrado a través del
WebService.
Para utilizar el WebService:
1. Abra en el editor la ventana “WIN_Menu” (doble clic sobre su nombre en el explorador del proyecto, por
ejemplo).
2. En el panel pestaña “Lista de productos”, añada un botón:
En el panel “Creación”, dentro del grupo “Campos habituales”, clique sobre .
Clique en la ventana bajo el botón “Modificar”.
El botón se crea automáticamente.
3. Modifique las características del botón (opción “Descripción” del menú contextual). Este campo tiene como
nombre “BTN_EnStock” y por texto “En Stok?”.
Si no ha creado las páginas de las lecciones anteriores, puede seguir esta lección abriendo un
proyecto corregido: En el panel “Inicio”, dentro del grupo “Ayuda en línea”, despliegue “Guía de
auto-formación” y luego seleccione “Aplicación completa (Con ventanas)”.
Corregido
También hay disponible un proyecto corregido: En el panel “Inicio”, dentro del grupo “Ayuda en
línea”, despliegue “Guía de auto-formación” y luego seleccione “Aplicación completa
(Corregida)”.
Para mostrar el tablero de a bordo de un proyecto (si no lo ha hecho ya), en el panel “Proyecto”, en el grupo
El tablero de a bordo
El tablero de a bordo del proyecto está formado por distintos Widgets. Cada Widget muestra una o varias
informaciones relativas al proyecto.
Por ejemplo, el Widget “Realizaciones” permite lanzar directamente el analizador de realizaciones o de abrir el último
informe de realizaciones efectuado.
El Widget “Auditoría estática y Compilación”, permite ver rápidamente si el proyecto contiene errores de compilación.
En cualquier momento, se puede activar o desactivar un Widget, añadirlo o eliminarlo.
Pruebas automáticas
Una de las funcionalidades más interesantes del tablero de a bordo es informar sobre las pruebas que han de
realizarse sobre la aplicación.
Hemos realizado ya numerosas pruebas de utilización, a medida que realizábamos nuestra aplicación.
Las pruebas automáticas son una categoría de pruebas específicas. Las pruebas automáticas permiten automatizar
algunas manipulaciones de sus ventanas. Estas pruebas se guardan en forma de escenarios WLangage, fácilmente
Capítulo 3 – Aplicación completa con datos |232
modificables en el editor de código. Una vez guardada, la prueba automática puede ser reejecutada tantas veces
como se desee, para probar, por ejemplo el impacto de una modificación sobre una ventana, un procedimiento, …
Hagamos inmediatamente un ensayo! Vamos a crear una prueba automática en la ventana de introducción que
hemos creado al principio de esta lección.
Para crear una prueba automática sobre una ventana, basta con probar la ventana:
1. Abra la ventana “WIN_Menu” en el editor.
2. En el panel “Pruebas automáticas”, en el grupo “Pruebas”, despliegue “Nuevo” y seleccione “Guardar una
nueva prueba”.
3. En la ventana que aparece, clique sobre “Empezar el registro”.
4. Se lanza la prueba de la ventana.
5. Clique sobre la pestaña “Búsqueda de pedidos”,.
6. Seleccione el modo de liquidación “Carta bancaria”.
7. Clique sobre el botón “Buscar”.
8. Cierre la ventana por el menú “Menu .. Cerrar” y confirme el fin de la aplicación.
Si no ha seguido el curso completo, esta opción puede no existir. En este caso, cierre la ventana
Notas
utilizando el aspa.
9. La prueba ha finalizado
10. El editor de pruebas propone registrar una descripción para la prueba. La prueba se llama “Prueba de
búsqueda de pedidos”. Valide.
11. El código de la prueba en WLangage aparecerá en el editor de código. Cierre esta ventana de código.
Las funciones WLangage que permiten realizar las pruebas automáticas son las funciones
Notas
PiloteXXX (EMULATEXXX).
Vamos ahora a hacer una modificación en nuestra ventana, y luego repasar la prueba. La modificación se
realizará en el botón “Buscar”. Vamos a ponerlo en gris.
1. Muestre si es necesario la ventana “WIN_Menu”.
2. En el editor, clique sobre la pestaña “Búsqueda de pedidos” y seleccione el botón “Buscar”.
3. Muestre la descripción del botón “Buscar” (opción “Descripción” del menú contextual).
4. En la pestaña “IHM”, seleccione la opción “Grisado”.
5. Valide la ventana de descripción del campo.
6. Guarde la ventana.
7. Pase la prueba asociada a la ventana: En el panel “Pruebas automáticas”, despliegue “Ejecutar” y seleccione
la opción “Lanzar las pruebas”.
8. La prueba muestra ahora un errore.
9. Muestre la descripción del botón “Buscar” (opción “Descripción” del menú contextual).
10. En la pestaña “IHM”, seleccione la opción “Activo”.
11. Valide la ventana de descripción del campo.
12. Vuelva a lanzar la prueba. La prueba ahora pasa correctamente.
Otra posibilidad del editor de pruebas es la posibilidad de modificar o añadir código WLangage en los escenarios de
las pruebas. Vamos por ejemplo a añadir algunas líneas de código para verificar que el campo Tabla contiene al
menos un registro.
1. Muestre el editor de pruebas (por ejemplo, doble clic sobre “TEST_Menu” en el explorador del proyecto).
2. Muestre el código de la prueba (Opción “Código” del menú contextual de la “Prueba de búsqueda de
pedidos”).
5. Clique sobre el enlace “Lanzar la prueba” (o clique sobre el icono ). La prueba pasa con éxito.
La posibilidad de utilizar un juego de valores de prueba.
La definición de parámetros de entrada y de salida de la prueba.
La posibilidad de crear una biblioteca de pruebas para probar un ejecutable por ejemplo sobre una máquina
distinta del puesto de desarrollo.
Par más detalles sobre las pruebas automáticas, le aconsejamos consultar la ayuda en línea (palabra clave: “Prueba
automática”).
Cierre el editor de pruebas automáticas.
Si no ha realizado las manipulaciones de las lecciones anteriores, puede seguir esta lección
Corregido
abriendo un proyecto corregido: En el panel “Inicio”, dentro del grupo “Ayuda en línea”,
despliegue “Guía de auto-formación” y luego seleccione “Aplicación completa (Corregida)”.
Si no ha seguido el curso completo, esta opción puede no existir. En este caso, cierre la ventana
Notas
utilizando el aspa.
La telemetría permite obtener estadísticas detalladas sobre el uso de su aplicación por los
usuarios finales. Gracias a la telemetría, conocerá todo sobre sus aplicaciones desplegadas y
podrá mejorarlas.
Notas
Cuando se modifica una aplicación, para evitar el librar todo el ejecutable, se pueden librar
recursos complementarios (ventanas, informes, …) en forma de parches. Estos parches son de
hecho bibliotecas añadidas.
Notas
Si el ejecutable se crea con la opción “Si, el ejecutable tendrá en cuenta las actualizaciones por
parches”, cuando se lanza la aplicación, los elementos existentes en el parche sustituirán a los
elementos existentes en la biblioteca de la aplicación.
Aquí vamos a probar el ejecutable después de su generación. Para que los datos se muestren
Notas
durante la prueba, será preciso marcar la opción “Directorio de la aplicación o directorio actual”.
11. Seleccione la opción “Directorio de la aplicación o directorio actual”. Avance al paso siguiente.
12. Ahora vamos a introducir las informaciones del ejecutable. Estas informaciones se muestran en el explorador
de Windows cuando se seleccionan las propiedades del fichero.
Introduzca por ejemplo las siguientes informaciones:
ejecutable.
La opción “Dll del framework junto al ejecutable” permite utilizar solamente las librerías necesarias. Estas Dll se
copian en el directorio del ejecutable.
La opción “Framework integrado en el ejecutable” permite difundir únicamente el ejecutable (las Dll están presentes
en el ejecutable).
La opción “Framework común” permite utilizar el framework común a todas las aplicaciones WINDEV instaladas en el
puesto. Con esta opción, el framework se instala solamente una vez en el puesto (es posible descargarlo por Internet)
También es posible clicar directamente sobre las etapas indicadas en el asistente para acceder
directamente a una pantalla del asistente. Las opciones por defecto de las otras pantallas serán
Notas
validadas automáticamente.
Creación de la instalación
La creación de la instalación es una operación muy sencilla. Un asistente le permite definir las selecciones principales.
Si las opciones propuestas por el asistente no bastan, se puede utilizar el editor de instalación. No detallaremos su
uso en esta lección. Para más detalles, consulte la ayuda en línea.
Le proponemos aquí detallar todos los pasos de la creación del programa de instalación para conocer todas las
posibilidades de WINDEV. En cualquier momento podrá clicar sobre el botón verde para validar la totalidad de
pantallas del asistente.
Para crear el programa de instalación:
1. En el panel “Proyecto”, en el grupo “Generación”, despliegue “Procedimiento de instalación” y seleccione la
opción “Crear el procedimiento de instalación”. El asistente de creación del ejecutable y de instalación se
lanzará.
2. Ya habíamos creado el ejecutable: las opciones elegidas están memorizadas. Solo tendremos que modificar el
directorio de instalación de los ficheros de datos:
En el apartado “Ejecutable” del asistente (en el menú a la izquierda), clique sobre “Datos y Groupware”.
Seleccione la opción “Directorio de datos de la aplicación”. Esta opción permite utilizar la norma Windows
para la instalación de los ficheros de la aplicación.
3. Clique en el asistente sobre el título “Complementos” del apartado “Ejecutable”.
4. El asistente propone realizar una copia de seguridad del proyecto. Seleccione la opción “No: No hacer copia
de seguridad del proyecto” y avance al paso siguiente.
5. El asistente propone crear la página de novedades.
Si la aplicación tiene ya un sistema de ayuda, es posible utilizarlo para completarlo con una
Notas
página de novedades.
7. Valide el mensaje. El ejecutable se crea automáticamente (con las opciones que hemos definido durante la
creación del ejecutable) y el sistema de ayuda se ha creado. Puede introducir las informaciones específicas en
el sistema de ayuda. Para el ejemplo, introduzca las informaciones creadas por defecto. Para retomar la
creación del programa de instalación, clique sobre la opción “Continuar con la creación del procedimiento de
instalación”.
El software “Informes & Consultas” es gratuito y de libre distribución con sus aplicaciones
creadas con WINDEV. Consulte la licencia para más detalles sobre las condiciones de
Notas
redistribución.
Si no ha realizado las manipulaciones de las lecciones anteriores, puede seguir esta lección
Corregido
abriendo un proyecto corregido: En el panel “Inicio”, dentro del grupo “Ayuda en línea”,
despliegue “Guía de auto-formación” y luego seleccione “Aplicación completa (Corregida)”.
4. Valide.
Parametrización del análisis
Vamos ahora a abrir el análisis para parametrizar los ficheros y las rúbricas utilizables en el software “Informes &
Consultas”.
Abra el análisis de su proyecto: clique sobre en los botones de acceso rápido del menú de WINDEV.
Por defecto, todos los ficheros de datos y todas sus rúbricas son visibles y manipulables con el software “Informes
& Consultas”. Si su aplicación contiene informaciones sensibles(contraseñas, …) puede poner estos ficheros de
datos o estas rúbricas invisibles para el software “Informes & Consultas”.
A partir del software “Informes & Consultas”, el usuario no puede añadir, modificar o eliminar
registros (las funciones HAdd, HModify, y HDelete están prohibidas). Tampoco es posible
Notas
Para tener en cuenta las modificaciones efectuadas en el análisis, es necesario regenerar el análisis (opción
“Generación” en el panel “Análisis”). Una modificación automática de los ficheros de datos está propuesta para
tener en cuenta las modificaciones efectuadas.
Parametrización de los informes
Cuando se crea un informe, es posible especificar si este informe es modificable en el software “Informes &
Consultas”.
Para poner el informe “INF_TABLA_REQ_BusquedaPedidos” presente en el proyecto “WD Aplicación Compoleta”
modificable para el software “Informes & Consultas”:
1. Abra el informe “INF_TABLA_REQ_BusquedaPedidos” en el editor de informes.
2. Muestre la descripción del informe (opción “Descripción del informe” del menú contextual).
3. En la pestaña “Opciones”, marque “Informe modificable por Informes & Consultas”.
4. Marque:
La opción “Interface modificable solamente” para que solamente el interface del informe pueda modificarse
con Informes & Consultas.
La opción “Todo modificable (interface y código)” para que todo el informe sea modificable por Informes &
Consultas.
Si el asistente propone la creación del fichero de ayuda, valide los distintos mensajes.
Notas
Si la aplicación realizada deber instalarse sobre Windows Vista o superior con el UAC activo, es
necesario configurar la aplicación y su instalación para instalar y utilizar los ficheros de datos en
el directorio de datos de la aplicación. En este caso:
Cuando se crea el ejecutable, en el paso “Directorio de ficheros de datos” seleccione la
Notas
Conclusión
Toda la fase de desarrollo de nuestra aplicación ha terminado. Las dos próximas lecciones le permitirán descubrir:
Como transformar su aplicación en una aplicación multi-línea.
Como integrar su aplicación en el Gestionario de fuentes (GDS).
Si no ha realizado las manipulaciones de las lecciones anteriores, puede seguir esta lección
Corregido
abriendo un proyecto corregido: En el panel “Inicio”, dentro del grupo “Ayuda en línea”,
despliegue “Guía de auto-formación” y luego seleccione “Aplicación Completa (Corregida)”.
En las opciones lingüísticas, se puede escoger el sentido de la escritura del idioma (pestaña
“Varios”, opción “Sentido de la escritura”). Así se puede crear los interfaces con un idioma que
Notas
Valide. Un mensaje propone sincronizar los distintos elementos del proyecto. Responda “Si”. Todos los elementos
del proyecto abiertos en el editor (ventanas, informes, …) se cerrarán y el o los idiomas suplementarios, se
añadirán a todos los elementos.
1. Muestre el editor de análisis.: Clique sobre en los botones de acceso rápido del menú de WINDEV.
2. En la descripción del análisis (opción “Descripción del análisis” del menú contextual), seleccione la pestaña
“Internacional”.
3. La lista de los distintos idiomas gestionados por el análisis se mostrará. El inglés no está gestionado:
Clique sobre el botón “Añadir”.
Seleccione “Inglés”.
Valide la ventana de adición de las lenguas.
Para tener en cuenta todas las lenguas del proyecto ligado al análisis en curso, también es
Notas
Para introducir las informaciones compartidas en los distintos idiomas, examinemos un caso sencillo: la entrada
de texto del campo ligado a la rúbrica “Dirección” del fichero “Cliente”:
1. Seleccione el fichero Cliente.
2. Muestre la descripción de las rúbricas de un fichero de datos (opción “Descripción de las rúbricas” del menú
contextual del fichero).
3. Seleccione la rúbrica “Dirección” y muestre los parámetros del campo enlazado con la rúbrica seleccionada
(informaciones compartidas). Para ello, clique sobre la doble flecha bajo de la pantalla
En cualquier momento con las utilidades WDMSG y WDTRAD, dos utilidades que
permiten extraer, traducir y reintegrar los elementos a traducir.
Para tener en cuenta las modificaciones realizadas en el análisis, es necesario generar el análisis: en el panel
“Análisis”, dentro del grupo “Análisis”, clique sobre “Generación”.
10. Actualice las ventanas que utilizan el modelo de ventanas clicando en el icono en la cinta naranja. Valide
la ventana de actualización.
11. Cierre el modelo de ventanas mostrado en el editor.
4. Esta ventana permite introducir todos los mensajes de su programa en todos los idiomas del proyecto.
5. En la zona “Inglés”, introduzca “Exit from the application?” y valide.
3. Especifique:
Si los parámetros regionales deberán estar automáticamente activados según el idioma en curso de
introducción. En este caso, si el idioma necesita un alfabeto específico, este alfabeto se seleccionará
automáticamente.
El software o el sitio a utilizar para la traducción. Es posible utilizar WDDixio, diccionario de traducción
proporcionado con WDMSG (ver página siguiente), un software o un sitio de traducción específico, o Google
Traducción (para más detalles, consulte la ayuda en línea).
Los idiomas gestionados.
4. Cuando se han definido los parámetros de traducción, se puede utilizar el botón presente en las
distintas ventanas de descripción de los elementos del proyecto: este botón permitirá utilizar el software
definido para la traducción.
Para obtener más información sobre WDINT, contacte con el servicio comercial de PC SOFT.
Ahora vamos a introducir el código WLangage necesario para la carga del idioma.
Programación
Para introducir el código de gestión de idiomas:
1. Seleccione la opción “Menú .. Lenguas .. Francés” en el editor.
2. Muestre el menú contextual (clic derecho). Seleccione la opción “Código”.
3. Introduzca el siguiente código en el código servidor de la opción de menú:
Nation (nationFrench)
4. Cierre la ventana de código.
5. Seleccione la opción “Menú .. Lenguas .. Inglés” en el editor.
6. Muestre el menú contextual (clic derecho). Seleccione la opción “Código”.
7. Introduzca el siguiente código:
Nation(nationEnglish)
La función Nation permite cambiar el idioma de ejecución de la aplicación. Las constantes pasadas como
parámetro permite especificar el idioma a utilizar.
El cambio de idioma efectuado por la función Nation es efectivo de forma inmediata.
Prueba del proyecto
Hemos traducido algunos elementos de la aplicación y ahora vamos a probar el cambio del idioma.
Para probar la aplicación:
1. Lance la prueba del proyecto ( en los botones de acceso rápido). La ventana se mostrará en modo de
prueba en francés.
2. Seleccione la opción “Idiomas .. Inglés”.
3. Los distintos elementos que hemos traducido aparecerán en inglés:
Cuando un desarrollador quiere modificar un elemento de un proyecto (una ventana, un informe, una
consulta, …), le indica al GDS que se adueñará temporalmente de este elemento. Para ello, el desarrollador
extraerá este elemento de la base de fuentes.
Este desarrollador obtiene entonces los derechos exclusivos sobre este elemento: puede hacer todas las
modificaciones deseadas sobre este elemento.
Los restantes desarrolladores continúan con la copia de la versión de referencia de este elemento (existente
en la base de fuentes).
Cuando el desarrollador finaliza sus modificaciones, devuelve el elemento extraído a la base de fuentes.
Los restantes desarrolladores son avisados de esta devolución. Pueden entonces actualizar su copia local.
Es aconsejable hacer regularmente copias de seguridad de la base de fuentes del GDS. Para ello,
hay que conectarse como administrador en la herramienta de administración del GDS y
Notas
El uso de una base de fuentes con formato HFSQL Cliente/Servidor permite utilizar esta base de
Notas
fuentes a la distancia.
4. Seleccione la opción “Creación de una base en modo compartido en red” e indique el directorio de esta base
de fuentes (“C:\Mis Proyectos\GDS Base de fuentes local” por ejemplo).
5. Valide la creación de la base de fuentes (botón “Crear la base”).
6. La base de fuentes se crea ahora. Vamos a poder integrar nuestro proyecto en esta base de fuentes.
7. Avance al paso siguiente.
8. El asistente nos propone situar el proyecto en el sub-directorio “Proyectos WinDev” de la base de fuentes.
Queremos que todos los elementos del proyecto se añadan. Avance al paso siguiente.
distintos proyectos. Así, el mismo elementos solo se integra una vez en el GDS y las
modificaciones se reportan automáticamente en los otros proyectos.
Las próximas aperturas de un proyecto gestionado por el GDS son idénticas a las aperturas de
un proyecto no gestionado por el GDS: hay que abrir el proyecto (fichero “.WWP”)
Notas
2. La extracción automática se activa a la primera modificación. Basta con desplazar un campo para extraer el
elemento.También puede utilizar el icono “Extraer” que está en la cinta ( ).
3. Aparecerá la ventana de extracción:
Si utiliza los Centros de Control, también puede terminar la tarea en curso con la reintegración
del elemento en el Gestor de fuentes. Esta funcionalidad es especialmente útil para asegurar el
Notas
1. Valide la reintegración.
2. La página aparecerá entonces en el editor, con la cinta naranja indicando que el elemento no está extraído.
Sincronización del proyecto
Varias opciones permiten configurar un proyecto manipulado con el GDS. Estas opciones están reagrupadas en la
pestaña “GDS” de la descripción del proyecto (mostrado con un clic sobre “Descripción” en la pestaña “Proyecto”).
Para más información sobre el GDS, consulte la ayuda en línea de WINDEV (palabra clave: “GDS”).
Desconexión del GDS
En el seguimiento de este curso, vamos nuevamente a manipular la aplicación “WD Aplicación Completa”. Para
simplificar las manipulaciones, le aconsejamos desconectarse del GDS.
Capítulo 3 – Aplicación completa con datos |281
1. Muestre la ventana de descripción del proyecto: en el panel “Proyecto”, dentro del grupo “Proyecto”, clique
sobre “Descripción”.
2. En la pestaña “GDS”, seleccione la opción “Sin Groupware de desarrollador ni GDS”.
3. Valide la ventana de descripción del proyecto.
Conclusión
Hemos visto todas las principales fases del desarrollo de una aplicación.
WINDEV propone igualmente distintas herramientas para optimizar sus aplicaciones. Para más detalles, consulte la
lección “Auditorías del proyecto”.
Administrar una
base HFSQL
Cliente/Servidor
WNDEV permite:
Crear un sitio utilizando una base de datos HFSQL Cliente/Servidor
Modificar un sitio que utiliza una base HFSQL Clásico para que utilice una base de datos HFSQL Cliente/Servidor.
Piense en abrir este puerto en el firewall para conectarse al servidor HFSQL desde otra máquina.
Notas
9. La instalación ya se ha realizado. Por defecto, para conectarse al servidor en modo administrador, hay que
utilizar “admin” sin contraseña.
Si no ha realizado las manipulaciones de las lecciones precedentes, puede seguir esta lección
Corregido
13. Seleccione los ficheros de datos del análisis a copiar en el servidor: en nuestro caso son todos los ficheros de
datos del directorio EXE.
17. Ya ha adaptado el proyecto de desarrollo. Puede ser necesario también adaptar la aplicación desplegada (por
ejemplo si la aplicación desplegada utiliza ficheros HFSQL Clásico). Esta operación se parametriza durante la
creación del programa de instalación de la aplicación.
3. Valide la pantalla. Aparecerá el Centro de Control HFSQL. Este modo de lanzamiento permite ver los distintos
ficheros relacionados con el análisis del proyecto en curso.
4. Clique si es necesario en el panel vertical “HFSQL C/S”. La lista de ficheros de datos en formato HFSQL
Cliente/Servidor se mostrará.
La pestaña “Descripción” presenta las informaciones de los ficheros de datos (rúbricas del fichero, …).
La pestaña “Contenido” muestra los registros existentes en el fichero de datos.
Desde el Centro de Control HFSQL, se puede administrar toda la base de datos HFSQL Cliente/Servidor.
No hay que confundir la gestión de los derechos de las bases de datos Cliente/Servidor con el
groupware usuario.
Algunos usuarios pueden por ejemplo, no tener derechos de escritura en algunos ficheros.
Para hacer una prueba simple, vamos a crear un usuario y se le permitirá consultar los registros del fichero Cliente.
Para conectar directamente a la base de datos existente en el servidor:
1. Despliegue el menú situado arriba a la izquierda del Centro de Control HFSQL y seleccione la opción
“Conectarse a un servidor HFSQL”.
2. Se muestra la ventana de bienvenida en el Centro de Control HFSQL.
3. La opción “Conectarse a un servidor HFSQL” está seleccionada por defecto. Indique las características del
servidor instalado en la lección anterior y luego valide.
4. Las características del servidor HFSQL se muestran:
En el panel de la izquierda, aparece el nombre del servidor HFSQL así como la lista de las bases
existentes en el servidor.
En la parte derecha de la pantalla, una nueva pestaña se muestra permitiendo ver las características del
servidor HFSQL.
5. En la parte derecha de la pantalla, seleccione el panel “Usuarios”. Este panel permite gestionar los usuarios
del servidor.
6. De momento, solo existe el usuario “Admin”.
9. Valide la creación del usuario. Por defecto, este usuario no tiene ningún derecho.
Capítulo 4 – Administrar una base HFSQL Cliente/Servidor |297
Vamos ahora a atribuir los derechos al usuario: el usuario “Test” puede conectarse a la base de datos y consultar el
fichero Cliente.
Para conceder el derecho de conexión a la base de datos:
1. En el Centro de Control HFSQL, doble clic en la base de datos “WD Aplicación Completa”.
2. En la pestaña “WD Aplicación Completa”, en el grupo “Derechos”, clique sobre “Gestión de derechos”.
3. Seleccione el usuario “Test” en la lista de usuarios.
4. En la lista de los derechos, para la acción “Derecho de conectarse al servidor (conexión encriptada y no
encriptada), clique en la columna “Derecho definido” y seleccione la marca verde.
5. Clique sobre el botón “Aplicar” que hay a la derecha de la lista de derechos. El derecho se vuelve efectivo.
6. Cierre la ventana de gestión de los derechos.
La gestión de los usuarios y sus derechos, puede también efectuarse por programación a través
Notas
Conclusión
El Centro de Control HFSQL es una herramienta completa de administración de base de datos, permitiendo entre
otras cosas:
Detener o re-arrancar un servidor en caso de problemas.
Gestionar los usuarios y sus derechos.
Reindexar los ficheros de datos si hiciera falta.
Hacer copias de seguridad de la base
El Centro de Control HFSQL es una herramienta redistribuible que puede instalarse en los clientes que
tengan las bases de datos HFSQL Cliente/Servidor. El Centro de Control deberá ser utilizado por la
persona que administre la base de datos.
Si estas opciones están marcadas, las siguientes pantallas permiten parametrizar los distintos elementos a considerar
para la instalación en cliente.
Para más detalles consulte la ayuda en línea.
Optimizar y
depurar un
proyecto
Para manipular mejor estas funcionalidades, hemos preparado un proyecto para optimizar!
Apertura del proyecto
Lance WINDEV 21 (si no lo ha hecho ya). Si es necesario, cierre el proyecto en curso para hacer aparecer la
ventana de bienvenida.
Abra el proyecto “WD Optimización”.
Para ello, en la ventana de bienvenida, clique sobre “Curso de autoformación” y seleccione “Optimizar un
proyecto”.
Astucia: si la ventana de bienvenida no se muestre, en el panel “Inicio”, dentro del grupo “Ayuda en línea”,
despliegue “Guía de Auto-formación” y luego seleccione la opción “Optimizar un proyecto”.
Auditoría estática.
La auditoría estática es una funcionalidad del entorno que permite analizar las fuentes de un proyecto para detectar
distintos problemas y proponer mejoras.
Para lanzar la auditoría estática en el proyecto “WD_Optimizacion”:
1. En el panel “Proyecto”, en el grupo “Auditoria y realizaciones”, despliegue “Auditoría de edición” y seleccione
“Desencadenar la auditoría de edición”.
La auditoría estática del proyecto puede igualmente lanzarse desde el tablero de control del
proyecto a través del widget “Auditoría estática y compilación”.
Hay que:
Activar el Widget si fuera necesario (clique sobre el enlace “Clique aquí para reactivar”).
Clique sobre la flecha.
Notas
En la ventana de la auditoría estática, clique sobre el botón “Refrescar” para actualizar el informe de auditoría.
Elemento huérfano
La auditoría nos indica que nuestro proyecto contiene un elemento huérfano.
Al igual que los procedimientos ejecutados, también es frecuente crear ventanas, informes para realizar una prueba
rápida, guardarlos y olvidarlos. La presencia de elementos huérfanos en el ejecutable, hace más pesados los recursos
distribuidos a los usuarios finales.
En la ventana de la auditoría estática, clique sobre el botón “Refrescar” para actualizar el informe de auditoría.
Consulta a optimizar
La auditoría nos indica que nuestro proyecto contiene una consulta a optimizar.
Esta optimización permite mejorar la velocidad de ejecución de una consulta. La optimización de una consulta
descansa sobre el siguiente principio: un asistente determina las claves compuestas a modificar y/o añadir en el
análisis asociado al proyecto.
Auditoría dinámica.
La auditoría dinámica permite analizar la ejecución de la aplicación. La auditoría permitirá detectar algunos problemas
como:
Consumo excesivo de memoria.
Capítulo 5 – Optimizar y depurar un proyecto |311
Lentitud de los algoritmos utilizados.
Errores “enmascarados” cuando se ejecuta.
…
Una auditoría dinámica puede efectuarse en un entorno de pruebas o en una aplicación en producción.
El proyecto “WD_Optimizacion” contiene una página específica que provoca errores que pueden ser detectados por la
auditoría dinámica.
Vamos a lanzar la auditoría dinámica al mismo tiempo que la prueba del proyecto.
La auditoría dinámica del proyecto puede igualmente lanzarse desde el cuadro de mandos del
proyecto a través del Widget “Auditoría dinámica”. Hay que:
Activar el Widget si hiciera falta (clique sobre el enlace “Clique aquí para reactivar”).
Desplegar la flecha y seleccione “Go minucioso del proyecto”.
Notas
Si el evento está relacionado con una línea de código en particular, el botón permite abrir directamente el editor
de código en el sitio correspondiente a fin de poder corregir el problema.
Cierre la ventana de auditoría dinámica.
Su principio es simple:
Pruebe su sitio.
Durante esta prueba, el analizador de actuaciones recapitula todas las acciones efectuadas y guarda los tiempos
de ejecución de cada uno de los tratamientos ejecutados.
Al final de la prueba, el analizador de actuaciones presenta:
Las 10 actuaciones que han tardado más tiempo.
La duración y el número de llamadas de todos los tratamientos ejecutados.
El proyecto “WD_Optimizacion” contiene una ventana específica que permite visualizar los resultados interesantes con
el analizador de actuaciones.
En este caso, solo el código presente entre las funciones ProfilerStart y ProfilerEnd se analizará. El resultado se
guardará en un fichero WPF.
En nuestro ejemplo, vamos a utilizar el primer método. Para lanzar el analizador de actuaciones en el proyecto
“WD_Optimizacion”:
1. En el panel “Proyecto”, dentro del grupo “Auditoría y actuaciones”, despliegue “Analizar las actuaciones” y
seleccione “Analizar las actuaciones”.
El analizador de actuaciones puede también lanzarse desde el cuadro de mandos del proyecto a
través del Widget “Actuaciones”. Hay que:
Activar el Widget si es necesario (clique sobre el enlace “Clicar aquí para reactivar”).
Clicar sobre la flecha y seleccionar “Analizar las actuaciones”.
Notas
La pestaña “Cartografía” permite identificar de manera visual cual ha tomado más tiempo. En nuestro caso,
es una llamada a la función Ping:
Utilizar el depurador
Para depurar la ventana WIN_Analizador-Actuaciones:
1. Abra la ventana “WIN_Analizador-Actuaciones” en el editor de ventanas (doble clic en su nombre en el
explorador del proyecto).
Hay muchos métodos que permiten lanzar el depurador; para más detalles, consulte la ayuda en
Notas
4. Clique en el botón “Tratamiento a analizar”. Se abre el depurador. La línea actual, está precedida de una
pequeña flecha.
En la parte inferior de la pantalla, aparecerá el panel “Depurador”. Este panel muestra dos zonas distintas:
Primero, vamos a ejecutar paso a paso las distintas instrucciones y veremos el contenido de las variables:
1. Pulse la tecla [F8] (o sobre el botón “Paso a paso” que hay en la cinta). La línea siguiente a la línea en curso
se ejecuta automáticamente. Si lo necesita, los valores de las variables pueden modificarse en el panel
“Depurador” (mostrado por defecto en la parte inferior de la pantalla.
2. Cuando el cursor en forma de flecha llegue a la línea “JAUGE_Progression..BorneMax = …”, pase con el ratón
sobre “JAUGE_Progression”. Una bolsa de ayuda se muestra con el valor de la expresión:
3. El valor “JAUGE_Progression..BorneMax” se muestra en una bolsa de ayuda. Este valor corresponde a 100
porque la línea de código no se ha ejecutado todavía.
4. Utilice la tecla [F8] para ejecutar la línea.
5. Pase de nuevo sobre “JAUGE_Progression..BorneMax”. El valor de “JAUGE_Progression..BorneMax” mostrado
en la bolsa de ayuda corresponde desde ahora al resultado de la función “HNbEnr(Producto).
Continuemos con nuestras manipulaciones en el depurador. Vamos ahora a ejecutar paso a paso el procedimiento
ActualizarStockProductos en el depurador.
1. Para ejecutar este procedimiento paso a paso, utilice la tecla [F7] (o clique sobre el botón “Paso a paso
detallado” en la cinta).
2. El código del procedimiento se muestra en el depurador.
Ahora vamos a añadir una expresión para monitorizar la evolución de su valor en el panel “Depurador”. Esta
expresión puede ser de cualquier tipo: variable, función, operación sobre variables, … El resultado de la expresión
se calcula y se muestra.
Esta expresión permite efectuar una depuración personalizada. Por ejemplo, se puede conocer el contenido de
una variable al tiempo y a medida de su uso en la aplicación.
1. Utilice la tecla [F7] para ejecutar las distintas líneas del procedimiento ActualizarStockProductos hasta la
línea:
JAUGE_Progression++
2. Pase sobre “JAUGE_Progression”. El valor mostrado en la bolsa es 0.
3. Seleccione “JAUGE_Progression” en el editor de código en el depurador y muestre el menú contextual (clic
derecho). Seleccione la opción “Añadir la expresión en el depurador”.
4. La expresión se añade automáticamente en el panel del depurador bajo de la pantalla.
Ahora vamos a poner un punto de detención y ejecutar el código hasta el siguiente paso sobre el punto de
detención:
1. Clique con el ratón sobre la zona tramada, delante de la función HModify. Un punto de detención (de color
rojo) aparecerá.
2. Utilice la tecla [F5] (o clique sobre el botón “Continuar” que hay en la cinta). El código se ejecuta hasta el
punto de detención. La flecha que permite identificar la línea en curso se desplaza hasta el punto de
detención.
3. Quite el punto de detención, clicando directamente sobre el mismo.
Para acabar la prueba, vamos a utilizar una expresión “Autostop”. Una expresión “Autostop” permite lanzar el
depurador hasta que se verifica una condición o hasta que se modfique el valor de una variable. En nuestro
ejemplo, vamos a lanzar el depurador hasta que el valor del medidor sea igual a 50%:
1. En el panel “Depurador”, seleccione la expresión “JAUGE_Progression” que hemos añadido previamente.
2. Clique sobre el círculo verde.
3. Pulse la tecla [F5] para continuar la prueba.
4. Se muestra un mensaje indicando que el valor de la expresión “JAUGE_Progression” ha cambiado.
7. Pulse la tecla [F5]. El programa continúa ejecutándose. El depurador se lanza nuevamente hasta que la
variable “JAUGE_Progression” tenga un valor de 50.
Y ya está, hemos terminado nuestra visita al depurador. Para detener la prueba del depurador, clique en
“Terminar la prueba” en la cinta.
Programación
avanzada
4. Para abrir un ejemplo, hay que clicar sobre el enlace existente en la ventana.
5. Para los ejemplos completos y didácticos, el proyecto en curso se cierra automáticamente cuando se abre el
proyecto ejemplo.
6. Para los ejemplos unitarios, la ventana asociada se abre en el proyecto en curso.
Funcionamiento
Cuando una función WLangage encuentra un error, se realizan dos operaciones:
La función reenvía un valor de retorno de error (por ejemplo, la función fOpen reenvía el valor “-1” si el
fichero especificado no se ha podido abrir).
El error es detectado por WLangage (la variable ErrorOccurred corresponde a True) y se pueden recuperar
las informaciones sobre este error utilizando la función ErrorInfo.
Es esta segunda operación la que puede estar gestionada automáticamente por la gestión de errores de WINDEV.
Establecimiento
La parametrización de la gestión automática de los errores puede efectuarse:
Directamente en el editor de código: basta con clicar en el enlace “Si error: Por programa” en el editor de
código:
WINDEV propone igualmente una gestión automática de los errores HFSQL. Para más detalles,
Ejemplo
Ejemplo práctico
Abra el ejemplo unitario “Manipulación de ficheros de texto”. Una pequeña ventana azul indica que la ventana no
está integrada en el proyecto.
Clique sobre el botón “Añadir al proyecto”.
Valide la adición al proyecto clicando sobre el botón “Copiar en el directorio del producto”.
Pruebe la ventana “WIN_Fichero_Texto”. Esta ventana reagrupa numerosas manipulaciones posibles en los
ficheros externos con WINDEV.
Esta ventana agrupa las manipulaciones posibles en los discos y los directorios:
Crear un directorio
Conocer el directorio en curso
Probar la existencia de un directorio
Listar los directorios
Copiar y eliminar un directorio, …
Para más detalles sobre las funciones de gestión de los directorios, consulte la ayuda en línea (palabra clave: “Fichero
externo”).
También es posible manipular directamente el fichero XML en el editor de código. Basta con:
1. “Desplazar” el fichero XML desde el explorador de ficheros hacia el explorador del proyecto, carpeta
“Descripciones XML y XSD”.
2. “Desplazar” el fichero XML del explorador del proyecto hacia el editor de código. La variable de tipo
xmlDocumentse crea automáticamente de la forma siguiente:
<Nombre de la variable> is xmlDocument, description = <Nombre del documento>
3. Puede ahora acceder directamente a los nudos de la variable para sus nombres. Estos nombres se proponen
automáticamente por el mecanismo de completación automática del editor de código.
Ejemplo práctico
Abra el ejemplo unitario “Lectura y escritura con formato XML”.
Una pequeña ventana azul indica que la ventana no está integrada en el proyecto.
Clique sobre el botón “Añadir al proyecto”.
Valide si es necesario la adición al proyecto clicando sobre el botón “Copiar en el directorio del proyecto”.
No vamos a detallar aquí todas las funcionalidades propuestas por las funciones XML. Para más
Notas
Ejemplos prácticos
¿Una prueba rápida de estas funciones?
Para probar el uso de las funciones xlsXXX, abra el ejemplo unitario “Funciones Excel”.
Una pequeña ventana azul indica que la ventana no está integrada en el proyecto
Clique en el botón “Añadir al proyecto”.
Valide si hiciera falta la adición al proyecto clicando en el botón “Copiar en el directorio del proyecto”.
Pruebe la ventana “WIN_FuncionXLS”. Esta ventana permite:
Importar los datos provenientes de una hoja Excel.
Exportar los datos de un campo Tabla hacia Excel.
Regrese al editor para consultar el código de los distintos botones.
Para probar el uso de las variables avanzadas, abra el ejemplo unitario “Tipo xls”.
Una pequeña ventana azul indica que la ventana no está integrada en el proyecto.
Clique en el botón “Añadir al proyecto”.
Valide si hiciera falta la adición al proyecto clicando en el botón “Copiar en el directorio del proyecto”.
Capítulo 6 – Programación avanzada |338
Pruebe la ventana “WIN_Tipo_xls”.
No vamos a detallar aquí todas las funcionalidades propuestas por las funciones XLS y los tipos
Notas
Ejemplo
Hemos elegido presentarle la compilación dinámica mediante el ejemplo unitario “Compilación dinámica”.
La ventana “Compilación dinámica” muestra como compilar dinámicamente el código WLangage (almacenado en
forma de cadena), ejecutar el procedimiento generado dinámicamente y tratar los eventuales errores de ejecución.
4. Clique en los distintos botones “Ejecutar” para ver los distintos casos propuestos.
5. Detenga la prueba.
Volvamos al editor de código para estudiar el código del primer botón “Ejecutar”.
1. Muestre el código del botón “Ejecutar” (clic derecho sobre el botón, opción “Código”). Este código llama al
procedimiento CompileCodiDynamique.
2. Posicione el cursor del ratón sobre el nombre del procedimiento y utilice la tecla [F2]. El código del
procedimiento aparecerá automáticamente en el editor de código.
El código de este procedimiento puede estar descompuesto en varias partes:
a. Inicialización de variables.
b. Compilación del código.
sResultadoCompilacion = Compile (PROCEDURE_DYNAMIQUE, EDT_CODE_COMPIL)
Este código contiene varios puntos a destacar:
La compilación de la función se efectúa con la función WLangage Compile. Desde que esta función se
utiliza (y si no se reenvía ningún error), la función compilada dinámicamente se vuelve utilizable.
Cuando se producen estos eventos, se pueden interceptar para preparar o ejecutar un tratamiento específico.
Por defecto, WINDEV propone la gestión automática de los eventos más utilizados. Por ejemplo, los siguientes
eventos se proponen para un campo de edición:
Inicialización del campo.
Entrada en el campo.
Modificación del campo.
Salida del campo.
Ejemplo práctico
Hemos elegido presentar la gestión de los eventos con el ejemplo unitario “Función Eventos”.
Abra el ejemplo unitario “Función Eventos”.
Una pequeña ventana azul indica que la ventana no está integrada en el proyecto.
Clique sobre el botón “Añadir al proyecto”
Valide si es necesario la adición al proyecto clicando sobre el botón “Copiar en el directorio del proyecto”.
Esta barra de herramientas presenta los principales tratamientos opcionales disponibles. Para identificar los
tratamientos, pase por encima de los distintos iconos.
3. Para añadir un tratamiento, clique sobre el icono correspondiente. El tratamiento correspondiente se muestra
automáticamente en el editor de código.
4. Para mostrar la lista completa de los tratamientos opcionales disponibles, hay que clicar sobre “…”.
Eventos de Windows
Para la gestión de eventos más “específicos”, existe la función WLangage Event. La función Event permite asociar
un procedimiento WLangage a un evento Windows.
Para utilizar la función Event, hay que dominar la programación Windows y sobre todo los
Notas
eventos Windows.
Para conocer la lista (no exhaustiva) de los eventos de Windows, consulte la ayuda en línea de WINDEV (palabra
clave: “Valor de las constantes del API de Windows”).
Ejercicio: Detectar el clic sobre una lista
Lance la prueba de la ventana “WIN_Funcion_Eventos”. Esta ventana detecta si la lista está manipulada con el
ratón o con el teclado.
1. Clique sobre el campo Lista con el ratón.
2. Utilice el ratón para desplazar la banda de selección.
3. Un mensaje aparece indicando si se ha utilizado el ratón o el teclado.
Ejemplo
WINDEV se proporciona en estándar con varios ejemplos unitarios que permiten comprender el
interés y el uso de los hilos:
Ejemplo
Para más detalles en la gestión de los hilos con WINDEV, consulte la ayuda en línea (palabra clave: “Thread”).
WINDEV se proporciona en estándar con un ejemplo didáctico que permite comprender el uso de
Ejemplo
los sockets: “Utilización de los sockets”. Este ejemplo es accesible desde la ventana de
bienvenida de WINDEV ([CTRL]+[>]).
Ejemplo práctico
Hemos elegido presentarle un caso real de la programación de sockets gracias al ejemplo unitario “Utilización de los
Sockets”.
Prueba del ejemplo
Abra el ejemplo unitario “Utilización de los sockets”.
Lance la prueba de la ventana “WIN_Sockets”. Vamos a enviar un mensaje del puesto B al puesto A. El puesto A
es la aplicación Servidor y el puesto B es la aplicación Cliente.
1. En el puesto A, cree el socket clicando sobre el botón “Crear”.
2. El puesto B puede entonces conectarse al socket creado por el puesto A. Bastará con clicar sobre el botón
“Conectar” (en la parte del puesto B).
3. El puesto B envía un mensaje al puesto A:
Introduzca el mensaje a enviar en la zona “Frase a enviar al puesto A”.
Clique sobre el botón “Enviar” que hay en la zona “Puesto B”.
4. Para recuperar el mensaje en el puesto A, clique en el botón “Recuperar” en la zona “Puesto A”.
5. Desconecte los dos puestos clicando sobre los botones “Desconectar”.
Detenga la prueba de la ventana para regresar al editor.
Primero vamos a estudiar los tratamientos realizados por el servidor de sockets (puesto A).
1. Muestre el código del botón “Crear” en el puesto A:
Seleccione el botón “Crear”.
Muestre los tratamientos pulsando la tecla [F2].
2. En el tratamiento “Clic sobre”, encontraremos la función SocketCreate que permite crear el socket. Cierre el
editor de código.
3. Muestre el código del botón “Recuperar” en la zona del puesto A:
Seleccione el botón “Recuperar”.
Muestre los tratamientos pulsando la tecla [F2].
Capítulo 6 – Programación avanzada |352
4. En el tratamiento “Clic sobre”, el código utilizado es el siguiente:
EDT_FraseRecogidaDelPuestoB = SocketRead (“PuestoA”, False, 2000)
IF EDT_FraseRecogidaDelPuestoB <> “” THEN
Info (“Mensaje recibido de la dirección I.P. Nº “ + …
SocketClientInfo (“PuestoA”, SocketAddress))
END
Encontramos la función SocketRead que permite leer el socket creado previamente. El mensaje leído es
mostrado inmediatamente en el campo “EDT_FraseRecogidaDelPuestoB”. Cierre el editor de código.
Estudiemos ahora los tratamientos realizados por el cliente (el puesto B).
1. Muestre el código del botón “Conectar” en la zona Puesto B:
Seleccione el botón “Conectar”.
Muestre los tratamientos mediante la tecla [F2].
2. En el tratamiento “Clic sobre”, encontramos la función SocketConnect que permite conectarse en el socket
creado por el puesto A. Cierre el editor de código.
3. Muestre el código del botón “Enviar” en la zona Puesto B:
Seleccione el botón “Enviar”.
Muestre los tratamientos mediante la tecla [F2].
4. En el tratamiento “Clic sobre”, el código utilizado es el siguiente:
IF NOT SocketWrite (“ParaPuestoA”, …
EDT_FraseAEnviarAlPuestoA) THEN
Error (ErrorInfo(errMessage))
RETURN
END
Encontramos la función SocketWrite que permite enviar un mensaje al socket sobre el que está conectado el
puesto B. Cierre el editor de código.
Observación: En esta lección, hemos visto una comunicación “simple” entre un servidor y un puesto cliente: el cliente
envía mensajes y el servidor trata los mensajes. Está claro que es posible realizar aplicaciones mucho más elaboradas.
Es posible realizar una comunicación entre dos aplicaciones, a la vez cliente y servidor. En este caso, la gestión de los
hilos se convierte en primordial para gestionar los envíos y las respuestas de las aplicaciones.
Hemos elegido presentarle un caso real de la manipulación de ficheros en un servidor FTP, utilizando el ejemplo
unitario “Las funciones FTP”.
Abra el ejemplo unitario “Las funciones FTP”. Este ejemplo presenta las principales funcionalidades utilizables en
un servidor FTP.
Enviar un fichero
Para enviar un fichero hacia un servidor FTP, basta con utilizar la función FTPSend.
Este es un ejemplo del código que puede utilizarse:
Preste mucha atención a la escritura (minúsculas, mayúsculas) del nombre de los directorios en
el servidor. En efecto, algunos servidores FTP son máquinas bajo UNIX y son “case-sensitives”,
es decir, que son sensibles a mayúsculas/minúsculas del nombre de los ficheros y los directorios.
Atención ¡
3. En este ejemplo, el procedimiento llamado permite mostrar en una ventana de trace los ficheros encontrados:
// Es un fichero o un directorio
IF sAtributo = “D” THEN
// Directorio o subdirectorio
Trace (“Directorio: “ + sNombreFichero)
ELSE
// Fichero
Trace (“Fichero: “ + sNombreFichero)
END
También hay otras funciones FTP que no vamos a detallar en este curso; con ellas se puede:
Crear, suprimir, modificar los directorios en el servidor FTP
Crear, suprimir, modificar los ficheros en el servidor FTP
Recuperar informaciones de un directorio y/o de un fichero
…
Para más detalles, consulte la ayuda en línea (palabra clave: “FTP, Funciones”).
Ejemplo simple
Para ilustrar los conceptos que acabamos de presentar, vamos a manipular el ejemplo didáctico “WD POO
Simple”.
1. Abra el ejemplo didáctico “WD POO Simple”.
2. Pruebe este ejemplo.
3. Clique sobre los distintos botones correspondientes a los animales para añadir los animales.
4. Detenga la prueba del ejemplo para volver al editor.
Observación: No vamos a detallar aquí la sintaxis de la P.O.O., únicamente presentaremos un ejemplo simple de un
programa orientado al objeto. Para tener más detalles sobre la sintaxis P.O.O., consulte la ayuda en línea (palabra
clave: “POO, Clase”).
Declarar una clase
WINDEV permite declarar las clases muy sencillamente desde el explorador del proyecto. Para crear una clase:
1. En el explorador del proyecto, seleccione la carpeta “Clases”.
2. Muestre el menú contextual de esta carpeta (clic derecho del ratón) y seleccione la opción “Nueva Clase”.
3. En la ventana que se muestra, indique el nombre de la clase (por ejemplo TestGAF) y valide.
4. El código de la clase se muestra en el editor de código.
cSavane is class
PRIVATE
// Nombre del campo Imagen utilizado para el dibujo
m_sNombreCampoImagenParaDibujo is string
Capítulo 6 – Programación avanzada |360
// Lista de los animales de la sabana
m_tabLosAnimales is array de cAnimal dynamique
END
// Dibuja la sabana
DibujaSabana()
RETURN True
Para referenciar a un miembro del objeto “cSavane”, hay que utilizar la sintaxis:
Diagrama UML
El ejemplo “WD POO Simple” está asociado a un diagrama UML.
Para mostrar el diagrama UML enlazado al proyecto:
1. Doble clic sobre “ModeloUML” en el explorador del proyecto:
3. En este diagrama, encontraremos las distintas clases utilizadas por el proyecto “WD POO Simple”.
No vamos a detallar más sobre el uso del lenguaje UML con WINDEV. Consulte la ayuda en línea para más
información (palabra clave: “UML”).
Este curso ha abordado un conjunto de sujetos, pero no la totalidad de funcionalidades de WINDEV, nada más lejos!
Usted está ahora familiarizado con los principales conceptos.
Explore igualmente los ejemplos suministrados con WINDEV: Algunos son sencillos y no tratan más que un sujeto,
otros son más completos. Estos ejemplos le mostrarán las distintas facetas de WINDEV. La lectura del código fuente
será igualmente instructiva en general.
Por falta de sitio, no hemos podido abordar todos los sujetos (hay centenares, incluso millares!). WINDEV ofrece
numerosas posibilidades no abordadas o no profundizadas en este curso:
Funciones HTTP, telefonía
Creación de plantillas, …
Informes anidados, consultas parametrizadas,
Compilación dinámica, llamadas de DLL, lenguajes externos, …
Para más detalles sobre todas estas posibilidades, no dude en consultar la ayuda en línea.
Recuerde: para recibir directamente las actualizaciones intermedias y consejos de uso, abónese a la LST (Revista
trimestral + DVD) en francés.