Ceballos: Enciclopedia de Microsoft Visual Basic 3Ed

Introducción a Microsoft .NET. Mi primera aplicación. Aplicación Windows Forms. Introducción a Windows Forms. Menús y ba

Views 267 Downloads 1 File size 3MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Enciclopedia de Microsoft® Visual Basic  Interfaces gráficas y aplicaciones para Internet con Windows Forms y ASP.NET 3.ª edición Fco. Javier Ceballos Sierra Profesor titular de la Escuela Politécnica Superior Universidad de Alcalá

www.fjceballos.es

Enciclopedia de Microsoft Visual Basic Interfaces gráficas y aplicaciones para Internet con Windows Forms y ASP.NET 3.ª edición. © Fco. Javier Ceballos Sierra © De la edición: RA-MA 2013 MARCAS COMERCIALES: las marcas de los productos citados en el contenido de este libro (sean o no marcas registradas) pertenecen a sus respectivos propietarios. RA-MA no está asociada a ningún producto o fabricante mencionado en la obra, los datos y los ejemplos utilizados son ficticios salvo que se indique lo contrario. RA-MA es una marca comercial registrada. Se ha puesto el máximo empeño en ofrecer al lector una información completa y precisa. Sin embargo, RA-MA Editorial no asume ninguna responsabilidad derivada de su uso, ni tampoco por cualquier violación de patentes ni otros derechos de terceras partes que pudieran ocurrir. Esta publicación tiene por objeto proporcionar unos conocimientos precisos y acreditados sobre el tema tratado. Su venta no supone para el editor ninguna forma de asistencia legal, administrativa ni de ningún otro tipo. En caso de precisarse asesoría legal u otra forma de ayuda experta, deben buscarse los servicios de un profesional competente. Reservados todos los derechos de publicación en cualquier idioma. Según lo dispuesto en el Código Penal vigente ninguna parte de este libro puede ser reproducida, grabada en sistema de almacenamiento o transmitida en forma alguna ni por cualquier procedimiento, ya sea electrónico, mecánico, reprográfico, magnético o cualquier otro, sin autorización previa y por escrito de RA-MA; su contenido está protegido por la Ley vigente que establece penas de prisión y/o multas a quienes intencionadamente, reprodujeren o plagiaren, en todo o en parte, una obra literaria, artística o científica. Editado por: RA-MA Editorial C/ Jarama, 3A, Polígono industrial Igarsa 28860 PARACUELLOS DEL JARAMA, Madrid Teléfono: 91 658 42 80 Telefax: 91 662 81 39 Correo electrónico: [email protected] Internet: www.ra-ma.es y www.ra-ma.com ISBN: 978-84-9964-265-9 Depósito Legal: M-xxxxx-2013 Autoedición: Fco. Javier Ceballos Filmación e impresión: Closas-Orcoyen, S.L. Impreso en España Primera impresión: octubre 2013

Si no puedo dibujarlo es que no lo entiendo. (Einstein) Dedico esta obra a María del Carmen, mi esposa, y a mis hijos Francisco y Javier.

CONTENIDO PRÓLOGO.......................................................................................................... XXIII

PARTE 1. INTRODUCCIÓN...................................................

1

CAPÍTULO 1. INTRODUCCIÓN A MICROSOFT .NET ................................



PLATAFORMA .NET ........................................................................................ .NET Framework................................................................................................. Aplicaciones de cliente .................................................................................. Aplicaciones web ........................................................................................... ADO.NET ...................................................................................................... Biblioteca de clases base ................................................................................ Entorno de ejecución común de los lenguajes ............................................... .NET Framework y COM+ ............................................................................ Visual Studio ..................................................................................................

4  5  7  7  9  9  9  12  13

CAPÍTULO 2. MI PRIMERA APLICACIÓN ....................................................

15 

MICROSOFT VISUAL STUDIO ....................................................................... Crear un nuevo proyecto ................................................................................ El formulario .................................................................................................. Dibujar los controles ...................................................................................... Borrar un control ............................................................................................ Propiedades de los objetos ............................................................................. Bloquear la posición de todos los controles ................................................... Icono de la aplicación .................................................................................... Escribir los controladores de eventos .............................................................

15  17  21  22  27  27  29  29  30 

VIII

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

Guardar la aplicación ..................................................................................... Verificar la aplicación .................................................................................... Propiedades del proyecto ............................................................................... Crear soluciones de varios proyectos ............................................................. Opciones del EDI ........................................................................................... Personalizar el EDI ........................................................................................ WPF ....................................................................................................................

33  33  35  36  37  37  38

PARTE 2. INTERFACES GRÁFICAS ................................... 41 CAPÍTULO 3. APLICACIÓN WINDOWS FORMS .........................................

43 

PROGRAMANDO EN WINDOWS................................................................... ESTRUCTURA DE UNA APLICACIÓN.......................................................... Compilar y ejecutar la aplicación ................................................................... DISEÑO DE LA INTERFAZ GRÁFICA ........................................................... Crear un componente ..................................................................................... Controles más comunes ............................................................................ Añadir una etiqueta y editar sus propiedades............................................ Añadir un botón de pulsación y editar sus propiedades ............................ Añadir una descripción abreviada a un componente................................. CONTROL DE EVENTOS ................................................................................ Asignar controladores de eventos a un objeto................................................ CICLO DE VIDA DE UN FORMULARIO ....................................................... PROPIEDADES BÁSICAS DE UN FORMULARIO........................................ Administración de la duración ....................................................................... Administración de formularios ...................................................................... Apariencia y comportamiento ........................................................................ CONFIGURACIÓN DE UNA APLICACIÓN ................................................... RECURSOS DE UNA APLICACIÓN ............................................................... ATRIBUTOS GLOBALES DE UNA APLICACIÓN........................................ CICLO DE VIDA DE UNA APLICACIÓN....................................................... Permitir una sola instancia de la aplicación ................................................... Argumentos en la línea de órdenes ................................................................ Pantalla de presentación .................................................................................

45  47  51  53  53  53  54  56  57  58  61  62  64  64  65  65  66  68  70  71  74  75  76

CAPÍTULO 4. INTRODUCCIÓN A WINDOWS FORMS ...............................

79 

BIBLIOTECA DE CLASES DE WINDOWS FORMS ..................................... CAJAS DE TEXTO, ETIQUETAS Y BOTONES ............................................. Desarrollo de la aplicación .............................................................................

79  82  82 

CONTENIDO

Objetos ...................................................................................................... Eventos...................................................................................................... Pasos a seguir durante el desarrollo .......................................................... El formulario, los controles y sus propiedades ......................................... Tecla de acceso ......................................................................................... Botón predeterminado ............................................................................... Responder a los eventos ............................................................................ Enfocar un objeto ........................................................................................... Seleccionar el texto de una caja de texto ....................................................... INTERCEPTAR LA TECLA PULSADA .......................................................... VALIDACIÓN DE UN CAMPO DE TEXTO ................................................... Eventos Validating y Validated ..................................................................... Expresiones regulares .................................................................................... Ejemplos de expresiones regulares ........................................................... El motor de expresiones regulares ............................................................ MaskedTextBox ............................................................................................. EJERCICIOS RESUELTOS ............................................................................... Diseño de una calculadora ............................................................................. Objetos ...................................................................................................... Eventos...................................................................................................... Pasos a seguir durante el desarrollo .......................................................... Diseño de la ventana y de los controles ......................................................... Establecer una fuente ..................................................................................... Color .............................................................................................................. Escribir el código ........................................................................................... EJERCICIOS PROPUESTOS.............................................................................

IX

83  83  83  84  85  85  85  89  90  91  93  96  99  99  102  104  105  106  106  106  106  107  109  109  110  119

CAPÍTULO 5. MENÚS Y BARRAS DE HERRAMIENTAS ............................ 121  ARQUITECTURA .............................................................................................. MENÚS ............................................................................................................... DISEÑO DE UNA BARRA DE MENÚS .......................................................... Crear un menú mediante programación ......................................................... Controlador de un elemento de un menú ....................................................... Aceleradores y nemónicos ............................................................................. IMÁGENES EN CONTROLES ......................................................................... Recursos de una aplicación ............................................................................ LISTA DE TAREAS........................................................................................... BARRA DE HERRAMIENTAS......................................................................... Diseño de una barra de herramientas ............................................................. BARRA DE ESTADO ........................................................................................ Diseño de una barra de estado ........................................................................

121  123  124  125  128  129  130  130  133  134  134  136  137 

X

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

DESARROLLO DE UN EDITOR DE TEXTOS ............................................... Caja de texto multilínea ................................................................................. Diseño del editor ............................................................................................ El portapapeles ............................................................................................... Objeto My.Computer.Clipboard ............................................................... Trabajar con texto seleccionado ..................................................................... Diseño de la barra de menús .......................................................................... Diseño de la barra de herramientas ................................................................ Asociar un método con un elemento de un menú .......................................... Archivo - Salir........................................................................................... Edición - Cortar......................................................................................... Edición - Copiar ........................................................................................ Edición - Pegar.......................................................................................... Opciones - Fuente ..................................................................................... Opciones - Tamaño ................................................................................... Habilitar o inhabilitar los elementos de un menú...................................... Marcar el elemento seleccionado de un menú .......................................... Deshacer ......................................................................................................... Recordar las ediciones reversibles ............................................................ Añadir a la interfaz la orden Deshacer ...................................................... Listas desplegables en menús......................................................................... MENÚS CONTEXTUALES .............................................................................. MENÚS DINÁMICOS ....................................................................................... EJERCICIOS PROPUESTOS.............................................................................

138  139  140  142  142  143  144  146  147  148  148  149  149  149  151  152  153  154  154  154  155  159  161  164

CAPÍTULO 6. CONTROLES Y CAJAS DE DIÁLOGO .................................. 169  CAJAS DE DIÁLOGO MODALES Y NO MODALES .................................... CAJAS DE MENSAJE ....................................................................................... Requerir datos con InputBox ......................................................................... Cómo se utilizan estas cajas de diálogo ......................................................... CAJAS DE DIÁLOGO PERSONALIZADAS ................................................... Crear una caja de diálogo ............................................................................... Mostrar una caja de diálogo ........................................................................... Introducción de datos y recuperación de los mismos ..................................... DIÁLOGO ACERCA DE ................................................................................... FORMULARIO PROPIETARIO........................................................................ OTROS CONTROLES WINDOWS FORMS .................................................... Casillas de verificación .................................................................................. Botones de opción .......................................................................................... Listas simples ................................................................................................. Diseñar la lista...........................................................................................

170  170  174  175  176  177  178  179  181  182  183  184  188  193  194 

CONTENIDO

Iniciar la lista............................................................................................. Acceder a los elementos seleccionados..................................................... Colección de elementos de una lista ......................................................... Clase CheckedListBox .............................................................................. Listas desplegables ......................................................................................... Diseñar la lista........................................................................................... Iniciar la lista............................................................................................. Acceder al elemento seleccionado ............................................................ Colección de elementos de una lista desplegable ..................................... Controles de rango definido ........................................................................... ScrollBar ................................................................................................... TrackBar ................................................................................................... ProgressBar ............................................................................................... Control con pestañas ...................................................................................... Gestión de fechas ........................................................................................... FlowLayoutPanel y TableLayoutPanel .......................................................... CAJAS DE DIÁLOGO ESTÁNDAR ................................................................. Cajas de diálogo Abrir y Guardar .................................................................. Caja de diálogo Color .................................................................................... Caja de diálogo Fuente ................................................................................... REDIMENSIONAR UN COMPONENTE ......................................................... TEMPORIZADORES ......................................................................................... EJERCICIOS RESUELTOS ............................................................................... EJERCICIOS PROPUESTOS.............................................................................

XI

196  196  197  198  198  200  201  201  202  203  203  207  208  210  211  213  216  217  220  221  222  223  227  238

CAPÍTULO 7. TABLAS Y ÁRBOLES ................................................................ 241  TABLAS ............................................................................................................. Arquitectura de un control DataGridView ..................................................... Construir una tabla ......................................................................................... Añadir las columnas a la tabla ....................................................................... Iniciar la tabla................................................................................................. Tamaño de las celdas ..................................................................................... Acceder al valor de la celda seleccionada ...................................................... ÁRBOLES........................................................................................................... Arquitectura de un árbol ................................................................................ Construir un árbol .......................................................................................... Añadir nodos a un árbol ................................................................................. Imágenes para los nodos del árbol ................................................................. Iniciar el árbol ................................................................................................ Acceder al nodo seleccionado ........................................................................ Recorrer todos los nodos del árbol .................................................................

241  243  244  245  246  252  253  254  255  255  256  257  258  260  264 

XII

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

Añadir y borrar nodos .................................................................................... Añadir un nodo ......................................................................................... Borrar el nodo seleccionado...................................................................... Borrar todos los nodos excepto la raíz ...................................................... Personalizar el aspecto de un árbol ................................................................ VISTAS DE UNA LISTA................................................................................... Personalizar el aspecto de una vista ............................................................... La colección Columns .................................................................................... Elemento de la lista ........................................................................................ La colección Items ......................................................................................... Un ejemplo con ListView, TreeView y SplitContainer ................................. EJERCICIOS RESUELTOS ............................................................................... EJERCICIOS PROPUESTOS.............................................................................

264  265  268  268  269  269  270  271  272  273  273  276  292

CAPÍTULO 8. DIBUJAR Y PINTAR .................................................................. 293  SERVICIOS DE GDI+........................................................................................ OBJETOS DE DIBUJO BÁSICOS .................................................................... Objeto Graphics ............................................................................................. Objeto Color................................................................................................... Objeto Pen ...................................................................................................... Objeto Brush .................................................................................................. Objeto Point ................................................................................................... Objeto Rectangle ............................................................................................ Objeto Font .................................................................................................... Objeto GraphicsPath ...................................................................................... MÉTODOS DE DIBUJO .................................................................................... Líneas y rectángulos....................................................................................... Elipses y arcos ................................................................................................ Tartas.............................................................................................................. Polígonos........................................................................................................ Curvas flexibles.............................................................................................. Trazados ......................................................................................................... Regiones ......................................................................................................... GRÁFICOS PERSISTENTES ............................................................................ SISTEMAS DE COORDENADAS Y TRANSFORMACIONES ...................... Tipos de sistemas de coordenadas.................................................................. Transformaciones de color ............................................................................. MOSTRAR IMÁGENES .................................................................................... Mapas de bits ................................................................................................. Cargar y mostrar un mapa de bits .................................................................. Intercambiar imágenes a través del portapapeles ...........................................

295  296  298  299  300  301  302  302  303  304  304  304  305  306  306  307  308  308  311  313  317  318  320  320  322  327 

CONTENIDO

XIII

CAMBIAR LA FORMA DEL PUNTERO DEL RATÓN ................................. 329  EJERCICIOS RESUELTOS ............................................................................... 330  EJERCICIOS PROPUESTOS............................................................................. 340 CAPÍTULO 9. INTERFAZ PARA MÚLTIPLES DOCUMENTOS ................. 343  CREACIÓN DE UNA APLICACIÓN MDI....................................................... Organizar los formularios hijo ....................................................................... EDITOR DE TEXTO MDI ................................................................................. Formulario padre ............................................................................................ Formulario hijo .............................................................................................. Vincular código con los controles .................................................................. Iniciar y finalizar la aplicación.................................................................. Nuevo documento ..................................................................................... Abrir un documento .................................................................................. Guardar un documento .............................................................................. Guardar como............................................................................................ Imprimir un documento ............................................................................ Cortar, copiar y pegar ............................................................................... Recordar las ediciones reversibles ............................................................ Barras de herramientas y de estado ........................................................... Menú Ventana ........................................................................................... Selección actual del texto.......................................................................... El documento ha cambiado ....................................................................... Operaciones de arrastrar y soltar ............................................................... EJERCICIOS RESUELTOS ............................................................................... EJERCICIOS PROPUESTOS.............................................................................

344  347  348  348  350  352  353  353  354  355  356  357  359  360  361  362  363  365  366  366  371

CAPÍTULO 10. CONSTRUCCIÓN DE CONTROLES ......................................... 373  REUTILIZACIÓN DE CONTROLES EXISTENTES ....................................... Control TextBox extendido ............................................................................ Clasificación de las propiedades de un control .............................................. CONTROLES DE USUARIO ............................................................................ Construir el control de usuario ....................................................................... Añadir propiedades ................................................................................... Añadir métodos ......................................................................................... Añadir eventos .......................................................................................... Opciones fecha-hora alarma o actual ........................................................ Verificar el control de usuario........................................................................ EJERCICIOS RESUELTOS ............................................................................... EJERCICIOS PROPUESTOS.............................................................................

373  374  379  379  380  381  382  383  383  384  386  389

XIV

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

CAPÍTULO 11. PROGRAMACIÓN CON HILOS ............................................ 391  ESPACIO DE NOMBRES System.Threading ................................................... Clase Thread .................................................................................................. Resumen de los métodos y propiedades de Thread........................................ Estados de un hilo .......................................................................................... ACCESO A CONTROLES DESDE HILOS ...................................................... Delegados ....................................................................................................... Componente BackgroundWorker................................................................... Ejecutar una tarea de forma asíncrona ...................................................... Notificar el progreso a la interfaz gráfica del usuario ............................... Recuperar el estado después de la finalización de la tarea ........................ Cancelación anticipada ............................................................................. MECANISMOS DE SINCRONIZACIÓN ......................................................... Objetos de sincronización .............................................................................. Secciones críticas ...................................................................................... Controladores de espera ............................................................................ DETENER UN HILO DE FORMA CONTROLADA ....................................... EJERCICIOS RESUELTOS ............................................................................... EJERCICIOS PROPUESTOS.............................................................................

392  395  398  398  399  399  404  405  406  407  407  408  409  410  412  414  417  420

PARTE 3. ACCESO A DATOS ............................................... 421 CAPÍTULO 12. ENLACE DE DATOS EN WINDOWS FORMS ..................... 423  ASPECTOS BÁSICOS ....................................................................................... Enlace de datos manual .................................................................................. Notificar cuándo cambia una propiedad ........................................................ Enlace de datos con las clases de .NET ......................................................... La clase Binding ....................................................................................... Tipos de enlace ......................................................................................... Componente BindingSource ..................................................................... Notificación de cambios en un enlace de Windows Forms ...................... Crear un enlace ......................................................................................... Enlaces con otros controles.................................................................. Aplicar conversiones............................................................................ ORÍGENES DE DATOS COMPATIBLES CON WINDOWS FORMS ........... Enlace a colecciones de objetos ..................................................................... List ............................................................................................................ BindingList ............................................................................................... BindingSource .......................................................................................... ACCEDIENDO A LOS DATOS ........................................................................

423  423  427  430  431  432  432  433  433  435  435  439  442  442  447  451  454 

CONTENIDO

Ventana de orígenes de datos ......................................................................... Vinculación maestro-detalle........................................................................... Operaciones con los datos .............................................................................. Elemento actual ......................................................................................... Navegar ..................................................................................................... Ordenación, filtrado y búsqueda ............................................................... BindingListView ............................................................................................ Elemento actual de la vista........................................................................ Ordenar ..................................................................................................... Filtrar ........................................................................................................ Buscar ....................................................................................................... Datos introducidos por el usuario .................................................................. Error en los datos ...................................................................................... Validación ................................................................................................. Datos que no necesitan validación ............................................................

XV 457  461  465  465  466  469  471  472  473  474  474  475  477  478  479

CAPÍTULO 13. ACCESO A UNA BASE DE DATOS ....................................... 487  SQL ..................................................................................................................... Crear una base de datos .................................................................................. Crear una tabla ............................................................................................... Escribir datos en la tabla ................................................................................ Modificar datos de una tabla .......................................................................... Borrar registros de una tabla .......................................................................... Seleccionar datos de una tabla ....................................................................... Crear una base de datos .................................................................................. Base de datos Microsoft Access................................................................ Base de datos Microsoft SQL Server ........................................................ ADO.NET ........................................................................................................... Componentes de ADO.NET........................................................................... Conjunto de datos........................................................................................... Proveedor de datos ......................................................................................... Objeto conexión ........................................................................................ Objeto orden ............................................................................................. Objeto lector de datos ............................................................................... Adaptador de datos ................................................................................... Modos de conexión ........................................................................................ Probando una conexión .................................................................................. ACCESO CONECTADO A UNA BASE DE DATOS ...................................... ATAQUES DE INYECCIÓN DE CÓDIGO SQL .............................................. Órdenes parametrizadas ................................................................................. Procedimientos almacenados .........................................................................

488  488  488  490  490  491  491  493  493  495  496  497  498  500  501  503  503  504  506  508  509  512  516  517 

XVI

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

TRANSACCIONES ............................................................................................ Transacción implícita TransactionScope ....................................................... Transacciones explícitas................................................................................. ESCRIBIR CÓDIGO INDEPENDIENTE DEL PROVEEDOR ........................ CONSTRUIR COMPONENTES DE ACCESO A DATOS............................... Capa de presentación ..................................................................................... Operaciones contra la base de datos............................................................... Objetos de negocio ......................................................................................... Capa de acceso a datos ................................................................................... Capa de lógica de negocio ............................................................................. Diseño de la capa de presentación ................................................................. Lógica de interacción con la capa de presentación ........................................ Desacoplar la IU del resto de la aplicación .................................................... Adaptar la colección de objetos ................................................................ Capa de lógica de negocio ........................................................................ Lógica de interacción con la capa de presentación ................................... Validación ...................................................................................................... ACCESO DESCONECTADO A UNA BASE DE DATOS ............................... ASISTENTES DE VISUAL STUDIO ................................................................ Crear la infraestructura para el acceso a la base de datos .............................. Crear el conjunto de datos .............................................................................. Agregar un control rejilla al formulario ......................................................... Código subyacente ......................................................................................... Asistente para configurar orígenes de datos................................................... VISTA EN DETALLE DEL CONJUNTO DE DATOS .................................... Diseño del formulario .................................................................................... Vincular las cajas de texto con el conjunto de datos ...................................... Controles de navegación ................................................................................ Añadir, borrar y buscar datos ......................................................................... CONTROL BindingNavigator ............................................................................ DISEÑO MAESTRO-DETALLE ....................................................................... EJERCICIOS RESUELTOS ............................................................................... EJERCICIOS PROPUESTOS.............................................................................

518  519  523  525  531  533  533  535  537  541  542  544  547  548  551  554  555  555  559  561  566  567  568  570  574  576  577  579  582  586  587  596  616

CAPÍTULO 14. LINQ ............................................................................................ 619  RECURSOS DEL LENGUAJE COMPATIBLES CON LINQ.......................... Declaración implícita de variables locales ..................................................... Matrices de tipos definidos de forma implícita .............................................. Tipos anónimos .............................................................................................. Propiedades autoimplementadas .................................................................... Iniciadores de objetos y colecciones ..............................................................

619  620  620  620  621  621 

CONTENIDO

Métodos extensores ........................................................................................ Expresiones lambda ....................................................................................... El delegado Func(Of T, TResu)...................................................................... Operadores de consulta .................................................................................. Árboles de expresiones lambda ...................................................................... EXPRESIONES DE CONSULTA...................................................................... Compilación de una expresión de consulta .................................................... Sintaxis de las expresiones de consulta .......................................................... Cláusula Group ......................................................................................... Productos cartesianos ................................................................................ Cláusula Join ............................................................................................. Cláusula Into ............................................................................................. Cláusula Let .............................................................................................. PROVEEDORES DE LINQ ............................................................................... ENTITY FRAMEWORK ................................................................................... MARCO DE ENTIDADES DE ADO.NET ........................................................ Consultar un modelo de objetos ..................................................................... ACCESO A UNA BASE DE DATOS ................................................................ Conectarse a la base de datos ......................................................................... Generar el modelo de entidades ..................................................................... Las clases de entidad y el contexto de objetos ............................................... Propiedades de navegación ............................................................................ Mostrar datos en una interfaz gráfica ............................................................. Una aplicación con interfaz gráfica................................................................ Vincular controles con el origen de datos ...................................................... Proveedor de datos ......................................................................................... Filtros ............................................................................................................. Contextos de corta duración ........................................................................... REALIZAR CAMBIOS EN LOS DATOS ......................................................... Modificar filas en la base de datos ................................................................. Insertar filas en la base de datos ..................................................................... Borrar filas en la base de datos ...................................................................... Problemas de concurrencia ............................................................................ El seguimiento de cambios............................................................................. CODE FIRST: UN NUEVO MODELO DE TRABAJO .................................... Aplicando Code First ..................................................................................... Definir el modelo de entidades ................................................................. Definir el contexto de objetos ................................................................... Anotaciones en datos y convenciones predeterminadas ........................... Cadena de conexión .................................................................................. Generar la base de datos............................................................................ Validación de entidades ................................................................................. Atributos de anotación de datos ................................................................

XVII 622  623  625  626  629  632  635  637  637  638  638  639  640  641  642  643  647  651  652  652  661  664  666  667  668  669  673  675  675  680  682  685  689  695  700  702  702  703  704  705  707  710  710 

XVIII

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

Interfaz fluida ............................................................................................ Code First desde una base de datos existente................................................. Cadena de conexión .................................................................................. Contexto de objetos................................................................................... El modelo de entidades ............................................................................. Acceder a los datos ................................................................................... EJERCICIOS RESUELTOS ............................................................................... EJERCICIOS PROPUESTOS.............................................................................

712  713  715  715  716  717  718  720

PARTE 4. APLICACIONES PARA INTERNET .................. 721 CAPÍTULO 15. ASP.NET ..................................................................................... 723  ASP.NET ............................................................................................................. Conceptos básicos de ASP.NET .................................................................... Páginas web ASP.NET .................................................................................. Controles HTML ............................................................................................ Controles de servidor web.............................................................................. Presentación del texto ............................................................................... Controles de entrada ................................................................................. Envío y devolución ................................................................................... Exploración ............................................................................................... Controles de diseño ................................................................................... Selección de fechas ................................................................................... Controles con enlaces a datos ................................................................... Controles de validación............................................................................. Un ejemplo de diseño de una página web ASP.NET ..................................... Software para el desarrollo de aplicaciones ASP.NET .................................. Componentes de una página web ASP.NET .................................................. ¿Cómo se publica una aplicación web? ......................................................... Crear un directorio virtual ......................................................................... Convertir la aplicación en una aplicación web de IIS ............................... Seguridad asociada con una carpeta.......................................................... Modelo de ejecución de una página web ASP.NET ...................................... Lógica de negocio .......................................................................................... Enlaces de datos en ASP.NET ....................................................................... Expresiones de enlace de datos ................................................................. Controles de lista enlazados a datos .......................................................... Modelo de enlace de ASP.NET ................................................................ GridView ............................................................................................. Seleccionar datos ................................................................................. Actualizar y eliminar datos ..................................................................

725  726  727  728  729  730  730  732  733  733  733  734  734  735  737  739  741  742  744  746  747  749  753  753  754  757  759  761  762 

CONTENIDO

XIX

Insertar datos (FormView) ................................................................... 765  Estado del modelo y validación ........................................................... 767  Asistente para publicar un proyecto web ASP.NET ...................................... 768 CAPÍTULO 16. FORMULARIOS WEB ............................................................. 773  APLICACIÓN WEB ASP.NET .......................................................................... Crear la capa de acceso a datos ...................................................................... Añadir un nuevo formulario web ................................................................... Descripción de un formulario web ASP.NET ........................................... Agregar controles y texto a la página ............................................................. Ciclo de vida de una página ........................................................................... Modelo de eventos de ASP.NET ................................................................... Añadir los controladores de eventos .............................................................. Obtener acceso a la base de datos .................................................................. CONTROLES DE VALIDACIÓN ..................................................................... HERRAMIENTA DE PRECOMPILACIÓN ASP.NET .................................... PROCESAMIENTO DE FORMULARIOS ....................................................... Formato de la petición HTTP ......................................................................... Petición HTTP get..................................................................................... Petición HTTP post ................................................................................... Respuestas en el protocolo HTTP .................................................................. Contexto de un formulario web...................................................................... Redireccionar una solicitud a otra URL ......................................................... ESTADO DE UNA PÁGINA ASP.NET ............................................................ Administración de estado en el cliente........................................................... Cookies ..................................................................................................... Cadenas de consulta .................................................................................. Campos de formulario ocultos .................................................................. Estado de vista .......................................................................................... Administración de estado en el servidor ........................................................ Estado de aplicación ................................................................................. Estado de sesión ........................................................................................ Bases de datos ........................................................................................... MEJORANDO EL RENDIMIENTO EN EL SERVIDOR................................. Almacenamiento en la caché de resultados .................................................... Configurar el almacenamiento en caché a nivel de página ....................... Actualización dinámica de fragmentos de una página en caché ............... Configurar el almacenamiento en caché por programación ...................... Almacenamiento en caché de datos procedentes de SQL Server ................ Reducir la información hacia y desde el servidor .......................................... CONTROLES DE SERVIDOR COMO ORIGEN DE DATOS.........................

774  778  780  781  782  784  787  787  790  792  796  798  798  799  800  801  801  803  803  804  804  806  807  807  809  810  810  811  812  812  813  814  815  816  817  819 

XX

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

SQL y desarrollo web .................................................................................... Control SqlDataSource ............................................................................. Responder a los eventos ............................................................................ LINQ y desarrollo web .................................................................................. Control EntityDataSource ......................................................................... Responder a los eventos ............................................................................ Generar la consulta Select mediante código ............................................. Realizar cambios en los datos ................................................................... Actualizar y eliminar filas en la base de datos ..................................... Controlar los errores en una página ASP.NET .................................... Insertar filas en la base de datos .......................................................... MODELO DE ENLACE DE ASP.NET ............................................................. Realizar cambios en los datos ................................................................... Actualizar y eliminar filas en la base de datos ..................................... Controlar los errores en una página ASP.NET .................................... Insertar filas en la base de datos .......................................................... Capa de la lógica de negocio.......................................................................... Paginación, ordenación y filtrado .................................................................. EJERCICIOS PROPUESTOS.............................................................................

820  822  826  828  829  835  836  838  839  841  841  847  852  852  855  855  860  863  869

CAPÍTULO 17. SERVICIOS WEB ...................................................................... 871  Integrar un servicio web en una aplicación .................................................... SERVICIOS WCF .............................................................................................. MODELO DE PROGRAMACIÓN DE WCF .................................................... Implementar un servicio WCF ....................................................................... Definir un contrato .................................................................................... Configuración del servicio WCF .............................................................. Implementar un cliente WCF ......................................................................... Configuración del cliente WCF ................................................................ Obtener acceso al servicio web ................................................................. Ejecución asíncrona .................................................................................. Seguridad en WCF ......................................................................................... SERVICIOS WEB Y LINQ ................................................................................ Arquitectura de N capas lógicas y N niveles físicos ...................................... Crear la base de datos..................................................................................... Crear el servicio WCF.................................................................................... Cliente WCF .................................................................................................. Llenar la lista............................................................................................. Mostrar datos ............................................................................................ Actualizar datos ........................................................................................ Cambiar foto .............................................................................................

872  873  874  875  876  882  884  888  888  890  893  894  895  896  897  904  907  908  909  909 

CONTENIDO

XXI

Agregar datos ............................................................................................ Borrar datos............................................................................................... Errores inesperados ................................................................................... EJERCICIOS PROPUESTOS.............................................................................

910  911  911  912

CAPÍTULO 18. SEGURIDAD DE APLICACIONES ASP.NET ...................... 919  ARQUITECTURA ASP.NET ............................................................................. CICLO DE VIDA DE UNA APLICACIÓN ASP.NET ..................................... GRUPOS DE APLICACIONES EN IIS ............................................................. AUTENTICACIÓN DE WINDOWS ................................................................. AUTORIZACIÓN ............................................................................................... SUPLANTACIÓN DE IDENTIDAD ................................................................. AUTENTICACIÓN MEDIANTE FORMULARIOS ......................................... CONTROLES PARA INICIO DE SESIÓN ....................................................... SERVICIO DE SUSCRIPCIONES..................................................................... SEGURIDAD EN LA TRANSMISIÓN DE DATOS ........................................ Criptografía simétrica..................................................................................... Criptografía asimétrica ................................................................................... AUTENTICACIÓN USANDO CERTIFICADOS ............................................. Instalar un certificado SSL en IIS 7.0 o superior ........................................... Certificado de cliente rechazado ....................................................................

920  921  922  923  930  932  933  938  951  958  959  959  961  963  968

CAPÍTULO 19. PÁGINAS MAESTRAS ............................................................. 969  ESTRUCTURA DE UNA PÁGINA MAESTRA ............................................... Controles de usuario web ............................................................................... Mejorar el aspecto de la interfaz .................................................................... Temas y máscaras en ASP.NET ..................................................................... Perfiles ........................................................................................................... EJERCICIOS RESUELTOS ............................................................................... Base de datos .................................................................................................. Cliente web ....................................................................................................

969  974  979  980  983  987  988  992

CAPÍTULO 20. AJAX ........................................................................................... 1001  FUNDAMENTOS DE AJAX ............................................................................. 1003  XMLHttpRequest ........................................................................................... 1004  AJAX con ASP.NET...................................................................................... 1012  GENERACIÓN DE CÓDIGO JAVASCRIPT ................................................... 1014  Fichero JavaScript .......................................................................................... 1015 

XXII

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

Vincular un evento con una función JavaScript ............................................. 1015  Inyectar código JavaScript desde el lado del servidor ................................... 1017  ASP.NET AJAX ................................................................................................. 1018  Crear un sitio web ASP.NET AJAX ................................................................... 1019  Clase ScriptManager ...................................................................................... 1020  Clases ScriptManager y ScriptManagerProxy ............................................... 1028  Clase UpdatePanel ......................................................................................... 1028  Clase AsyncPostBackTrigger......................................................................... 1030  Clase UpdateProgress..................................................................................... 1031  Cancelar una llamada asíncrona ..................................................................... 1033  Clase Timer .................................................................................................... 1034  Servicios web ................................................................................................. 1034  Métodos de página ......................................................................................... 1038  EJERCICIOS RESUELTOS ............................................................................... 1040

PARTE 5. ACERCA DEL MATERIAL ADICIONAL Y DE LOS APÉNDICES ........................................................ 1043

HERRAMIENTAS DE DESARROLLO.............................................................. 1045  PÁGINAS WEB ...................................................................................................... 1061  INTERNACIONALIZACIÓN .............................................................................. 1093  .NET PARA LINUX ............................................................................................... 1103  ÍNDICE ................................................................................................................... 1105

PRÓLOGO Visual Basic es hoy el lenguaje de programación más popular del mundo. Desde que Microsoft liberó Visual Basic 1.0 en 1991 han tenido lugar muchos cambios. Visual Basic 1.0 revolucionó la forma de desarrollar software para Windows; desmitificó el proceso de desarrollo de aplicaciones con interfaz gráfica de usuario y abrió este tipo de programación a las masas. En sus posteriores versiones, Visual Basic ha continuado proporcionando nuevas características que facilitaron la creación de aplicaciones para Windows cada vez más potentes; por ejemplo, la versión 3.0 introdujo el control de datos para facilitar el acceso a bases de datos, y la versión 4.0 mejoró y potenció este acceso con los objetos DAO. Con la aparición de Windows 95, Microsoft liberó Visual Basic 4.0 que abrió la puerta al desarrollo de aplicaciones de 32 bits y a la creación de DLL. La versión 5.0 mejoró la productividad con la incorporación de la ayuda inteligente y la introducción de los controles ActiveX. Posteriormente la versión 6.0 nos introdujo en la programación de Internet con las aplicaciones DHTML y el objeto WebClass. Después dispusimos de Visual Basic .NET que vino a revolucionar el mundo de las comunicaciones permitiendo escribir aplicaciones escalables para Internet. Siguieron Visual Basic 2005, 2008, 2010 y ahora Visual Basic 2012, una evolución del lenguaje Visual Basic, que se diseñó para generar aplicaciones con seguridad de tipos y orientadas a objetos de manera productiva. Esta generación de Visual Basic continúa la tradición de ofrecer una manera rápida y fácil de crear aplicaciones basadas en .NET Framework. Visual Basic .NET, después Visual Basic 2005, 2008, 2010 y ahora Visual Basic 2012, cambian la idea de programar de las versiones iniciales. Ahora se requiere una programación orientada a objetos, lo que obligará al desarrollador a programar de forma ordenada, con unas reglas metodológicas de programación análogas a las de otros lenguajes de programación orientados a objetos como C++, C# o Java por citar algunos de los más utilizados.

XXIV

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

La palabra “Visual” hace referencia, desde el lado del diseño, al método que se utiliza para crear la interfaz gráfica de usuario si se dispone de la herramienta adecuada (con Microsoft Visual Studio se utiliza el ratón para arrastrar y colocar los objetos prefabricados en el lugar deseado dentro de un formulario) y desde el lado de la ejecución, al aspecto gráfico que toman los objetos cuando se ejecuta el código que los crea, objetos que formarán la interfaz gráfica que el usuario de la aplicación utiliza para acceder a los servicios que ésta ofrece. La palabra “Basic” hace referencia al lenguaje BASIC (Beginners All-Purpose Symbolic Instruction Code), un lenguaje utilizado por más programadores que ningún otro lenguaje en la historia de la informática. Visual Basic ha evolucionado a partir del lenguaje BASIC original y ahora está soportado por una biblioteca orientada a objetos directamente relacionada con la interfaz gráfica de Windows. Y “NET” hace referencia al ámbito donde operarán nuestras aplicaciones web (Network - red). Resumiendo, Visual Basic es un lenguaje orientado a objetos seguro y elegante que permite a los desarrolladores construir un amplio rango de aplicaciones seguras y robustas que se ejecutan sobre .NET Framework. .NET Framework (que incluye entre otras cosas la biblioteca básica de .NET y el compilador Visual Basic) junto con otros componentes de desarrollo, como ASP.NET (formularios web y servicios web) y ADO.NET, forman un paquete de desarrollo denominado Microsoft Visual Studio que podemos utilizar para crear aplicaciones Windows tradicionales (aplicaciones de escritorio que muestren una interfaz gráfica al usuario) y aplicaciones para la Web. Para ello, este paquete proporciona un editor de código avanzado, diseñadores de interfaces de usuario apropiados, depurador integrado y muchas otras utilidades para facilitar un desarrollo rápido de aplicaciones.

Para quién es este libro Este libro está pensado para aquellas personas que quieran aprender a desarrollar aplicaciones que muestren una interfaz gráfica al usuario, aplicaciones para acceso a bases de datos y para Internet (páginas web). Para ello, ¿qué debe hacer el lector? Pues simplemente leer ordenadamente los capítulos del libro, resolviendo cada uno de los ejemplos que en ellos se detallan. Evidentemente, no vamos a enseñar a programar aquí, por eso es necesario tener algún tipo de experiencia con un lenguaje de programación orientado a objetos (Visual Basic, C#, Java, etc., son lenguajes orientados a objetos). Haber programado en .NET y con Visual Basic sería lo ideal, así como tener conocimientos de HTML y XML. Estos requisitos son materia de mis otros libros Microsoft Visual Basic - Lenguaje y aplicaciones y Microsoft Visual Basic - Curso de programación, ambos editados también por RA-MA y Alfaomega Grupo Editor.

PRÓLOGO

XXV

Microsoft Visual Basic - Lenguaje y aplicaciones se centra en la programación básica: tipos, sentencias, matrices, métodos, ficheros, etc., y hace una introducción a las interfaces gráficas, a las bases de datos y a las aplicaciones para Internet, y Microsoft Visual Basic - Curso de programación cubre la programación básica (expuesta en menor medida en el libro anterior) y la programación orientada a objetos (POO) en detalle: clases, clases derivadas, interfaces, espacios de nombres, excepciones, etc.; después, utilizando la POO, añade otros temas como estructuras dinámicas de datos, algoritmos de uso común, hilos (programación concurrente), etc. Éste sí que es un libro de programación con Visual Basic en toda su extensión. Puede ver más detalles de cada uno de ellos en mi web: www.fjceballos.es.

Cómo está organizado el libro El libro se ha estructurado en 20 capítulos más algunos apéndices que a continuación se relacionan. Los capítulos 1 y 2 nos introducen en .NET y en el desarrollo de aplicaciones de escritorio. Los capítulos 3 al 11 nos enseñan a desarrollar aplicaciones de escritorio que muestran una interfaz de ventanas al usuario. Los capítulos 12 al 14 cubren el enlace a datos, el acceso a bases de datos (ADO.NET), el lenguaje de consultas integrado (LINQ) y el acceso a bases de datos con Entity Framework. Y los capítulos 15 al 20 nos enseñan cómo desarrollar aplicaciones para Internet (ASP.NET) a base de formularios web, servicios web WCF y AJAX. CAPÍTULO 1. INTRODUCCIÓN A MICROSOFT .NET CAPÍTULO 2. MI PRIMERA APLICACIÓN CAPÍTULO 3. APLICACIÓN WINDOWS FORMS CAPÍTULO 4. INTRODUCCIÓN A WINDOWS FORMS CAPÍTULO 5. MENÚS Y BARRAS DE HERRAMIENTAS CAPÍTULO 6. CONTROLES Y CAJAS DE DIÁLOGO CAPÍTULO 7. TABLAS Y ÁRBOLES CAPÍTULO 8. DIBUJAR Y PINTAR CAPÍTULO 9. INTERFAZ PARA MÚLTIPLES DOCUMENTOS CAPÍTULO 10. CONSTRUCCIÓN DE CONTROLES CAPÍTULO 11. PROGRAMACIÓN CON HILOS CAPÍTULO 12. ENLACE DE DATOS EN WINDOWS FORMS CAPÍTULO 13. ACCESO A UNA BASE DE DATOS CAPÍTULO 14. LINQ CAPÍTULO 15. ASP.NET CAPÍTULO 16. FORMULARIOS WEB CAPÍTULO 17. SERVICIOS WEB CAPÍTULO 18. SEGURIDAD DE APLICACIONES ASP.NET CAPÍTULO 19. PÁGINAS MAESTRAS CAPÍTULO 20. AJAX APÉNDICE A. HERRAMIENTAS DE DESARROLLO APÉNDICE B. PÁGINAS WEB APÉNDICE C. INTERNACIONALIZACIÓN APÉNDICE D. .NET PARA LINUX

XXVI

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

Qué se necesita para utilizar este libro Este libro ha sido escrito utilizando el paquete Microsoft .NET Framework Software Development Kit (SDK) versión 4.5 que forma parte del entorno de desarrollo Microsoft Visual Studio 2012 que incluye todo lo necesario para escribir, construir, verificar y ejecutar aplicaciones .NET. Por lo tanto, basta con que instale en su máquina Microsoft Visual Studio 2012, o superior, en cualquiera de sus versiones o, como alternativa, descargue desde http://www.microsoft.com/express/ los paquetes Visual Studio Express 2012 for Windows Desktop y for Web e instálelos (opcionalmente puede instalar también SQL Server 2012 Express, caso del autor). Nota: para probar las aplicaciones web se recomienda instalar el servidor de aplicaciones IIS (Internet Information Services) que incluye Windows (Inicio > Panel de control > Agregar y quitar programas > Windows). Esto tiene que hacerlo antes de instalar Microsoft Visual Studio 2012 o Visual Studio Express 2012 for Web.

Sobre los ejemplos del libro El código fuente de todos los ejemplos del libro podrá descargarse, según se indica en los apéndices, de la web www.ra-ma.es desde la página web correspondiente al libro.

Agradecimientos He recibido ayuda de algunas personas durante la preparación de este libro y, por ello, les estoy francamente agradecido. También deseo expresar mi agradecimiento a Microsoft Ibérica por poner a mi disposición, en particular, y de todos los lectores, en general, el software que el estudio de esta obra requiere. Francisco Javier Ceballos Sierra http://www.fjceballos.es/

PARTE

 

 

Introducción 

Introducción a Microsoft .NET



Mi primera aplicación

PARTE

 

 

Interfaces gráficas 

Aplicación Windows Forms



Introducción a Windows Forms



Menús y barras de herramientas



Controles y cajas de diálogo



Tablas y árboles



Dibujar y pintar



Interfaz para múltiples documentos



Construcción de controles



Programación con hilos

PARTE

 

 

Acceso a datos 

Enlace de datos en Windows Forms



Acceso a una base de datos



LINQ

PARTE

 

 

Aplicaciones para Internet  ASP.NET  Formularios web  Servicios web  Seguridad de aplicaciones ASP.NET  Páginas maestras  AJAX

PARTE 

 

 

Acerca del material adicional y de los apéndices  Herramientas de desarrollo  Páginas web  Internacionalización  .NET para Linux  Índice

APÉNDICE A  F.J.Ceballos/RA-MA

HERRAMIENTAS DE DESARROLLO Cuando se utiliza un entorno de desarrollo integrado (EDI), lo primero que hay que hacer una vez instalado es asegurarse de que las rutas donde se localizan las herramientas, las bibliotecas, la documentación y los ficheros fuente hayan sido establecidos; algunos EDI sólo requieren la ruta donde se instaló el compilador. Este proceso normalmente se ejecuta automáticamente durante el proceso de instalación de dicho entorno. Si no es así, el entorno proporcionará algún menú con las órdenes apropiadas para realizar dicho proceso. Por ejemplo, en los EDI que se presentan a continuación las rutas a las que nos referimos quedan establecidas durante la instalación de los mismos.

VISUAL STUDIO Visual Studio proporciona una variedad de herramientas tanto para desarrolladores individuales como para equipos de desarrollo. http://www.microsoft.com/express/

Ediciones Visual Studio Express Es la nueva línea de productos que expanden Visual Studio ofreciendo herramientas ligeras y sencillas de aprender y de usar para aficionados, entusiastas y aprendices que quieren crear sitios Web y aplicaciones para Windows. Su descarga es gratuita y dependiendo del tipo de aplicación a desarrollar optaremos por una u otra herramienta de desarrollo de las siguientes:  

Visual Studio Express for Web. Visual Studio Express for Windows 8.

1046   

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

Visual Studio Express for Windows Desktop. Visual Studio Express for Windows Phone. Visual Studio Team Foundation Server Express.

Ediciones de Visual Studio para profesionales Visual Studio en sus versiones professional, premium y ultimate, ofrece una flexible herramienta de desarrollo para desarrolladores de aplicaciones de línea de negocio o programadores ocasionales que estén construyendo aplicaciones móviles, basadas en Windows o para la Web, soluciones sobre Microsoft Office System utilizando Excel, Word e InfoPath, y con herramientas de software de ciclo de vida productivas, integradas y extensibles que permiten a las empresas reducir la complejidad en la creación de soluciones orientadas a servicios. La utilización de estas versiones requiere comprar una licencia.

APLICACIÓN DE CONSOLA En el capítulo 2 vimos una introducción al desarrollo de aplicaciones con interfaz gráfica de usuario, pero no abordamos el desarrollo de aplicaciones de consola que en ocasiones puede ser útil. Veamos un ejemplo a continuación utilizando cualquiera de las ediciones de Visual Studio. Para editar y ejecutar el programa HolaMundo utilizando cualquiera de las ediciones de Visual Studio, los pasos a seguir son los siguientes: 1. Partiendo de la página de inicio de MS Visual Visual Basic Express, hacemos clic en Nuevo proyecto... para crear un proyecto nuevo, o bien ejecutamos la orden Archivo > Nuevo proyecto. Esta acción hará que se visualice una ventana que mostrará los tipos de plantillas que puede utilizar; la elección de una u otra dependerá del tipo de aplicación que deseemos construir. La figura siguiente muestra esta ventana:

APÉNDICE A: ENTORNOS DE DESARROLLO

1047

Para que la ventana anterior muestre la lista Ubicación y la caja Nombre de la solución tiene que habilitar, si no lo está, la opción “Guardar nuevos proyectos al crearlos”. Para ello, ejecute la orden Herramientas > Opciones > Proyectos y soluciones y seleccione esta opción en la ventana que se visualiza:

Para nuestro ejemplo, elegimos la plantilla “Aplicación de consola”. Después, especificamos el nombre del proyecto y su ubicación; observe que el proyecto será creado en una carpeta con el mismo nombre. A continuación pulsamos el botón Aceptar y obtendremos el esqueleto del proyecto de acuerdo con la plantilla seleccionada. Para cambiar el nombre asignado al fichero .vb, hacemos clic sobre Module1.vb y utilizando el botón derecho del ratón, seleccio-

1048

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

namos del menú contextual que se visualiza la orden Cambiar nombre; también podemos hacer este cambio a través de la ventana de propiedades.

Si necesitáramos añadir un fichero nuevo a este proyecto, haríamos clic con el botón derecho del ratón sobre el nombre del proyecto y seleccionaríamos Agregar > Nuevo elemento. Después, elegiríamos el tipo de elemento que deseamos añadir y, finalmente, haríamos clic en el botón Agregar. 2. A continuación editamos el código que compone el programa. Después, antes de compilar la aplicación, podemos verificar que se trata de una aplicación de consola: Proyecto > Propiedades de HolaMundo > Aplicación > Tipo de resultado > Aplicación de consola.

APÉNDICE A: ENTORNOS DE DESARROLLO

1049

3. Para compilar el programa, ejecutamos la orden Generar HolaMundo del menú Generar. Finalmente, para ejecutar el programa seleccionamos la orden Iniciar sin depurar del menú Depurar, o bien pulsamos las teclas Ctrl+F5. También puede ejecutar el programa seleccionando la orden Iniciar depuración del menú Depurar, o bien pulsando la tecla F5. Los resultados de la compilación se muestran en la ventana Resultados. La acción de ejecutar el programa acarrea también su compilación si fuera necesario.

DEPURAR UNA APLICACIÓN ¿Por qué se depura una aplicación? Porque los resultados que estamos obteniendo con la misma no son correctos y no sabemos por qué. El proceso de depuración consiste en ejecutar la aplicación paso a paso, indistintamente por sentencias o por métodos, con el fin de observar el flujo seguido durante su ejecución, así como los resultados intermedios que se van sucediendo, con la finalidad de detectar las anomalías que producen un resultado final erróneo. Por ejemplo, para depurar una aplicación utilizando el depurador del entorno de desarrollo de Visual Studio, ejecute la orden Depurar > Paso por instrucciones y utilice las órdenes del menú Depurar o los botones correspondientes de la barra de herramientas (para saber el significado de cada botón, ponga el puntero del ratón sobre cada uno de ellos).

1050

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

De forma resumida, las órdenes disponibles para depurar una aplicación son las siguientes: 

Iniciar o F5. Inicia la ejecución de la aplicación en modo depuración hasta encontrar un punto de parada o hasta el final si no hay puntos de parada.



Alternar puntos de interrupción o F9. Pone o quita un punto de parada en la línea sobre la que está el punto de inserción.



Detener depuración o Mayús+F5. Detiene el proceso de depuración.



Paso a paso por instrucciones o F11. Ejecuta la aplicación paso a paso. Si la línea a ejecutar coincide con una llamada a un método definido por el usuario, dicho método también se ejecutará paso a paso.



Paso a paso por procedimientos o F10. Ejecuta la aplicación paso a paso. Si la línea a ejecutar coincide con una llamada a un método definido por el usuario, dicho método no se ejecutará paso a paso, sino de una sola vez.



Paso a paso para salir o Mayús+F11. Cuando un método definido por el usuario ha sido invocado para ejecutarse paso a paso, utilizando esta orden se puede finalizar su ejecución en un solo paso.



Ejecutar hasta el cursor o Ctrl+F10. Ejecuta el código que hay entre la última línea ejecutada y la línea donde se encuentra el punto de inserción.



Inspección rápida o Ctrl+Alt+Q. Visualiza el valor de la variable que está bajo el punto de inserción o el valor de la expresión seleccionada (sombreada).

Para ejecutar la aplicación en un solo paso, seleccione la orden Iniciar sin depurar (Ctrl+F5) del menú Depurar. Además de la barra de herramientas Depurar, dispone también de la barra de herramientas Generar reducida que se muestra en la figura siguiente:

Esta barra de herramientas pone a su disposición las órdenes siguientes: 

Generar aplicación. Compila la aplicación y genera el fichero ejecutable correspondiente.

APÉNDICE A: ENTORNOS DE DESARROLLO

1051



Generar solución. Compila y genera todos los proyectos que componen la solución.



Cancelar. Detiene el proceso de compilación o de generación del fichero ejecutable.

ARGUMENTOS EN LA LÍNEA DE ÓRDENES Si ejecuta una aplicación desde el EDI que requiere argumentos en la línea de órdenes, ¿dónde se introducen estos argumentos? Haga clic sobre el nombre del proyecto con el botón derecho del ratón y seleccione la orden Propiedades. Después, en la ventana que se visualiza, seleccione el panel Depurar y escriba los argumentos según puede observar en la figura:

CONECTAR A LOCALDB O A SQLEXPRESS El servidor de base de datos que se instala con Visual Studio es diferente dependiendo de la versión de Visual Studio que haya instalado: 

Si se utiliza Visual Studio 2010 se creará una base de datos SQL Express.



Si se utiliza Visual Studio 2012 se creará una base de datos LocalDB. Esto no significa que no pueda utilizar una base de datos SQL Express.

SQL Server Express SQL Server 2012 Express es el motor de base de datos gratuito, potente, pero sencillo, que se integra perfectamente con el resto de productos Express. Se trata de

1052

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

una versión aligerada de la nueva generación de SQL Server que puede descargar gratuitamente del sitio web de Microsoft. Este producto tiene el mismo motor de base de datos que toda la familia SQL Server y utiliza el mismo lenguaje SQL. Otra característica interesante es la movilidad de las bases de datos de un servidor a otro con XCOPY. Con esta utilidad podemos mover un fichero MDF de una máquina a otra a cualquier ubicación dentro de su sistema de ficheros, quedando la base de datos movida lista para trabajar. Para utilizar esta base de datos deberemos hacer uso de la opción AttachDBFilename en la cadena de conexión, según se muestra a continuación: connectionString="Data Source=.\sqlexpress;Initial Catalog=; Integrated Security=True;AttachDBFileName=C:\bd\bd_editorial.mdf"

La entrada Data Source especifica el servidor de base de datos que vamos a utilizar y AttachDBFilename, la localización del fichero de base de datos. Obsérvese que la entrada Initial Catalog está vacía. Para crear una base de datos utilizando SQL Server Express tiene que hacerlo desde la línea de órdenes (véase también el capítulo titulado Acceso a una base de datos). Para iniciar la consola que le permita trabajar contra el motor de base de datos SQL Server, localice en su instalación el fichero SQLCMD.EXE, cambie a ese directorio y ejecute la orden: SQLCMD -S nombre-del-ordenador\SqlExpress

Una vez iniciada la consola, puede escribir órdenes SQL a continuación del símbolo “>”. Para ejecutar un bloque de sentencias escriba GO. Para salir, escriba QUIT. Por ejemplo, el guión que muestra la figura siguiente crea la base de datos

APÉNDICE A: ENTORNOS DE DESARROLLO

1053

tfnos con una tabla telefonos, añade tres filas a la tabla y, finalmente, selecciona todas las filas de la tabla con todas sus columnas:

Para ver la relación de órdenes que puede utilizar a través de la aplicación SQLCMD ejecute la orden help como se muestra en la figura siguiente. Obsérvese que cada orden va precedida por dos puntos (:).

1054

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

SQL Server 2012 Express LocalDB Microsoft SQL Server 2012 Express LocalDB es un modo de ejecución de SQL Server Express destinado a los desarrolladores de programas con el fin de sustituir la característica de instancias de usuario de SQL Server Express, que ha quedado obsoleta. La instalación de LocalDB copia un conjunto de archivos mínimo necesario para iniciar el motor de base de datos de SQL Server. Una instancia de SQL Server Express LocalDB se puede administrar con la herramienta de línea de órdenes SqlLocalDB.exe.

SQL SERVER MANAGEMENT STUDIO EXPRESS Si instaló SQL Server, habrá comprobado que no dispone de una herramienta de administración de bases de datos. Por tal motivo, Microsoft también ha desarrollado una nueva aplicación para gestionar bases de datos que puede obtener de forma gratuita de Internet en la dirección especificada a continuación: http://www.microsoft.com/es-es/downloads Esta aplicación presenta una interfaz gráfica, muy sencilla de utilizar, para realizar tareas típicas como crear bases de datos, gestionar las tablas de la base, los procedimientos almacenados, crear usuarios, etc. Cuando inicie SQL Server Management Studio Express, le serán solicitados el nombre del servidor de bases de datos, el tipo de autenticación, y el usuario y la contraseña sólo si eligió autenticación SQL Server:

Una vez realizada la conexión con el gestor de bases de datos, le será mostrada la ventana de la figura siguiente. Seleccione en la lista del panel de la izquierda la base de datos con la que desea trabajar, haga clic en el botón Nueva consulta de

APÉNDICE A: ENTORNOS DE DESARROLLO

1055

la barra de herramientas y, después, escriba en el mismo las sentencias SQL que desee ejecutar. Para ejecutar una sentencia SQL haga clic en el botón Ejecutar de la barra de herramientas.

CREAR UNA BASES DE DATOS Si no instaló SQL Server 2012 Express puede crear una nueva base de datos local al proyecto siguiendo los pasos especificados a continuación. Haga clic con el botón secundario del ratón sobre el nombre del proyecto para agregar un nuevo elemento y seleccione Base de datos basada en servicio. A continuación se abrirá el asistente para la configuración de orígenes de datos y, como no hay ningún objeto de base de datos disponible porque la base de datos es nueva, haga clic en Cancelar para crear y agregar la base de datos vacía al proyecto. A continuación puede continuar añadiendo las tablas, los datos de las tablas, las relaciones entre las tablas, etc. Puede ver un ejemplo en el apartado Ejercicios resueltos del capítulo Acceso a una base de datos. Si instaló SQL Server 2012 Express (nombre predeterminado del servidor: sqlexpress), entonces es posible añadir al proyecto elementos nuevos de tipo base

1056

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

de datos utilizando el explorador de bases de datos. Para ello, abra el Explorador de bases de datos (Ver > Otras ventanas > Explorador de bases de datos). Haga clic con el botón secundario del ratón sobre el nodo Conexiones de datos y seleccione Agregar conexión. Elija como origen de datos Microsoft SQL Server. Se visualizará la ventana siguiente:

Escriba el nombre de la base de datos y haga clic en Aceptar. Se visualizará el mensaje La base de datos ‘bd_telefonos’ no existe. ¿Desea intentar crearla?:

Haga clic en Sí. Observará en el explorador de bases de datos que bd_telefonos ha sido creada.

APÉNDICE A: ENTORNOS DE DESARROLLO

1057

El paso siguiente es añadir las tablas. Despliegue el árbol correspondiente a la nueva conexión, haga clic con el botón secundario del ratón sobre el nodo Tablas y agregue una nueva tabla. Después complete el proceso de creación de la misma.

Puede ver un ejemplo de este proceso en el apartado Ejercicios resueltos del capítulo Acceso a una base de datos.

INSTALACIÓN DE ASP.NET EN WINDOWS ASP.NET queda instalado automáticamente cuando instaló Visual Studio o, en su defecto, Visual Studio Express for Web. Ahora bien, para crear y ejecutar aplicaciones para Internet necesitará un servidor de aplicaciones, en el caso de la plataforma Windows éste es IIS (Internet Information Server). La instalación de IIS debe ser anterior a la de .NET Framework. Si no se hizo así, ASP.NET no estará habilitado en IIS y no podremos realizar aplicaciones ASP.NET. En este caso, la solución es registrar manualmente ASP.NET en IIS.

Registro manual de ASP.NET en IIS Para registrar manualmente ASP.NET en IIS, abra una ventana de consola, sitúese en la carpeta C:\WINDOWS\Microsoft.NET\Framework\vx.x.xxxxx y ejecute: aspnet_regiis.exe -i -enable

Esto habilitará IIS para la ejecución de ASP.NET, registrará las extensiones de ASP.NET (aspx, amsx, asax, etc.) y ya podremos empezar a trabajar con ASP.NET. Si echa una ojeada a todas las opciones disponibles (aspnet_regiis.exe -help) podrá observar algunas muy interesantes, como -c, que instala las secuencias de órdenes del cliente de esta versión en el subdirectorio aspnet_client de todos los directorios de sitios IIS.

1058

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

Si la operación anterior no solucionó el problema, pruebe a reparar la instalación actual a partir del material adicional del producto. Si esto tampoco solucionara el problema, sólo queda desinstalar el producto y volverlo a instalar.

DEPURAR CÓDIGO JAVASCRIPT En una aplicación ASP.NET que incluya código JavaScript (véase el capítulo 20) es posible utilizar el depurador de Visual Studio o de Visual Web Developer para depurar ese código. Para poder depurar código JavaScript, el primer paso es habilitar esta opción en el navegador. En el caso de Internet Explorer, seleccione Herramientas > Opciones de Internet > Opciones avanzadas y asegúrese de que no esté seleccionada la opción “Deshabilitar la depuración de scripts”:

Cumplido el requisito anterior, sólo queda poner en el código JavaScript a depurar la sentencia debugger. De esta forma, cuando inicie la depuración de la aplicación y el flujo de ejecución pase por esta sentencia, la ejecución se detendrá y podrá continuarla paso a paso. function CargarTabla(resultado, contexto) { debugger; var elementos =

APÉNDICE A: ENTORNOS DE DESARROLLO

1059

LoadXmlFromString(resultado).getElementsByTagName("string"); TablaResultados = document.getElementById("TablaDeResultados"); if (TablaResultados != null) { // ...

DESARROLLO Para el desarrollo de una aplicación, lo habitual es crear un modelo de clases siguiendo algún patrón, por ejemplo el patrón de arquitectura de software ModelView-ViewModel (MVVM) utilizado por WPF y Silverlight, que es un sucesor del ampliamente conocido Model-View-Controller (MVC) utilizado por ASP.NET MVC, nacido del entorno Smalltalk a finales de los años 70. En MVC la aplicación se compone de tres tipos de objetos que tienen responsabilidades distintas con el objetivo de separar la capa visual de su correspondiente programación y acceso a datos:   

El modelo. Es el responsable de los datos y de la lógica de negocio de la aplicación. La vista. Es el responsable de mostrar los datos al usuario y de permitir su manipulación desde y hacia el modelo. El controlador. Es el responsable de implementar las respuestas a los eventos o acciones de los usuarios e invocar peticiones al modelo y probablemente a la vista.

Con el modelo MVC cada tipo de objeto es responsable de una cosa, lo que simplifica el desarrollo, comprensión y la realización de pruebas del código fuente. Además, es fácil remplazar las vistas, o tener más de una actuando sobre los mismos datos. En el caso de las aplicaciones Silverlight, el .NET Framework dispone de la capacidad de usar enlaces (bindings) para transferir directamente datos desde el controlador hacia la vista, por lo que el controlador solo es responsable de imple-

1060

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

mentar el comportamiento de esta. En este caso, el controlador se denomina modelo de vista (view model), dando origen al patrón MVVM donde: 





El modelo. Representa los datos o información con la que se trabaja y en la mayoría de los casos la lógica de negocio asociada. Debe encontrarse completamente aislado de la interfaz de usuario. La vista. Representa la información en la interfaz de usuario y es capaz de aceptar la entrada de datos del usuario a través de controles, teclado, ratón u otros elementos en forma de controles desde la interfaz gráfica. El modelo-vista. Objeto que separa y aísla completamente a la vista del modelo, se puede pensar en este tipo de objetos como una abstracción de la vista, que además hace las funciones de intermediario, transformando los datos recibidos del modelo en datos aptos para la vista y viceversa.

Por lo tanto MVVM comparte todos los beneficios de MVC, pero con una ventaja adicional: la simplificación que resulta de usar enlaces declarativos para transferir los datos desde y hacia el modelo a la vista.

APÉNDICE B

 F.J.Ceballos/RA-MA

PÁGINAS WEB ¿Quién no ha oído hablar de Internet? La respuesta es evidente, porque donde quiera que esté oirá hablar de Internet. ¿Por qué? Porque hoy en día forma parte del mundo de los negocios y del comercio, aunque en sus inicios no fue ésta la intención. Hay muchas empresas que le proporcionan conexión las 24 horas del día por un precio asequible. Pero, ¿qué es Internet?, ¿qué servicios ofrece?

¿QUÉ ES INTERNET? Internet, es decir, inter-red, es una red de redes informáticas distribuidas por todo el mundo que intercambian información entre sí mediante la familia de protocolos TCP/IP. Puede imaginarse Internet como una gran nube con ordenadores conectados:

Cliente

Servidor Cliente

Internet surgió de un programa de investigación realizado por la Agencia de Proyectos de Investigación Avanzados de Defensa (DARPA) de los Estados Unidos sobre la conexión de redes informáticas. El resultado fue ARPANet (1969). Esta red crece y a principios de los años 80 se conecta con CSNet y MILNet, dos redes independientes, lo que se considera como el nacimiento de Internet (Inter-

1062

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

national Network of computers). También forman parte de esta red NSI (NASA Science Internet) y NSFNet (National Science Foundation Net). Durante muchos años Internet ha servido para que muchos departamentos de investigación de distintas universidades distribuidas por todo el mundo pudieran colaborar e intercambiar información. Sólo recientemente ha comenzado a formar parte de los negocios y de nuestra vida cotidiana. Internet ha hecho que el mundo empresarial se haya replanteado sus sistemas de comunicación internos y externos y en la mayoría de los casos los haya encauzado vía Internet. Esto ha dado lugar a dos subpoblaciones dentro de Internet: intranets y extranets.

Intranet Una intranet no es más que una red local que utiliza los mismos protocolos que Internet, independientemente de que esté o no conectada a Internet. ¿Qué ventajas tiene una intranet? Fundamentalmente dos: independencia de los proveedores habituales de soluciones y una única forma de trabajar que evita tener que aprender sistemas nuevos, lo que redunda en un ahorro de formación. Por otra parte, una intranet suele estar dotada de una velocidad bastante mayor que la habitual en Internet, lo que posibilita una comunicación muy fluida, incluso, cuando se trata de flujos de información multimedia.

Terminología Internet Desde el punto de vista físico, Internet no es una simple red, sino miles de redes informáticas que trabajan conjuntamente bajo los protocolos TCP/IP (Transmision Control Protocol/Internet Protocol - Protocolo de Control de Transmisiones/Protocolo Internet), entendiendo por protocolo un conjunto de normas que regulan la comunicación entre los distintos dispositivos de una red. Desde el punto de vista del usuario, Internet es una red pública que interconecta universidades, centros de investigación, servicios gubernamentales y empresas. El conjunto de protocolos de Internet está compuesto por muchos protocolos relacionados con la asociación formada por TCP e IP y relacionados con las diferentes capas de servicios de la red; esto es, las funciones de una red se pueden agrupar en capas de servicios de la red. Imagínese las capas como distintas estaciones por las que debe pasar un paquete de información cuando realiza la ruta de un ordenador a otro conectados a diferentes puntos dentro de Internet. Por ejemplo, el protocolo TCP/IP visto desde este punto de vista puede imaginárselo de forma resumida así:

APÉNDICE B: PÁGINAS WEB

1063

Aplicación (FTP, Telnet, Gopher, Word Wide Web) API de Windows Sockets Transporte (TCP y UDP) Red (IP) Enlace (controlador de dispositivo, tarjeta de red, protocolos de control de la línea)

Entre dos capas puede haber una interfaz de programación (API) para interpretar los mensajes o paquetes a medida que van pasando. Utilizar una interfaz de programación, como la API de Windows Sockets, libera al programador de tratar con detalles de cómo se pasan los paquetes de información entre las capas inferiores. Las capas de enlace y de red se encargan de empaquetar la información y de llevar los paquetes de un lugar a otro de la red. ¿Cómo se identifican estos lugares? La respuesta es con direcciones de Internet que permitan identificar tanto el ordenador como el usuario, ya que un mismo ordenador puede tener dados de alta diferentes usuarios. Estas direcciones son especificadas según un convenio de sistema de nombres de dominio (DNS). Un DNS tiene el formato siguiente: [subdominio].[subdominio].[...].dominio

Por ejemplo: uni.alcala.es

En este ejemplo, es es el dominio, alcala es un subdominio de es, y uni un subdominio de alcala. Algunos dominios de nivel superior son: Dominio com edu net us de es

Cobertura organizaciones comerciales instituciones educativas suministradores de servicios de red Estados Unidos Alemania España

1064

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

Cada nombre de dominio se corresponde con una única dirección de Internet o dirección IP. Una dirección IP es un valor de 32 bits dividida en cuatro campos de 8 bits. Por ejemplo: 130.206.82.7

Para referirse a un usuario perteneciente a un determinado dominio, la sintaxis empleada es: usuario@[subdominio].[subdominio].[...].dominio

Los programas que gestionan los nombres de dominio se denominan servidores de nombres. Cada servidor de nombres posee información completa de una determinada zona (subconjunto de un dominio) y de otros servidores de nombres responsables de otras zonas. De esta forma, cuando llega una solicitud de información sobre la zona de la que es responsable un determinado servidor, éste sencillamente proporciona la información. Sin embargo, cuando llega una solicitud de información para una zona diferente, el servidor de nombres se pone en contacto con el servidor de esa zona. Los servidores DNS constituyen la base de datos distribuida de nombres de Internet. La capa de transporte es responsable de la entrega fiable de los datos. En esta capa se emplean dos protocolos diferentes: TCP y UDP. TCP toma mensajes de usuario de longitud variable y los pasa al nivel de red, solicitando acuse de recibo; y UDP es similar, salvo en que no solicita acuse de recibo de los datos. La capa de aplicación proporciona una interfaz a la aplicación que ejecuta un usuario. Dicho de otra forma, proporciona el conjunto de órdenes que el usuario utiliza para comunicarse con otros ordenadores de la red. Existen muchos protocolos en TCP/IP. A continuación, se indican algunos bastante conocidos: 

FTP (File Transfer Protocol - Protocolo de transferencia de ficheros). Copia ficheros de una máquina a otra.



Gopher. Protocolo que permite buscar y recuperar documentos mediante un sistema de menús.



POP 3 (Post Office Protocol - Protocolo de oficina de correos). Protocolo para gestionar el correo electrónico, en base a su recepción y envío posterior, entre el usuario y su servidor de correo. Con este fin son empleados también los protocolos IMAP (Internet Message Access Protocol) y HTTP (correo web).

APÉNDICE B: PÁGINAS WEB

1065



SMTP (Simple Mail Transfer Protocol - Protocolo de transferencia de correo). Protocolo para controlar el intercambio de correo electrónico entre dos servidores de correo en Internet.



Telnet (Telecomunications NetWork Protocol - Protocolo de telecomunicaciones de red). Protocolo utilizado para establecer conexiones entre terminales remotos. Permite establecer conexiones entre máquinas con diferentes sistemas operativos.



USENet. Nombre con el que se denomina al conjunto de los grupos de discusión y noticias, establecidos en Internet. La idea de USENet es servir como tablón electrónico de anuncios.



HTTP (HyperText Transfer Protocol). Protocolo de transferencia de hipertexto utilizado por WWW (World Wide Web - La telaraña mundial). Se trata de un sistema avanzado para la búsqueda de información en Internet basado en hipertexto y multimedia. El software utilizado consiste en exploradores (browsers), también llamados navegadores, con una interfaz gráfica.

SERVICIOS EN INTERNET Los servicios más comunes son el correo electrónico, la conexión remota, transferencia de ficheros, grupos de noticias y la WWW. Programas que facilitan estos servicios hay muchos, y su manejo, además de sencillo, es similar. Por eso, independientemente de los que se utilicen en los ejemplos, usted puede emplear los suyos de forma análoga. En cualquier caso, tenga presente que sólo podrá acceder a Internet si además de un ordenador y un módem (un módem es un dispositivo que conecta un ordenador a una línea telefónica), ha contratado dicho servicio con un proveedor de Internet, o bien si su ordenador forma parte de una red que le ofrece acceso a Internet. El correo electrónico (correo-e o e-mail) es uno de los servicios más utilizados en todo el mundo. Como su nombre indica, tiene como finalidad permitir enviar y recibir mensajes. Un ejemplo de aplicación que proporciona este servicio es Microsoft Outlook Express. La orden telnet (de Windows, Unix, etc.) proporciona la capacidad de mantener sesiones como un terminal del ordenador remoto, lo que le permite ejecutar órdenes como si estuviera conectado localmente.

1066

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

El protocolo de transferencia de ficheros (ftp) es un método sencillo y efectivo de transferir ficheros ASCII y binarios entre ordenadores conectados a una red TCP/IP. Las órdenes ftp utilizadas con mayor frecuencia son las siguientes: Orden ftp

Significado

ascii binary bye cd close ftp get help

Establece el modo ASCII para la transferencia de ficheros. Establece el modo binario para la transferencia de ficheros. Finaliza la sesión ftp y sale. Cambia de directorio de trabajo en el ordenador remoto. Finaliza la sesión ftp. Inicia una sesión ftp. Obtiene un fichero del ordenador remoto. Proporciona las órdenes ftp disponibles o información relativa a la orden especificada. Cambia al directorio local de trabajo. Suele utilizarse para seleccionar los directorios a los que irán a parar los ficheros transferidos. Lista el contenido de un directorio remoto. Obtiene un grupo de ficheros que pueden haberse especificado utilizando algún comodín. Envía un grupo de ficheros que pueden haberse especificado utilizando algún comodín. Inicia una conexión ftp con el ordenador remoto especificado. Envía un fichero al ordenador remoto.

lcd ls mget mput open put

Una interfaz de línea de órdenes proporciona un acceso pleno a las facilidades de ftp, pero el riesgo de cometer errores es alto, ya que es fácil equivocarse al escribir la orden. Afortunadamente existen varias interfaces gráficas de usuario que eliminan la posibilidad de error a la que hacíamos mención anteriormente. Los grupos de noticias, noticias USENET, netnews o simplemente news, son foros de discusión en línea. Los artículos de noticias de USENET se clasifican en grupos de noticias por temas (ordenadores, aplicaciones, alpinismo, etc.). La World Wide Web, también conocida por WWW o simplemente Web, es uno de los logros más interesantes en Internet. La Web es un sistema hipermedia interactivo que permite conectarse a grandes cantidades de información en Internet. Un sistema hipermedia está compuesto por páginas que contienen texto cuidadosamente formateado, imágenes llenas de color, sonido, vídeo y enlaces a otras páginas distribuidas por todo el mundo. Puede acceder a esas otras páginas

APÉNDICE B: PÁGINAS WEB

1067

simplemente seleccionando uno de los enlaces. La información se recupera automáticamente sin necesidad de saber dónde está. El proyecto Web, que fue iniciado en el Centro Europeo de Investigación Nuclear (European Center for Nuclear Research), ha crecido a una velocidad impresionante. Esto se debe fundamentalmente a que soporta información de todo tipo: texto, sonido y gráficos. La forma de establecer una conexión es muy sencilla. Suponiendo que físicamente está conectado a Internet, inicie uno de los programas de los muchos que hay para navegar por este sistema de información, y automáticamente le mostrará una pantalla de información que le conducirá a muchas otras. Por ejemplo, si inicia la aplicación Microsoft Internet Explorer, se visualizará una ventana similar a la siguiente:

La ventana del explorador (también llamado navegador) tiene una barra de menús donde están todas las órdenes que puede utilizar y una barra de herramientas correspondientes a las órdenes más utilizadas para navegar por la Web. Los botones Atrás y Adelante le permiten moverse a través de las páginas que usted ya ha visitado. El botón Detener detiene una página que se está cargando actualmente, quizás porque usted ha cambiado de opinión una vez que ha visto parte de la página.

1068

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

El botón Actualizar vuelve a cargar la página que se esté visualizando en ese momento. A veces, esto es necesario debido a fallos en la red. El botón Inicio le permite volver a la página de inicio. Para cambiar su página de inicio, vaya a la página que desea que aparezca cuando arranque por primera vez el explorador, ejecute la orden Opciones de Internet del menú Herramientas, haga clic en la pestaña General y después en Usar actual. Cuando hace clic en el botón Búsqueda de la barra de herramientas, aparece el panel de búsqueda del navegador a la izquierda de la ventana. Este panel le proporciona acceso a diversos servicios de búsqueda que ofrecen diferentes clases de capacidades de búsqueda. Pruebe los distintos servicios de búsqueda para ver las clases de información que proporcionan. Si desea buscar información adicional rápidamente, puede escribir go, find o ? seguido de una palabra o una frase, en la barra de direcciones (espacio en el que puede escribir y mostrar la dirección de una página web). Internet Explorer iniciará inmediatamente una búsqueda mediante el servicio de búsqueda predeterminado. También puede utilizar buscadores como Google, por ejemplo. Una vez que esté en una página web, puede buscar un texto específico en dicha página. Para iniciar la búsqueda, haga clic en Buscar en esta página del menú Edición.

PÁGINAS WEB Anteriormente ha aprendido cómo acceder a la Web; si ya lo ha hecho, habrá visto muchas páginas con magníficos gráficos, listas, formularios y otros elementos muy atractivos. Pero, ¿cómo se puede crear una página web de estas características a la que otros usuarios puedan acceder? Hay muchas herramientas que le permitirán realizarlo. Para ello, antes debe conocer básicamente lo que es HTML (HyperText Markup Language - Lenguaje para hipertexto), el lenguaje utilizado para construir páginas web.

Qué es HTML HTML es un lenguaje utilizado para desarrollar páginas y documentos web. A diferencia de los lenguajes convencionales, HTML utiliza una serie de etiquetas especiales intercaladas en un documento de texto sin formato. Dichas etiquetas serán posteriormente interpretadas por los exploradores encargados de visualizar la página o el documento web con el fin de establecer el formato.

APÉNDICE B: PÁGINAS WEB

1069

Para editar una página HTML y posteriormente visualizarla, todo lo que necesita es un editor de texto sin formato y un explorador web. Para ver una página HTML no necesita una conexión a la red; cualquier explorador web debe permitirle hacerlo trabajando en local. No obstante, existen otras herramientas como FrontPage que facilitan la generación de páginas HTML. Posteriormente, las páginas deben ser colocadas en un servidor web para que otros usuarios puedan acceder a ellas.

Etiquetas básicas HTML Las etiquetas indican a los exploradores web cómo tienen que mostrar el texto y los gráficos. Normalmente se escriben entre los símbolos < y >, y suele haber una etiqueta de comienzo () y otra de fin () para enmarcar el texto que va a ser formateado por ellas. Muchas etiquetas incluyen distintos atributos que detallan la forma de mostrar el texto que aparece entre ellas. HTML no es sensible a las minúsculas y mayúsculas. Por ejemplo, la siguiente línea de código muestra cómo utilizar atributos y valores con la etiqueta font. La etiqueta de apertura incluye el atributo size (tamaño) al que se asigna el valor 10; después aparece el texto que se desea mostrar con el tamaño especificado, y a continuación la etiqueta de cierre. Usuario:

Todas las etiquetas de una página web se colocan dentro de la etiqueta html, la cual define dos secciones: head (cabecera) y body (cuerpo). La etiqueta head contiene etiquetas que afectan a la página web completa, por ejemplo title (título), y la etiqueta body contiene el resto de las etiquetas que definen el contenido de la página web. Según lo expuesto, el esqueleto de una página web puede ser el siguiente:

Título del documento

Cuerpo del documento: texto, imágenes, sonido y órdenes HTML

Guarde ahora estas líneas en un fichero de texto ASCII con el nombre esqueleto.html. A continuación, diríjase a la carpeta donde lo ha guardado y haga doble clic sobre el nombre del fichero. El resultado será el siguiente:

1070

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

Etiquetas de formato de texto Igual que en un documento Word, las páginas HTML pueden tener cabeceras. Las cabeceras son insertadas con la etiqueta hn; donde n es un valor de 1 a 6. El tamaño del texto es mayor cuanto mayor es el nivel (el nivel más alto es el 1). Los niveles no tienen por qué emplearse consecutivamente. Si desea insertar algún tipo de separador, por ejemplo, una raya horizontal, puede hacerlo con la etiqueta hr (horizontal rule - raya horizontal). Para introducir un párrafo, utilice la etiqueta p o nada. Un párrafo va precedido automáticamente por una línea en blanco. Los retornos de carro en el texto son ignorados; por lo tanto, cuando quiera introducir uno utilice la etiqueta br. El siguiente ejemplo clarifica lo expuesto hasta ahora (está localizado en el fichero Cap15\HTML\texto.html):

Título del documento

Ejemplo de un documento HTML

El cuerpo del documento puede contener: Texto, imágenes, sonido y órdenes HTML

HTML es un lenguaje utilizado para desarrollar páginas y documentos web.

A diferencia de los lenguajes convencionales, HTML utiliza una serie de etiquetas especiales intercaladas en un documento de texto sin formato.

APÉNDICE B: PÁGINAS WEB

1071


Dichas etiquetas serán posteriormente interpretadas por los exploradores encargados de visualizar la página o el documento web, con el fin de establecer el formato.



Observe la colocación de las etiquetas. A HTML no le importa que las etiquetas estén al final de la línea o en cualquier otra parte. También hay etiquetas que no requieren poner la etiqueta final; por ejemplo hr, p o br. Los exploradores web ignoran dónde terminan las líneas de texto. El texto se ajustará en todo momento al tamaño de la ventana. El resultado del código HTML anterior es el siguiente:

HTML también proporciona un número de etiquetas para dar formato a las palabras y a los caracteres. Por ejemplo, la etiqueta b indica negrita y la i itálica. La etiqueta code visualiza un texto monoespaciado. La etiqueta font permite especificar el nombre, el tamaño y el color del tipo de letra a utilizar. Por ejemplo:

Tipo de fuente Arial, tamaño 2; negrita y cursiva

1072

ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

La información también se puede organizar en listas empleando la etiqueta li. Por ejemplo, si en la página anterior introduce la siguiente modificación, obtendrá esta información en forma de lista en lugar de en línea.
  • Texto
  • Imágenes
  • Sonido
  • Órdenes HTML

    La lista puede numerarse utilizando la etiqueta ol. Por ejemplo, con la siguiente línea, la lista anterior se presentaría numerada.
  • Texto
  • Imágenes
  • Sonido
  • Órdenes HTML

    El resultado será (ejemplo localizado en el fichero Cap15\HTML\listas.html):

    URL A los recursos de la Web se accede por medio de una dirección descriptiva conocida como URL (Uniform Resource Locator - Localizador uniforme de recursos). Todo aquello a lo que se puede acceder en la Web tiene un URL. Los URL son básicamente una extensión de la ruta que define a un fichero (path). Un URL añade, además, un prefijo que identifica el método de recuperación de la información que ha de emplearse (http, ftp, gopher, telnet, news, etc.), así como un nombre de dominio o dirección IP que indica el servidor que almacena la información. Finalmente aparece la ruta de acceso al fichero. Por ejemplo: http://msdn.microsoft.com/library/spa/default.asp

    APÉNDICE B: PÁGINAS WEB

    1073

    Enlaces entre páginas Hemos dicho que la World Wide Web es un servicio de información basado en hipertexto. Se denomina hipertexto a la capacidad de asociar a una palabra o imagen de un documento un código oculto, de forma que cuando un usuario haga clic en esa palabra o imagen, el sistema lo transporta desde el lugar actual a otro lugar del mismo o de otro documento. Estos códigos especiales se denominan enlaces, focos, saltos o accesos directos. Para definir un enlace, se utiliza la etiqueta a (anchor o ancla). Esta etiqueta delimita el texto que se quiere utilizar para enlazar con otra página. Este texto aparecerá subrayado para el usuario. Para indicar al explorador la página que tiene que recuperar cuando el usuario haga clic en un enlace, incluya en la etiqueta de apertura a el atributo href y escriba a continuación el URL de la página que se quiere recuperar. También, en documentos largos, se puede utilizar el atributo name para asignar un nombre a un enlace y después utilizar href en otro lugar dentro de la misma página para saltar a ese enlace. Por ejemplo, el siguiente código implementa estas dos facilidades (ejemplo localizado en Cap15/HTML/enlaces.html):

    Título del documento

    Ejemplo de un documento HTML

    El cuerpo del documento puede contener:

  • Texto
  • Imágenes
  • Sonido
  • Órdenes HTML

    HTML es un lenguaje utilizado para desarrollar páginas y documentos web.

    A diferencia de los lenguajes convencionales, HTML utiliza una serie de etiquetas ASCII especiales intercaladas en un documento escrito en ASCII.
    Dichas etiquetas serán posteriormente interpretadas por los exploradores encargados de visualizar la página o el documento web, con el fin de establecer el formato.



    1074

    ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

    Para editar una página HTML y posteriormente visualizarla, todo lo que necesita es un editor de texto ASCII y un explorador web.

    Haga clic aquí para ir a la página de inicio

    El resultado puede verlo en la figura siguiente:

    Gráficos Una forma de insertar imágenes en un documento HTML es utilizando la etiqueta img y sus atributos src, que permite especificar el nombre del fichero que contiene la imagen (habitualmente .gif o .jpeg), y align, que permite indicar cómo el explorador debe alinear la imagen con cualquier texto que esté cerca de ella (top, middle o bottom). Cuando diseñe una página web, piense que puede haber exploradores que no soportan gráficos. Para contemplar esta posibilidad, utilizaremos el atributo alt que permite especificar un texto en el lugar de la imagen cuando el explorador no pueda mostrarla. Por ejemplo:

    ...

    El profesor Ceballos resolviendo dudas a sus alumnos.

    Haga clic

    APÉNDICE B: PÁGINAS WEB

    1075

    aquí para ir a la página de inicio

    La etiqueta center centra la imagen y el título de la imagen. También desde un documento puede saltar a otro. Por ejemplo: Haga clic aquí para ir a la biografía de Ceballos.

    El ejemplo anterior indica que cuando el usuario haga clic en la palabra “aquí”, se cargará un nuevo documento HTML guardado como ceballos.html. Igual que utilizamos una palabra para enlazar con otro lugar, podemos utilizar una imagen; esto es, un clic sobre una imagen gráfica le puede conducir a otro lugar. Por ejemplo:



    El código anterior realizará un salto a la página enlaces.html cuando el usuario haga clic sobre la imagen ceballos.jpg. Cuando ejecute este código, observe que al pasar el ratón por encima de la imagen, el cursor se transforma en una mano y aparece una etiqueta que visualiza “Foto del profesor Ceballos”.

    Marcos Las páginas HTML que hemos escrito en los apartados anteriores ocupan toda la ventana del explorador. Sin embargo, utilizando marcos es posible visualizar múltiples documentos en una misma página. Una forma de insertar un marco flotante en una página es utilizando la etiqueta iframe con los atributos src, width y height. El atributo src especifica el URL del documento que se quiere visualizar, y width y height indican la anchura y la altura del marco. Por ejemplo:

    El autor:


    1076

    ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

    El código anterior crea un marco para visualizar el documento ceballos.html. Al atributo src se le puede asignar también una dirección URL de cualquier página de cualquier servidor. Esto es,

    La figura siguiente muestra un marco dentro de una página. El código puede verlo en el fichero marco.html de la carpeta Cap15\HTML del material adicional.

    Formularios Los formularios permiten crear interfaces gráficas de usuario en el seno de una página web. Los componentes de estas interfaces, denominados también controles, serán cajas de texto, cajas para clave de acceso, botones de pulsación, botones de opción, casillas de verificación, menús, tablas, listas desplegables, etc. Para crear un formulario, se utiliza la etiqueta form. Por ejemplo, el segmento de código siguiente muestra cómo es el esqueleto de un formulario HTML:

    Controles que forman el formulario

    APÉNDICE B: PÁGINAS WEB

    1077

    El atributo method es opcional y su valor por omisión es get indicando así al navegador que debe agregar los nombres de los campos del formulario y sus datos al URL especificado por action (acción a tomar cuando se pulse el botón enviar). La cantidad de datos que se puede concatenar al URL está limitada, truncándose la información en exceso. Esto no ocurre si el valor para este atributo es post; en este caso, se transmite un fichero con los datos del formulario que será recibido en el servidor en la entrada estándar del componente de procesamiento. Los controles que forman parte del formulario se definen dentro de la etiqueta form. En los siguientes apartados se indica cómo crear cada uno de estos controles. En general, por cada control se envía al servidor su nombre y su contenido o valor especificado (si no se especifica un valor, se envía uno por omisión).

    Entrada básica de datos Existe una amplia variedad de controles de entrada de datos. Para crearlos, se utiliza la etiqueta input y los atributos type y name:

    El valor del atributo type especifica el tipo de control que se creará, y el del atributo name el nombre de la variable que almacenará el dato. Caja de texto Una caja de texto es un control de entrada de tipo text. Se utiliza para solicitar a un usuario que introduzca un dato. Por ejemplo, la siguiente línea de código muestra una caja de texto para solicitar un nombre. El tamaño de la caja es 35 y el valor será almacenado en la variable nombre: Nombre:

    El valor del atributo size especifica el tamaño de la caja. Otros atributos que se pueden utilizar son value para especificar un valor inicial, readonly (que no lleva asociado ningún valor) para indicar que la caja es de sólo lectura y maxlength para especificar el número máximo de caracteres que un usuario puede escribir.

    1078

    ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

    Caja de clave de acceso Una caja de clave de acceso es un control de entrada de tipo password. Se trata de una caja de texto en la que los caracteres escritos son reemplazados por asteriscos. Por ejemplo, la siguiente línea de código muestra una caja de texto para solicitar una clave de acceso. El tamaño de caja es 25, el valor será almacenado en la variable clave y el número máximo de caracteres que admite es 20: Clave de acceso:

    Casilla de verificación Una casilla de verificación es un control de entrada de tipo checkbox. Se trata de un botón que puede presentar dos estados: seleccionado y no seleccionado. Se utilizan para mostrar y registrar opciones que un usuario puede elegir; puede seleccionar varias de un grupo de ellas. Por ejemplo, las siguientes líneas de código muestran tres casillas de verificación. La primera se mostrará seleccionada: Opción 1
    Opción 2
    Opción 3


    Se debe especificar el atributo name (como caso especial, se puede especificar el mismo nombre para todas). El atributo checked permite iniciar el estado de una casilla a seleccionado. Dicho estado, on u off, es almacenado por el atributo name. Cuando se envíen los datos del formulario, se enviarán el nombre de la variable y el valor que indique su estado. También será enviado el valor indicado por value o nulo si no se especificó. Botón de opción Un botón de opción es un control de entrada de tipo radio. Igual que ocurre con la casilla de verificación, puede presentar dos estados: seleccionado y no seleccionado. Se utilizan para mostrar y registrar una opción que un usuario puede elegir entre varias; cuando selecciona una, la que estaba seleccionada dejará de estarlo. Por ejemplo, las siguientes líneas de código muestran tres botones de opción. El segundo se mostrará seleccionado: Opción 1
    Opción 2
    Opción 3


    Para el comportamiento descrito, todos los botones de opción tendrán el mismo atributo name y con un valor distinto del atributo value. El valor enviado será

    APÉNDICE B: PÁGINAS WEB

    1079

    el correspondiente al botón seleccionado. El atributo checked permitirá seleccionar por omisión uno de los botones de un grupo. Parámetros ocultos Un parámetro oculto es un control de entrada de tipo hidden. En este caso no se muestra ningún campo de entrada de datos al usuario, pero el par variable valor especificado es enviado junto con el formulario.

    Se suelen utilizar para mantener datos durante una sesión. Enviar datos Un botón enviar es un control de entrada de tipo submit. Se utiliza para enviar los datos del formulario, pasando el control al programa indicado por el atributo action del formulario. Todo formulario debe tener un botón submit, a menos que incluya una caja de texto.

    El atributo value especifica una etiqueta no editable que se mostrará como título del botón. Lo normal es que este control no envíe datos, pero si se incluye el atributo name con un nombre de variable, será enviada la variable con el valor de value. Esto puede ser útil para distinguir cuál fue el botón pulsado cuando se incluyan varios.

    Borrar los datos de un formulario Un botón borrar es un control de entrada de tipo reset. Se utiliza para restablecer los valores iniciales de los controles del formulario.

    Imágenes Una imagen es un control de entrada de tipo image. Su finalidad es análoga al botón submit, pero en este caso se presenta una imagen en lugar de un botón. Los datos del formulario se enviarán al hacer clic sobre la imagen .jpg o .gif.

    1080

    ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

    Orden de tabulación Para trasladarse de un control a otro del formulario, el usuario puede utilizar la tecla tab. En este caso, el orden en el que los controles serán recorridos queda determinado por su orden de aparición en el formulario, o bien por el atributo tabindex. Por ejemplo:

    El valor de tabindex es un número (1, 2, 3...) que corresponde al orden en el que se seleccionará un control cuando el usuario pulse la tecla tab. El control que se seleccionará en primer lugar es el 1.

    Caja de texto multilínea En ocasiones es necesario permitir al usuario escribir varias líneas de texto libre; por ejemplo, un mensaje. Para esto se utiliza un control denominado área de texto (textarea) que incluye una barra de desplazamiento vertical: Mensaje:


    El valor del atributo rows especifica el número de filas que visualizará el área de texto a la vez y cols el número de caracteres por fila. El atributo wrap, que no lleva asociado ningún valor, indica que se saltará automáticamente a la línea siguiente cuando se complete la línea en la que se escribe.

    Listas desplegables Una lista desplegable permite seleccionar una opción entre varias. Es la mejor alternativa para añadir menús a una interfaz gráfica. La etiqueta que permite crear un control de este tipo es select. Las opciones de la lista se especifican utilizando la etiqueta option. Por ejemplo, el siguiente código mostrará una lista desplegable con tres opciones, de las cuales aparecerá seleccionada inicialmente la segunda:

    Opción 1 Opción 2 Opción 3

    APÉNDICE B: PÁGINAS WEB

    1081

    El atributo value de option indica el valor asociado con la opción especificada; si se omite este atributo, el valor que se toma es el texto especificado para la opción. La etiqueta option que contenga el atributo selected será considerada la opción por omisión; en caso de que no se especifique ninguna se considerará la primera de las opciones. Se puede también especificar el atributo size para indicar el número de opciones que la lista visualizará a la vez. Para permitir realizar selecciones múltiples utilizando las teclas Ctrl o Alt, hay que añadir el atributo multiple; en este caso se mostrará una lista desplegada. Por ejemplo:

    Opción 1 Opción 2 Opción 3

    Utilizando la etiqueta optgroup, se pueden agrupar las opciones (como si de un submenú se tratara); cada grupo será identificado con una etiqueta especificada por el atributo label. Por ejemplo:

    Opción Opción Opción

    Opción Opción

    1 2 3

    4 5

    Aplicando la teoría expuesta hasta ahora, vamos a diseñar un formulario, como el que muestra la figura siguiente, que permita a un alumno concertar una tutoría con su profesor.

    1082

    ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

    El código HTML que da lugar a este formulario puede ser el siguiente (la expresión   indica un espacio en blanco). El código puede obtenerlo del fichero Cap15\HTML\tutorias.html del material adicional.

    Concertar una tutoría

    CONCERTAR UNA TUTORÍA

    Alumno:


    Con el profesor:


    Día:


    lunes miércoles jueves



    Hora:    10    12    16    18

    APÉNDICE B: PÁGINAS WEB

    1083



    Asunto:


      



    Tablas Para crear una tabla, se utilizan las etiquetas table, tr, th y td. La etiqueta table define el cuerpo de la tabla; tr define una fila de la tabla; th define una celda de cabecera y td define una celda de datos. Por ejemplo:

    Nombre Nota
    Javier Ceballos Fernández 10.00
    Elena Ortiz Fuentes 7.50


    El atributo border de table permite añadir un borde a la tabla de ancho igual al valor especificado en píxeles. Los atributos width y align de td (o de th) permiten definir, respectivamente, el ancho de la celda y el tipo de ajuste del dato en la celda. Otras operaciones que se pueden hacer a la hora de diseñar una tabla son: 

    Extender una celda en múltiples columnas: cabecera 1



    Extender una celda en múltiples filas: cabecera 1



    Modificar el ancho y el alto de la tabla en valor absoluto o respecto al tamaño de la ventana del navegador:

    1084 

    ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

    Modificar el tamaño de una celda:




    Alinear el contenido de una celda:




    Modificar el color de fondo de una celda:




    Modificar el espacio y el margen de las celdas:



    Controlar los saltos de línea en una celda:


    HOJAS DE ESTILO Es evidente que el lenguaje HTML está limitado a la hora de organizar la presentación de los elementos de una página web. Pues bien, para cubrir esta deficiencia surgen las hojas de estilo (Cascade Style Sheets - CSS). Éstas no sólo permiten organizar la presentación de una página, sino que además, intentan separar el contenido de la forma de presentarlo. Por ejemplo, para introducir un nuevo párrafo en una página web, utilizamos la etiqueta

    . Pues bien, con las hojas de estilo también podremos indicar que su texto sea azul, que tenga un margen izquierdo de 20 píxeles y que tenga un borde de ancho 2. Esto se codificaría de la forma siguiente:

    En este ejemplo se puede observar que la declaración de los atributos que definen un determinado elemento de la página queda limitada por la etiqueta style. Esta etiqueta sólo puede utilizarse en la cabecera de la página, o bien dentro de la etiqueta de cabecera del elemento, y su parámetro type indica la sintaxis utilizada para definir esos atributos. En el caso de las hojas de estilo en cascada, el tipo deberá ser “text/css”. También observamos que los atributos se especifican a continuación del elemento HTML que se quiere personalizar, encerrados entre llaves. En el ejemplo, son cuatro: el color (en el formato habitual), el margen izquierdo en píxeles y el tipo y el ancho del borde. Tenga presente que CSS es sensible a las mayúsculas y minúsculas. Puede ver un resumen de los atributos CSS en la carpeta docs del material adicional que acompaña al libro.

    APÉNDICE B: PÁGINAS WEB

    1085

    El siguiente ejemplo muestra una página HTML con estilo:

    Título del documento

    Ejemplo de un documento HTML

    El cuerpo del documento puede contener: Texto, imágenes, sonido y órdenes HTML

    HTML es un lenguaje utilizado para desarrollar páginas y documentos web.

    A diferencia de los lenguajes convencionales, HTML utiliza una serie de etiquetas especiales intercaladas en un documento de texto sin formato.
    Dichas etiquetas serán posteriormente interpretadas por los exploradores encargados de visualizar la página o el documento web, con el fin de establecer el formato.



    Cuando se muestre la página anterior, los dos párrafos,

    , serán visualizados con los atributos definidos. Ahora bien, en este ejemplo, el contenido no está separado de la forma de presentarlo. Para separarlo, podemos colocar la hoja de estilo en un fichero (sólo los estilos, sin style), por ejemplo, en estilo.css: /* estilo.css */ p {color: blue; margin-left: 20; border: solid; border-width: 2}

    Una vez definida una hoja de estilos, podemos incorporarla a una página HTML utilizando la etiqueta link que tiene la siguiente sintaxis:

    Según lo explicado, el ejemplo anterior quedaría como se indica a continuación. Observe que la etiqueta link está incluida dentro de la cabecera:

    1086

    ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

    Título del documento

    ...

    Clases Cuando se muestre la página anterior, todos sus párrafos,

    , serán visualizados con los atributos definidos. Pero supongamos que sólo queremos personalizar algunos de ellos. ¿Cómo lo hacemos? Pues, definiendo distintas clases, en nuestro caso, distintas clases de párrafos, para lo cual utilizaremos el atributo class. Por ejemplo, la siguiente hoja de estilos permite personalizar un párrafo de dos formas, las cuales difieren en el color: azul con borde y ajustado a la izquierda, o bien verde sin borde y centrado: /* estilo.css */ p.azul {color: blue; margin-left: 20; border: solid; border-width: 2} p.verde {color: green; margin-left: 20; text-align: center}

    Este código define dos clases de párrafos: el párrafo azul (p.azul) y el verde (p.verde). Cuando apliquemos estos estilos a una página, los párrafos definidos con la cabecera

    serán azules y los definidos como

    serán verdes. Por ejemplo:

    Título del documento

    Ejemplo de un documento HTML

    El cuerpo del documento puede contener: Texto, imágenes, sonido y órdenes HTML

    HTML es un lenguaje utilizado para desarrollar páginas y documentos web.

    A diferencia de los lenguajes convencionales, HTML utiliza una serie de etiquetas especiales intercaladas en un documento de texto sin formato.


    APÉNDICE B: PÁGINAS WEB

    1087

    Dichas etiquetas serán posteriormente interpretadas por los exploradores encargados de visualizar la página o el documento web, con el fin de establecer el formato.



    Otro caso puede ser que queramos que la mayoría de todos los párrafos sean azules y unos pocos verdes, pero con el resto de las características iguales. En este caso, también podríamos definir dos clases distintas, pero hay una forma mejor: usar el parámetro id. Por ejemplo: /* estilo.css */ p {color: blue; margin-left: 20; border: solid; border-width: 2} #verde {color: green}

    Cuando apliquemos estos estilos a una página, los párrafos definidos con la cabecera

    serán azules y los definidos como

    serán verdes. Los exploradores agregan también varias clases, conocidas como pseudoclases, que definen varios usos para un mismo elemento. Por ejemplo, podemos aplicar estilo a los enlaces para que muestren colores diferentes en función de que aún no hayan sido visitados o sí lo hayan sido. Para ello, CSS define las pseudoclases:   

    Enlaces normales: Enlaces visitados: Enlaces activos:

    a:link {atributos} a:visited {atributos} a:active {atributos}

    Por ejemplo, el siguiente código utiliza las pseudoclases link y visited con el elemento para definir el color azul para el enlace normal y el color magenta para el enlace visitado. Observe la sintaxis; al contrario que con las clases reales, ahora se utilizan dos puntos (:). a:link {color: blue} a:visited {color: magenta}

    Etiquetas y Puede que, a veces, no queramos modificar el comportamiento de un elemento, sino aplicar un estilo completo a una determinada sección de una página. Esto podremos hacerlo utilizando las etiquetas y .

    1088

    ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

    Para definir estilos en secciones reducidas de una página se utiliza la etiqueta span. Admite los atributos style, id y class. Lo vemos con un ejemplo. El siguiente párrafo visualizará determinadas palabras en color azul y en cursiva:

    A diferencia de los lenguajes convencionales, HTML utiliza una serie de etiquetas especiales intercaladas en un documento de texto sin formato.



    La etiqueta div es similar a span, con la diferencia de que div define un elemento a nivel de bloque; esto es, una sección de una página que, a su vez, puede contener cabeceras, párrafos, tablas, e incluso otras divisiones, lo que hace a esta etiqueta ideal para definir distintas secciones en un documento (capítulo, resumen, notas, etc.). Por ejemplo:

    Divisiones

    El elemento div permite utilizar los atributos align, class, style, id y otros muchos.

    Definir un bloque, es útil para construir diferentes secciones en un documento.

    Es necesario especificar la etiqueta de cierre



    La etiqueta div es ideal también para definir capas, entendiendo por capa una sección de un documento para la que se ha definido un comportamiento independiente. Algunos atributos típicos utilizables con capas son: position, posición absoluta en la página, left y top, distancia desde los bordes izquierdo y superior de la página, width y height, anchura y altura de la capa, z-index, para indicar qué capas se ven encima de qué otras, clip, para recortar una capa y hacer que no sean visibles partes de ella, o visibility, para indicar si la capa se puede ver en la página o permanece oculta al usuario. A continuación mostramos un ejemplo sencillo: poner un título con el efecto de sombra. Este ejemplo se ha construido en base a dos bloques con el mismo contenido: uno para visualizar el título en color azul y otro para visualizar la sombra en color negro (se trata del mismo título, pero desplazado un píxel respecto del anterior).

    APÉNDICE B: PÁGINAS WEB

    1089

    El fichero de estilos que vamos a utilizar incluye dos clases, título y sombra. Obsérvese que delante del nombre de la clase ponemos solamente un punto, ya que en este caso no se trata de una clase definida para un determinado elemento: /* estilos.css */ .titulo {color: blue; position:absolute; margin-left: 20; margin-top: 20; font-size: 32; font-weight: bolder} .sombra {color: black; position:absolute; margin-left: 21; margin-top: 21; font-size: 32; font-weight: bolder}

    Y una página ejemplo que utilice este fichero de estilos puede ser la siguiente:

    Capas



    TÍTULO DE LA PÁGINA

    TÍTULO DE LA PÁGINA



    XML XML (Extensible Markup Language - lenguaje extensible para análisis de documentos) está convirtiéndose rápidamente en el estándar para el intercambio de datos en la Web. Como en el caso de HTML, los datos se identifican utilizando etiquetas, y a diferencia de HTML las etiquetas indican lo que los datos significan en lugar de cómo visualizar los datos. Por ejemplo, la fecha de nacimiento de una persona se puede colocar en un párrafo HTML así:

    01/01/2004



    Sin embargo, la etiqueta de párrafo no describe que el dato es la fecha de nacimiento. Simplemente indica al navegador que el texto que aparece entre las etiquetas se debe mostrar en un párrafo. En cambio, el dato sí queda descrito en una línea como la siguiente: 01/01/2004

    1090

    ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

    El lenguaje XML es un lenguaje que se utiliza para crear otros lenguajes que definen los componentes de un documento. Por ejemplo, podríamos utilizar XML para describir una persona: fecha de nacimiento, sexo, color, altura, peso, etc. La creación de un documento XML tiene dos partes: crear un esquema XML y crear el documento utilizando los elementos definidos en el esquema. El esquema se puede considerar como un diccionario que define las etiquetas que se utilizan para describir los elementos de un documento. Estas etiquetas son similares a las etiquetas HTML, pero con la diferencia de que quien crea el esquema crea los nombres y los atributos de las etiquetas. Por ejemplo: Profesor Ceballos

    La realidad es que un navegador no puede leer y mostrar un documento XML. Pero sí puede convertir un documento XML en un documento HTML mediante una hoja de estilos XSTL (Extensible Stylesheet Language Transformation). Una hoja de estilos se compone de una o más definiciones de plantillas que procesa un procesador XSLT cuando la etiqueta de la plantilla corresponde a un componente del documento XML.

    XHTML XHTML (Extensible HyperText Markup Language - lenguaje mejorado para la escritura de páginas web) es la siguiente generación de HTML que incorpora muchas de las características de XML. Utiliza prácticamente todos los elementos de HTML, pero impone nuevas reglas; por ejemplo, es sensible a mayúsculas y minúsculas, toda etiqueta de apertura tiene que tener una etiqueta de cierre, etc.

    PÁGINAS WEB DINÁMICAS El lenguaje HTML que hemos visto en los apartados anteriores es suficiente para visualizar documentos, imágenes, sonidos y otros elementos multimedia; pero el resultado es siempre una página estática. Entonces, ¿qué podemos hacer para construir una página dinámica?, entendiendo por página dinámica una página que actualiza su contenido mientras se visualiza. Haciendo un poco de historia, una de las primeras formas que se encontraron para dar dinamismo a las páginas HTML fue la CGI (Common Gateway Interface). Esta interfaz permite escribir pequeños programas que se ejecutan en el servidor para aportar un contenido dinámico. El resultado es un código HTML, que se

    APÉNDICE B: PÁGINAS WEB

    1091

    incluye en la página web justo antes de ser enviada al cliente. Pese a que la CGI es fácil de utilizar, en general, no es un buen sistema porque cada vez que un cliente solicita una página con algún programa basado en esa interfaz, el programa tiene que ser cargado en memoria para ser ejecutado, lo que ocasiona un tiempo de espera elevado. Además, si el número de usuarios es elevado, los requerimientos de memoria también serán elevados, ya que todos los procesos se deben poder cargar en memoria y ejecutar. Una alternativa a la CGI fue ISAPI (Internet Server Application Programming Interface). Esta API proporciona la funcionalidad necesaria para construir una aplicación servidora de Internet. A diferencia de CGI que trabaja sobre ejecutables, ISAPI trabaja sobre DLL. Esta diferencia hace que ISAPI sea un sistema más rápido, ya que por tratarse de una biblioteca dinámica sólo será cargada una vez y podrá ser compartida por múltiples procesos, lo que supone pocos requerimientos de memoria. Posteriormente, las técnicas anteriores fueron sustituidas por la incorporación de secuencias de órdenes (scripts) ejecutadas directamente en el interior de la página HTML. Esto es, en lugar de consultar al servidor acerca de un ejecutable, el explorador puede ahora procesar las secuencias de órdenes a medida que carga la página HTML. El tratamiento de estas secuencias de órdenes puede hacerse tanto en el servidor web como en el cliente. Los lenguajes más comunes para la escritura de secuencias de órdenes son JavaScript y VBScript. Apoyándose en la técnica anterior y en un intento de potenciar la inclusión de contenido dinámico en páginas web, Microsoft lanza una nueva tecnología, las páginas ASP (Active Server Page - Página activa del servidor o activada en el servidor). Una página ASP, dicho de una forma sencilla, es un fichero .asp que puede contener: texto, código HTML, secuencias de órdenes y componentes ActiveX. Con tal combinación se pueden conseguir de una forma muy sencilla páginas dinámicas y aplicaciones para la Web muy potentes. Un inconveniente de esta tecnología es que su propietaria es Microsoft y solamente está disponible para el servidor IIS (Internet Information Server) que se ejecuta sobre plataformas Windows. También es cierto que hay herramientas que permiten utilizar ASP sobre un servidor Apache en plataformas Unix, pero, hoy por hoy, los componentes ActiveX no están disponibles para plataformas que no sean Microsoft Windows. Cuando un cliente solicita una ASP, el servidor la intenta localizar dentro del directorio solicitado, igual que sucede con las páginas HTML. Si la encuentra, ejecutará las rutinas VBScript o JScript que contenga. Cuando el servidor ejecuta estas rutinas, genera un resultado consistente en código HTML estándar que sustituirá a las rutinas VBScript o JScript correspondientes de la página ASP. Una vez procesada la página, el servidor envía al cliente el contenido de la misma en HTML estándar, siendo así accesible desde cualquier navegador.

    1092

    ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

    También, cuando Sun Microsystems presentó Java, uno de los aspectos que más llamó la atención fueron los applets: pequeños programas interactivos que son ejecutados por un navegador. Esto supuso una alternativa más para crear páginas web dinámicas, ya que esta tecnología permite vincular código estándar Java con las páginas HTML que luego utilizaremos como interfaz de usuario, dotándolas de contenido dinámico e interactivo. Posteriormente, Sun Microsystems introdujo los servlets. Mientras que los applets incorporaron funcionalidad interactiva a los navegadores, los servlets la incorporaron a los servidores. Los servlets es la alternativa de Sun Microsystems para sustituir a la programación CGI. Si comparamos la tecnología ASP o los servlets con la CGI o con la ISAPI, llegaremos a la conclusión de que es bastante más sencilla y más potente. Actualmente, la tecnología ASP ha sido sustituida por ASP.NET, que es parte integrante de Microsoft .NET Framework. ASP.NET es algo más que una nueva versión de ASP; es una plataforma de programación web unificada que proporciona todo lo necesario para que podamos crear aplicaciones web. Al crear una aplicación web, podemos elegir entre formularios web y servicios web XML, o bien combinarlas. Todo esto lo estudiaremos en los próximos capítulos. Los formularios web permiten crear páginas web basadas en formularios. Por lo tanto, este tipo de aplicaciones son una alternativa más para crear páginas web dinámicas. Los servicios web XML proporcionan acceso al servidor de manera remota, permitiendo el intercambio de datos en escenarios cliente-servidor utilizando estándares como HTTP y XML. Las aplicaciones web se ejecutan en un servidor web configurado con los servicios de Internet Information Server (IIS). Sin embargo, para probar una aplicación web, no es necesario trabajar directamente con IIS, sino que se puede hacer a través del servidor web integrado en Visual Studio. No obstante, si para probar sus aplicaciones prefiere utilizar IIS, asegúrese de que lo tiene instalado. Para ello, abra el panel de control, seleccione “agregar o quitar programas”, haga clic en “agregar o quitar componentes Windows” y si no tiene instalado el componente Servicios de Internet Information Server, instálelo. IIS debe instalarse antes de Microsoft .NET Framework SDK.

    APÉNDICE C

     F.J.Ceballos/RA-MA

    INTERNACIONALIZACIÓN Si pensamos distribuir nuestra aplicación a un público internacional, deberemos tener en cuenta una serie de puntos durante las fases de diseño y desarrollo. Los servicios integrados en .NET Framework facilitan el desarrollo de aplicaciones que se adaptan a distintas configuraciones de idioma. Preparar una aplicación para su uso mundial tiene dos partes: diseñar la aplicación para que pueda adaptarse a distintas referencias culturales (globalización) y traducir los recursos para una referencia cultural específica (localización).

    GLOBALIZACIÓN La globalización es el proceso de diseño y desarrollo de una aplicación que permite el uso de interfaces de usuario en distintos idiomas. El espacio de nombres System.Globalization contiene clases que definen información relativa a la referencia cultural, incluido el idioma, el país o región, los calendarios utilizados, los modelos de formato de fecha, moneda y números, y el criterio de ordenación de las cadenas. Concretamente, la clase CultureInfo representa una referencia cultural específica.

    LOCALIZACIÓN Los recursos de la aplicación que requieren una localización tienen que ser independientes del resto del código de la aplicación. Para ello, el código ejecutable se ubicará en el ensamblado principal de la aplicación, mientras que en los ficheros de recursos sólo se ubicarán los recursos: cadenas, mensajes de error, cuadros de

    1094

    ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

    diálogo, menús o recursos de objetos incrustados, entre otros. Finalmente, se traduce la interfaz de usuario a los idiomas de destino. .NET Framework SDK proporciona la herramienta winres.exe (editor de recursos de formularios Windows), que permite localizar rápidamente formularios Windows para las referencias culturales de destino.

    CLASE CultureInfo La clase CultureInfo especifica un nombre único para cada referencia cultural como una combinación de un código de referencia cultural (dos letras en minúsculas asociado con un idioma), y un código de referencia cultural secundaria (dos letras en mayúsculas asociado con un país o región) separados por un guión (-). Por ejemplo, “en-US” para el inglés de EEUU y “es-ES” para el español de España. Por ejemplo, el siguiente código muestra todas las referencias culturales por medio del método GetCultures de CultureInfo: Imports System Imports System.Globalization Public Class CInfoCultura Public Shared Sub Main() Dim info As CultureInfo For Each info In CultureInfo.GetCultures(CultureTypes.AllCultures) ' Mostrar todas las referencias culturales Console.WriteLine("{0,-12} {1}", info, info.DisplayName) Next info End Sub End Class

    Siguiendo con el ejemplo anterior, vamos a añadir a la clase CInfoCultura un método Cultura que muestre información de una cultura específica. Public Shared Sub Cultura(ByVal sInfo As String) Dim info As CultureInfo = New CultureInfo(sInfo) Console.WriteLine("{0,-12} {1}", info, info.DisplayName) Console.WriteLine("Formato de fecha: {0}", _ DateTime.Now.ToString(info.DateTimeFormat.ShortDatePattern)) Console.WriteLine("Separador de decimales: {0}", _ info.NumberFormat.CurrencyDecimalSeparator) Console.WriteLine() End Sub

    Para invocar al método anterior, añada al método Main sentencias análogas a las siguientes:

    APÉNDICE C: INTERNACIONALIZACIÓN

    1095

    Cultura("en-US") Cultura("es-ES")

    Propiedad CurrentUICulture La propiedad CurrentUICulture de CultureInfo devuelve la referencia cultural de la interfaz de usuario actual. Por ejemplo: Public Shared Sub CulturaActual() Dim info As CultureInfo = Nothing info = CultureInfo.CurrentUICulture Console.Write("Cultura actual: ") Console.WriteLine("{0, -12} {1}", info, info.DisplayName) End Sub

    También puede utilizar la propiedad CurrentUICulture de Thread.CurrentThread. Por ejemplo: info = System.Threading.Thread.CurrentThread.CurrentUICulture

    La clase ResourceManager utiliza esta propiedad para buscar recursos específicos de la referencia cultural durante la ejecución. Para configurar la propiedad CurrentUICulture, se puede utilizar una referencia cultural neutra (por ejemplo, “en”) o específica (por ejemplo, “en-US”), o la propiedad InvariantCulture. Por ejemplo, la siguiente línea establece la referencia cultural neutra “en” (inglés). Las referencias culturales neutras se asocian a idiomas pero no a regiones. Thread.CurrentThread.CurrentUICulture = New CultureInfo("en")

    Y esta otra línea establece la referencia cultural específica “en-US” (inglés de Estados Unidos): Thread.CurrentThread.CurrentUICulture = New CultureInfo("en-US")

    Propiedad CurrentCulture La propiedad CurrentCulture de CultureInfo no es una configuración de idioma, sino que determina los formatos predeterminados para la fecha, hora, moneda y números, el criterio de ordenación de texto, las comparaciones de cadenas y la distinción entre mayúsculas y minúsculas. Sólo se puede establecer para una refe-

    1096

    ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

    rencia cultural específica o para InvariantCulture. Para establecer el valor de esta propiedad puede utilizar la propiedad Thread.CurrentThread. Por ejemplo: Thread.CurrentThread.CurrentCulture = New CultureInfo("en-US")

    Propiedad InvariantCulture La propiedad InvariantCulture de CultureInfo no es una referencia cultural neutra ni específica. Es un tercer tipo que no tiene en cuenta la referencia cultural. Se encuentra asociada al idioma inglés pero a ningún país o región. Se puede utilizar InvariantCulture en cualquier método que requiera una referencia cultural. No obstante, deberá utilizarla únicamente para los procesos que requieran resultados independientes de la referencia cultural.

    APLICACIÓN EJEMPLO Vamos a realizar un ejemplo sencillo que nos enseñe a internacionalizar una aplicación. Como podremos comprobar, será el propio Visual Studio el que se encargue de adaptar cada elemento de la interfaz a cada idioma. Nuestra aplicación utilizará como idioma predeterminado el español y, además, el idioma inglés. La interfaz gráfica de la misma constará de dos formularios: el formulario principal y el formulario “Acerca de”. El formulario principal incluirá una barra de menús, con los menús “Archivo”, “Opciones” y “Ayuda”, una caja de texto, un botón y una barra de estado. El menú “Archivo” incluirá una orden “Salir”, “Opciones” contendrá un submenú “Idioma” con las órdenes “Español” e “Inglés”, y el menú “Ayuda” la orden “Acerca de...”.

    Generar ficheros de recursos automáticamente Para empezar crearemos una nueva aplicación Windows. Se mostrará el formulario Form1. A continuación, asignamos a la propiedad Localizable de Form1 el valor True. De esta forma, todas las propiedades persistirán en el fichero de recursos, con la ventaja de que este fichero se puede traducir sin modificar el código. La propiedad Language asume un valor que hace referencia al lenguaje predeterminado (Default), en nuestro caso al español. Por lo tanto, en principio, no modificaremos el valor de esta propiedad.

    APÉNDICE C: INTERNACIONALIZACIÓN

    1097

    Añadimos al formulario todos los recursos enumerados anteriormente. Estos recursos se almacenarán en el fichero Form1.resx.

    Para realizar el diseño en otro idioma, asignamos a la propiedad Language dicho idioma; en nuestro caso, le asignamos el valor English. El diseñador mostrará en la pestaña “Form1.vb[Diseñar – Inglés]”. A continuación, modificaremos todos los elementos que deben mostrar su contenido en inglés (menús, aceleradores, botones, etc.). Obsérvese que podemos cambiar el valor, no sólo de la propiedad Text, sino de otras muchas propiedades (ShortcutKeys, Size, Location, etc.).

    Cuando finalicemos este proceso, podremos observar en el explorador de soluciones que se ha añadido un nuevo fichero de recursos, Form1.en.resx, que contiene los recursos en inglés.

    1098

    ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

    En este instante (propiedad Language con valor English) estamos visualizando el formulario en la versión inglés. Si cambiamos el valor de la propiedad Language a “Predeterminado - Default”, volveremos a la versión en español. Una vez finalizado el diseño del formulario principal en sus distintos idiomas, haremos lo mismo con el resto de los formularios de la aplicación; en nuestro caso, con el formulario “Acerca de”:

    Los controladores para las órdenes “Salir” y “Acerca de” serán los siguientes: Private Sub ArchivoSalir_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles ArchivoSalir.Click Close() End Sub Private Sub AyudaAcercaDe_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles AyudaAcercaDe.Click Dim dlg As AcercaDe = New AcercaDe() dlg.Show() End Sub

    APÉNDICE C: INTERNACIONALIZACIÓN

    1099

    Mostrar recursos específicos Para mostrar los recursos de la aplicación bajo una referencia cultural determinada utilizaremos el siguiente código: Imports System.Globalization Imports System.Threading ' ... Thread.CurrentThread.CurrentCulture = New CultureInfo("en-US") Thread.CurrentThread.CurrentUICulture = New CultureInfo("en-US")

    La asignación del objeto CultureInfo deberá hacerse antes de invocar al método InitializeComponent, ya que el gestor de recursos ResourceManager determinará qué recursos recuperar en función de la propiedad CultureInfo.CurrentUICulture del subproceso actual. La clase ResourceManager proporciona acceso a recursos específicos de la referencia cultural en tiempo de ejecución. En nuestro ejemplo, este proceso tendremos que ejecutarlo desde las órdenes “Español” e “Inglés” del menú “Opciones”: Private Sub OpcionesIdiomaEspañol_Click( _ ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles OpcionesIdiomaEspañol.Click Thread.CurrentThread.CurrentCulture = New CultureInfo("es-ES") Thread.CurrentThread.CurrentUICulture = New CultureInfo("es-ES") Me.Controls.Clear() Me.InitializeComponent() End Sub Private Sub OpcionesIdiomaInglés_Click( _ ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles OpcionesIdiomaInglés.Click Thread.CurrentThread.CurrentCulture = New CultureInfo("en-US") Thread.CurrentThread.CurrentUICulture = New CultureInfo("en-US") Me.Controls.Clear() Me.InitializeComponent() End Sub

    Obsérvese que antes de invocar al método InitializeComponent eliminamos los controles actuales del formulario (colección Controls), porque si no, al crearlos de nuevo, se duplicarían.

    1100

    ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

    Agregar ficheros de recursos de forma manual Ficheros análogos a Form1.en.resx pueden ser también añadidos y editados manualmente. Para ello, simplemente hay que hacer clic con el botón secundario del ratón en el nombre del proyecto y seleccionar Agregar nuevo elemento del menú contextual. Seleccionar en el diálogo que se visualiza la plantilla Archivo de recursos y escribir un nombre para el fichero .resx. Finalizar haciendo clic en el botón Aceptar. El nombre del fichero tendrá la sintaxis siguiente: RaízDelNombre.idioma-region.resx

    El fichero se agregará al proyecto en el Explorador de soluciones y se abrirá automáticamente el diseñador que le permitirá editar el fichero. Se obtendrá acceso a estos recursos cada vez que la aplicación no pueda encontrar recursos más adecuados para la referencia cultural de la interfaz de usuario. En cualquier instante durante el diseño, podemos abrir y editar un fichero .resx haciendo clic con el botón secundario del ratón en el nombre del mismo y seleccionando Ver diseñador en el menú contextual. Como ejemplo, vamos a añadir los ficheros .resx con los recursos especificados a continuación: Nombre del fichero .resx

    Nombre del recurso

    Valor

    Form1.es-ES.resx Form1.en-US.resx

    cad01 cad01

    Hola Hello

    La cadena de caracteres nombrada cad01 será mostrada en la caja de texto de Form1 cuando el usuario haga clic en el botón Aceptar. El fichero Form1.es-ES.resx contendrá recursos que son específicos del español hablado en España, y el fichero Form1.en-US.resx contendrá recursos que son específicos del inglés hablado en EEUU. Para acceder a estos recursos, añada a Form1 el controlador del evento Click del botón y edítelo como se indica a continuación: Imports System.Resources ' ... Private Sub btAceptar_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btAceptar.Click Dim rm As Resources.ResourceManager = _ New Resources.ResourceManager("InfoCulturaWin.Form1", _ GetType(Form1).Assembly)

    APÉNDICE C: INTERNACIONALIZACIÓN

    1101

    Me.TextBox1.Text = rm.GetString("cad01") End Sub

    El constructor de ResourceManager toma dos argumentos: raíz del nombre de los recursos, es decir, el nombre del fichero de recursos sin la referencia cultural ni la extensión .resx, y el ensamblado principal. Obsérvese que para el nombre del fichero se ha especificado el espacio de nombres. Para acceder al recurso String cad01 especificado en la referencia cultural actual, se invoca al método GetString de ResourceManager. De forma predeterminada, el objeto ResourceManager distingue entre mayúsculas y minúsculas. Si no se desea hacer esta distinción, hay que asignar true a la propiedad IgnoreCase de ResourceManager. Si ahora compila y ejecuta la aplicación y hace clic en el botón Aceptar de Form1, observará que la caja de texto mostrará el recurso cad01 correspondiente al idioma elegido. ¿Por qué no hemos añadido estos recursos a los ficheros .resx generados automáticamente cuando diseñamos la aplicación? Porque al ser administrados por el diseñador de formularios, los recursos que introduzcamos serán eliminados la próxima vez que el diseñador modifique esos ficheros. Como alternativa, podríamos añadir estos recursos al fichero Resources.resx del proyecto, pero entonces tendríamos que especificarlos de forma análoga a como se indica a continuación: Nombre del fichero .resx

    Nombre del recurso

    Valor

    Resources.resx Resources.resx

    cad01_es cad01_en

    Hola Hello

    Ahora, para acceder a estos recursos, tendríamos que escribir el controlador del evento Click así: Imports System.Resources ' ...

    1102

    ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

    Private Sub btAceptar_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btAceptar.Click Dim rm As Resources.ResourceManager = _ New Resources.ResourceManager("InfoCulturaWin.Resources", _ GetType(Form1).Assembly) If (CultureInfo.CurrentUICulture.Name = "es-ES") Then Me.TextBox1.Text = rm.GetString("cad01_es") Else Me.TextBox1.Text = rm.GetString("cad01_en") End If End Sub

    APÉNDICE D

     F.J.Ceballos/RA-MA

    .NET PARA LINUX Los desarrolladores sobre GNU/Linux pueden ahora también desarrollar aplicaciones multiplataforma basadas en .NET gracias al proyecto Mono. ¿Qué es Mono? Es un proyecto para construir una plataforma de desarrollo libre, basada en Linux, compatible con Microsoft .NET. Durante su desarrollo, ha contado con el apoyo de algunos pesos pesados de la industria informática, sobre todo del mundo Linux. Es el caso de Ximian, empresa dirigida por el mejicano Miguel de Icaza, que se mostró interesada en colaborar con el desarrollo de este entorno de programación desde el principio. Más tarde, la compañía norteamericana Novell adquirió esta empresa y se constituyó en uno de sus principales patrocinadores. Mono en su versión 3.x, incluye un compilador para C# y bibliotecas de ejecución (runtimes) para Java y Visual Basic, así como otras herramientas de ayuda al desarrollo de aplicaciones multiplataforma (cross-platform; para varias computadoras/sistemas operativos). Mono 3.x se encuentra disponible para Linux, Mac OS X y Windows. Para más detalles sobre el futuro de este proyecto visite la página Web http://www.mono-project.com. En esta página encontrará también un enlace, Downloads, desde el cual podrá descargarse el software correspondiente a Mono para las distintas plataformas anteriormente comentadas, así como instrucciones para su utilización. Si está interesado en desarrollar sobre una máquina Linux utilizando Mono, puede encontrar información precisa y ejemplos en mi libro Aplicaciones .NET multiplataforma (proyecto Mono); este libro, aunque esté escrito en C#, no es más que una extensión a esta enciclopedia para que vea cómo puede aplicar todo lo aprendido en la misma, sobre una máquina Linux con Mono.

    ÍNDICE .  .NET, 4, 8  .NET Framework, 5 

    @  @ Page, 781, 971  @ Register, 977 

    A  a, etiqueta HTML, 1073  abort, 1004  Abort, 398  abrir documento, 354  acceder a un nodo, 260  AcceptButton, 83, 85, 178, 368  AcceptsReturn, 140  AcceptsTab, 140  acceso a datos desde un formulario web, 819  acceso a datos utilizando componentes, 560  acceso anónimo, 924  acceso anónimo, deshabilitar, 926  acceso conectado a bases de datos, 509  acceso desconectado a bases de datos, 555, 559  accesos directos, 1073  Access, 502  aceleradores, 129  Acerca de, 181, 328  acoplar control, 140 

    acoplar un control a su contenedor, 223  action, 1077, 1079  Activate, 63, 64  Activated, 63  ActiveForm, 63  ActiveMdiChild, 346  actualizar las filas, 680  actualizar y eliminar filas, EntityDataSource, 839  actualizar y eliminar filas, modelo de enlace, 852  adaptador, 504  Add, 55, 126, 231, 583  Add, colección, 162  Added, 499  AddHandler, 61  AddNew, 483  AddRange, 127  address, 882  administración de sitios web, 941  ADO.NET, 9, 496  AfterSelect, 263  agregar datos, 910  AJAX, 1001, 1028  Ajax Control Toolkit, 979  AJAX, envío de datos utilizando el método POST,  1011  AJAX, llamadas fuera de dominio, 1010  AJAX, llamadas que producen errores o que no  retornan, 1010  align, 1074  alineación del texto, 54, 364  alisado, 302  AllowFullOpen, 221 

    1106

    ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

    AllowMerge, 345  AllowsTransparency, 65  alt, 1074  ámbito de aplicación, 810  ámbito de sesión, 811  Anchor, 223, 367  animación, 336  añadir menú, 128  añadir texto a una caja de texto, 91  añadir un botón a la barra de h., 135  añadir un control a la barra de estado, 137  añadir un nuevo registro, 582  añadir un usuario que tenga una función, 954  añadir una nueva fila a una rejilla, 482  aplicación ASP.NET cliente de un servicio web,  992  aplicación web, 1092  aplicación web de IIS, 744  aplicación, ciclo de vida, 71  aplicación, crear, 16  aplicación, depurar, 33  aplicación, desarrollo, 82  aplicación, instanciar sólo una vez, 75  aplicaciones de consola, 1046  aplicaciones web, 774  App.config, 67  App_Browsers, 778  App_Code, 749, 778  App_Data, 778  App_GlobalResource, 778  App_LocalResources, 778  App_Themes, 778, 980  App_WebReferences, 778  Appearance, 185, 189  AppendText, 144  applets, 1092  Application, 50, 63, 71, 803  Application_Error, 841  ApplicationExit, 72  árbol, 254  árbol, acceder a un nodo, 260  árbol, añadir imágenes para los nodos, 257  árbol, añadir nodos, 256  árbol, añadir y borrar un nodo, 264  árbol, arquitectura, 255  árbol, iniciar, 258  árbol, nodos, 255  árbol, personalizar, 269  árbol, recorrer, 264  árboles de expresiones, 629 

    archivo de aplicación de ASP.NET, 796  área cliente, 64  área de texto, 1080  argumentos en la línea de órdenes, 75, 1051  arrastrar y soltar, 366  ArrayList, 442  asincrónico, modelo, 893  asociación, 657  ASP, 1091  ASP.NET, 725, 1092  ASP.NET AJAX, 1018  ASP.NET, acceso a los recursos, 790  ASP.NET, arquitectura, 920  ASP.NET, carpetas, 778  ASP.NET, instalación, 1057  aspnet_compiler, 797  aspnet_regiis, 1057  assembly, 11  Assembly, 70  AsyncPostBackErrorMessage, 1021  AsyncPostBackTimeout, 1021  AsyncPostBackTrigger, 1030  ataques de inyección SQL, 513  atributos de anotación de datos, 704, 710  atributos globales de una aplicación, 70  atributos proveedores de valores, 848  Attach, 683, 903  AttachDBFilename, 1052  autenticación ASP.NET, 927  autenticación básica con conexión SSL, 962  autenticación de IIS, 927  autenticación mediante formularios, 934  autenticación Windows, 926  authentication, 927  authorization, 927, 930, 956  AutoEventWireup, 751, 785  AutoPostBack, 786, 787, 1024  AutoResetEvent, 410, 414  autoridad de certificación, 962  autorización, 930  AutoValidate, 96  ayuda dinámica, 18 

    B  BackColor, 109  BackgroundWorker, 404  barra de desplazamiento, 25, 44, 203  barra de desplazamiento, eventos, 206  barra de direcciones, 1068 

    ÍNDICE

    barra de estado, 136  barra de herramientas, 134  barra de herramientas y de estado, 361  barra de menús, 24, 43, 124  barra de menús, crear, 126  barra de progreso, 208  Barra de título, 44  barras de desplazamiento, 323  barras de herramientas, fusionar, 351, 371  barras, añadir, 322  base de datos, 487  base de datos accedida desde un servicio web,  991  base de datos basada en servicio, 597  base de datos local, 597  base de datos SQL Server, crear, 588  base de datos, añadir las tablas, 589, 598  base de datos, crear, 597, 1052  base de datos, diagrama visual, 600, 601  base de datos, navegar, 579  bases de datos, mover, 1052  BeginEdit, 548  BeginInvoke, 400  BeginUpdate, 157, 194  biblioteca de clases, 9  Bin, 778  binary, 897  BinaryExpression, 632  Bind, 756  binding, 882  Binding, 431  BindingComplete, 438  BindingContext, 441  BindingList, 440  BindingList, propiedades, 552  BindingListView, 471, 673  BindingManagerBase, 441  BindingNavigator, 586  BindingSource, 432, 434, 440, 451, 453, 460,  463, 544, 578, 581, 612  BindItem, 756  Bitmap, 296, 322  bloquear los controles, 29  BMP, 321  body, 1069  Bold, 364  border, 1083  borrar datos, 911  borrar registros en una tabla, 491  borrar tabla de la base de datos, 491 

    1107

    borrar un control, 27  borrar un registro, 584  botón borrar, 1079  botón de opción, 24, 188, 1078  botón de pulsación, 23, 56, 82  botón enviar, 1079  botón predeterminado, 83, 85, 178  br, 1070  Brush, 301  bucle de mensajes, 46  buscar en una lista, 194  buscar un registro, 584  Button, 53, 81, 82  ButtonBase, 81 

    C  CA, 962  Cache, 816  caché, 812  caché con SQL Server, 816  cadena de consulta, 806  caja de clave de acceso, 1078  caja de diálogo Abrir, 217  caja de diálogo Color, 220  caja de diálogo de entrada, 174  caja de diálogo Fuente, 221  caja de diálogo Guardar, 219  caja de diálogo modal o no modal, 170  caja de diálogo modal, cerrar, 180  caja de diálogo no modal, cerrar, 236  caja de diálogo para mostrar un mensaje, 170  caja de diálogo, crear, 177  caja de diálogo, mostrar, 178  caja de diálogo, recuperar datos, 179  caja de herramientas, 22  caja de imagen, 24, 320  caja de imagen, Image, 324, 325  caja de texto, 24, 82, 1077  caja de texto multilínea, 139  caja de texto, seleccionar el contenido, 90  cajas de diálogo estándar, 216  cajas de diálogo personalizadas, 176  calculadora, 105  calendario, 25  callback, 1004  cambios en los datos, 675  cambios en los datos, notificar, 433  cambios, seguimiento, 695  campos, 487 

    1108

    ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

    Cancel, 96  cancelar una llamada asíncrona, 1033  CancelAsync, 407  CancelButton, 178, 368  CancelEdit, 548  CancelEventArgs, 96  CancellationPending, 407  CanRedo, 360  CanUndo, 143, 154, 360  capa de acceso a datos, 537  capa de lógica de negocio, 541  capa de presentación, 533  capa de presentación, desacoplar, 547  capa de presentación, lógica, 544  capas de servicios de la red, 1062  cargar imagen, 324  carpeta virtual, 741  carpetas ASP.NET, 778  cascada, 362  cascada, operaciones en, 687  casilla de verificación, 24, 184, 1078  Category, 379  CellBeginEdit, 547  CellClick, 253  CellDoubleClick, 482  CellEnter, 467  CellFormatting, 247  Cells, 244  CellValidated, 478  CellValidating, 478  center, 1075  CenterParent, 177  centrar ventana, 283  cerrar, 44  cerrar formulario, 129  certificado de cliente, 963, 966  certificado de cliente es rechazado, 968  certificado de servidor, 961, 964  certificados, generar o solicitar, 963  CGI, 1090  ChangePassword, control, 951  ChangeTracker, 678, 696  chat, 915  CheckBox, 53, 81, 184  Checked, 153, 185, 189  CheckedChanged, 187, 192  CheckedListBox, 198  CheckOnClick, 153  CheckState, 185  CheckStateChanged, 188 

    ciclo de vida de una aplicación, 71  ciclo de vida de una página web, 784  clase, 57  clase Application, 50  clase Binding, 431  clase Bitmap, 296, 322  clase Button, 53  clase Cache, 816  clase CheckBox, 53, 184  clase CheckedListBox, 198  clase Clipboard, 142  clase Color, 109  clase ColorDialog, 220  clase ColorMatrix, 318  clase ComboBox, 54, 198  clase ConfigurationManager, 827  clase Control, 82  clase Convert, 192  clase ConvertEventArgs, 437  clase CultureInfo, 1094  clase Cursor, 329  clase Cursors, 329  clase DataGridView, 242  clase DataGridViewColumn, 243  clase DataGridViewRow, 243  clase DataRow, 499  clase DataTable, 499  clase DbContext, 662  clase de entidad, 661, 700  clase Debug, 129  clase EventWaitHandle, 413  clase FontDialog, 222  clase Form, 48  clase Graphics, 296  clase GroupBox, 188  clase Image, 322  clase Label, 53  clase ListBox, 54, 193  clase ListView, 269  clase Membership, 953  clase MembershipUser, 953  clase MenuStrip, 126  clase Metafile, 322  clase OpenFileDialog, 217  clase Page, 784  clase Panel, 188  clase Point, 55  clase ProgressBar, 208  clase RadioButton, 54, 188  clase Regex, 102, 438 

    ÍNDICE

    clase ResourceManager, 132  clase ScrollBar, 54, 203  clase seriable, 229  clase Size, 50, 55  clase TextBox, 53, 141  clase TextBoxBase, 143  clase Thread, 395  clase Timer, 224  clase TimeSpam, 226  clase ToolStrip, 121  clase ToolStripButton, 135  clase ToolStripItem, 121  clase ToolStripItemCollection, 127  clase ToolStripMenuItem, 126  clase ToolStripSeparator, 128  clase TrackBar, 207  clase TreeNode, 255  clase TreeView, 254  clase Type, 263  clase UserControl, 375, 976  clase WaitHandle, 412  clase, definición parcial, 86  clases, 9  clases POCO, 701  clave de un nodo, 255  clave pública, 959  Clear, 144, 197  ClearError, 841  clearTimeout, 1011  clic en un botón, 469  clic en un botón, simular, 117, 583  clic sobre un botón, 583  Click, 46, 87  Client certificate revoked, 968  cliente servidor, 723  cliente WCF, 884  ClientScript, 1017  ClientSize, 50  ClientWins, 693  clipboard, 327  Clipboard, 142  Close, 65, 129, 180, 183, 504  CLR, 9  CLS, 6  code, 1071  Code First, 700  Code First, convenciones, 704  CodeFile, 781  código administrado, 11  código intermedio, 9 

    1109

    código no administrado, 11  colección, 162  colección como origen de datos, 440  colección ConstraintCollection, 499  colección ControlBindingsCollection, 579  colección DataColumnCollection, 499  colección DataRelationCollection, 499  colección DataRowCollection, 499, 583  colección DataTableCollection, 499  colección de elementos, 24  colección jerárquica, 25  colección, añadir, 197  colección, borrar, 197  colección, borrar todo, 197  colección, insertar, 197  colocar el control, 29  Color, 109, 220, 299  color, establecer, 109  Color, propiedad, 221, 222  ColorDialog, 217, 220  ColorMatrix, 318  columnas, 487  ColumnCount, 254  Columns, 243  Columns de ListView, 272  COM, 12  COM+, 13  combinar menús, 345  ComboBox, 54, 81, 198  Command, 500, 503  CommandBuilder, 529  CommandField, 866  CommandName, 765  CommonDialog, 216  compilador JIT, 11  Complete, 613  Component, 80  componente, 80  componentes de acceso a datos, 531  concurrencia, 556, 689, 895  ConcurrencyCheck, 691  ConcurrencyMode, 689  conexión abierta/cerrada, 663  conexión, probar, 508  configuración de la aplicación, 67  configuración, fichero, 528, 927  configurar el almacenamiento en caché, 813  configurar IIS, 928  Configuration, 697, 927  ConfigurationManager, 528, 827 

    1110

    ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

    confirmar, 173  conjunto de datos, 498  conjunto de datos, crear, 566, 590  Connection, 500  ConnectionStrings, 528, 827  ConstantExpression, 632  Constraint, 499  ConstraintCollection, 499  construir controles, 373  consultas parametrizadas, 838  contenedor, 24  contenedor UpdatePanel, 1028  contenedor UpdateProgress, 1032  Content, 917, 972, 1024  ContentAlignment, 54  ContentPlaceHolder, 971, 1024  ContextMenuStrip, 159, 480  contexto de objetos, 661, 662  contextos de corta duración, 675  contract, 882  contrato, 875  contrato de datos, 880  contrato de servicio, 876  Control, 80, 81, 183  control Button, 732  control Calendar, 733  control ChangePassword, 951  control CheckBox, 730  control CheckBoxList, 730  control CreateUserWizard, 947  control DataGridView, 567, 573  control DetailsView, 1026  control DropDownList, 732  control GridView, 953, 1025  control HyperLink, 733  control Label, 730  control LinkButton, 732  control ListBox, 731  control Literal, 976  control Login, 938  control LoginName, 951  control LoginStatus, 939  control LoginView, 939  control Panel, 733  control PasswordRecovery, 950  control RadioButton, 731  control RadioButtonList, 731  control RichTextBox, 352  control ScriptManagerProxy, 1028  control SqlDataSource, 1024 

    control Substitution, 814  control Table, 733  control TextBox, 730  control web para acceso a datos, 820  Control, atributo proveedor de valor, 848  control, borrar, 27  control, mover, 27  Control.DataBind, 752  controlador de eventos, 30, 59  controlador para un evento, 61  controladores de espera, 412  controladores de eventos, asignar, 61  ControlBox, 177  controles, 45, 1077  controles con enlaces a datos, 734  controles de rango definido, 203  controles de servidor HTML, 727  controles de servidor web, 727  controles de usuario, 728  controles de usuario web, 974  controles de validación, 727, 734, 792, 793  controles HTML, 728  controles para inicio de sesión, 938  controles Strip, 323  controles web, 729  controles, construir, 373  controles, enlazar o vincular con BD, 577  Controls, 55  ControlUpdateMode, propiedad, 431  conversión de datos, 114  conversiones en enlaces, 435  Convert, 88, 192  ConvertEventArgs, 437  ConvertEventHandler, 436  convertir un Date en un String y viceversa, 385  convertir un entero en base 10, 8 o 16, en una  cadena de caracteres, 193  convertir una cadena de caracteres a un entero  en base 10, 8 o 16, 192  cookies, 804  coordenadas, 313  coordenadas universales, 332  coordenadas, tipos, 317  coordinador de transacciones distribuidas, 614  Copy, 144  correo electrónico, 1065  cortar, copiar y pegar, 359  Count, 442, 581, 627  crear un adaptador, 561  crear un enlace, 433, 443 

    ÍNDICE

    crear una aplicación, 16  crear una aplicación MDI, 344  crear una base de datos, 488, 493, 495  crear una caja de diálogo, 177  crear una conexión, 565  crear una imagen a partir de un fichero, 260  crear una tabla, 488  CREATE DATABASE, 488  CREATE TABLE, 488  CreateDatabaseIfNotExists, 708  CreateGraphics, 298  CreateUser, 953  CreateUserWizard, control, 947  credentials, 935  criptografía asimétrica, 959  criptografía simétrica, 959  CRL, 968  CRUD, 704  CSDL, 644  CSS, 973, 1001, 1023, 1084  CSS, atributos, 1084  CSS, class, 1086  CSS, div, 1088  CSS, id, 1087  CSS, link, 1085  CSS, pseudoclases, 1087  CSS, span, 1088  CSS, style, 1084  cuadro combinado, 198  cultura, 1094  CultureInfo, 1094  CurrencyManager, 441, 453  Current, 442, 584  CurrentCell, 253  CurrentCulture, 1095  CurrentItem, 465, 472  CurrentUICulture, 1095  CurrentValues, 698  Cursor, 329  cursor del ratón, cambiar, 329  Cursors, 329  curvas cardinales y de Bézier, 307  Cut, 144 

    D  Data Mapper, 649  Data Transfer Object, 532  DataAdapter, 500, 569  DataAdapter, métodos, 556 

    1111

    Database, 705  Database First, 652, 700  DataBind, 752, 753  DataBinder, 755  DataBindings, 432, 577  DataColumn, 499, 575  DataColumnCollection, 499  DataContract, 880  DataError, 477  DataGridView, 81, 242, 456, 460, 533, 544, 567,  573  DataGridView, arquitectura, 243  DataGridView, construir, 244  DataGridView, control de errores, 476  DataGridView, iniciar, 246  DataGridView, n.º de filas y columnas, 254  DataGridView, origen de datos, 249  DataGridView, tamaño de las celdas, 252  DataGridView, validar, 555  DataGridView, valor de la celda, 253  DataGridViewColumn, 243  DataGridViewRow, 243  DataMember, 463, 567, 751, 880  DataReader, 500, 504  DataRelationCollection, 499  DataRow, 499  DataRowCollection, 499, 583  DataRowView, 431, 584  DataSet, 431, 555, 575  DataSet, métodos, 556  DataSource, 442, 445, 460, 521, 558, 567, 751  DataSource de DataGridView, 250  DataSourceID, 751  DataSourceObject, 751  DataSourceUpdateMode, propiedad, 431  DataTable, 431, 499, 575  DataTableCollection, 499  DataTextField, 751  DataTextFormatString, 751  DataValueField, 752  DataView, 431, 471  DataViewManager, 431, 575  Date, 381, 385  DateTime, 381  DateTimeFormatInfo, 385  DateTimePicker, 212  DbCommand, 526  DbCommandBuilder, 529  DBConcurrencyException, 564  DbConnection, 526 

    1112

    ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

    DbContext, 650, 659, 700  DbDataAdapter, 526  DbEntityEntry, 678, 683, 697, 764, 853  DbProviderFactories, 526  DbProviderFactory, 501, 526  DbQuery, 650  DbSet, 650, 659  DbSet (Of TEntity), 650  DbSet(Of ), 663  DbUpdateConcurrencyException, 689  DCOM, 13  Deactivate, 63  Debug, 129  debugger, 1058  defaultRedirect, 841  delegado, 59  delegado Func, 625  delegados, 399, 623  Delete, 584, 823  DELETE, 491  DeleteCommand, 505  Deleted, 499  DeleteMethod, 762  depuración, 129  depurar, 1049  depurar una aplicación, 33  descripción abreviada, 56, 57  Description, 379  deshacer, 144, 154, 352, 360  deslizador, 207  Detach, 896  DetailsView, 836, 851, 869, 1026  DHTML, 1002  diálogo Acerca de, 181  diálogo modal, cerrar, 180  diálogo no modal, 233  diálogo no modal, cerrar, 235, 236  diálogo, ¿está visible?, 237  diálogo, ocultar, 236  DialogResult, propiedad de un botón, 179  DialogResult, propiedad de un formulario, 179  DialogResult, valor retornado..., 172  dibujar formas, 341  dirección, 875  dirección de Internet, 1064  dirección IP, 1064  directorio virtual, 741  dirigirse a otra URL, 938  diseño de tipo maestro‐detalle, 461, 587  DisplayMember, 445, 521, 558 

    Dispose, 50, 180, 183, 511  dispositivos  matriciales y vectoriales, 294  DNS, 1063  doble búfer, 339  Dock, 140, 223  documento XML, 1009  DoEvents, 414  DOM, 1002  dominio, 1063  DoubleBuffered, 339  DoWork, 404  DrawArc, 306  DrawBezier, 307  DrawCurve, 307  DrawEllipse, 305  DrawLine, 304  DrawPie, 306  DrawPolygon, 306  DrawRectangle, 304  DROP TABLE, 491  DropCreateDatabase..., 708  DropDown, 161  DropDownItems, 162  DropDownList, 751  DropDownOpening, evento, 152  DropDownStyle, 199  DTC, 614 

    E  editar un recurso, 69, 130  editor de menús, 124  editor de texto MDI, 348  editor de textos, 138  ejecución asíncrona de servicios web, 890  ejecutar, 22  Elapsed, 226  Elapsed, evento, 225  elemento actual, 465, 472  elemento de un menú, marcar, 154  eliminar filas, 685  eliminar un recurso, 131  e‐mail, 1065  Email, 957  EnableAutoDragDrop, 366  Enabled, 153  EnablePageMethods, 1039  EnablePartialRendering, 1021  EndEdit, 548 

    ÍNDICE

    EndInvoke, 400  endpoint, 882  EndUpdate, 157, 194  enfocar un componente, 89  enlace a colecciones, 442  enlace a datos, 753  enlace con otros controles, 435  enlace de datos, 423, 574  enlace de datos .NET, 430  enlaces, 875, 883, 1073  Enter, 90  entidad, 656  Entity Client, 645  Entity Framework, 643  Entity SQL, 645  EntityCollection, 664  EntityDataSource, 829  EntityDataSourceView, 843  EntityKey, 695  EntitySet, 695  entorno de desarrollo integrado, 1045  entorno de ejecución, 9  entrada de datos, 1077  Entries, 693  Entry, 678, 697, 764, 853  Enum, 111  enumeración ContentAlignment, 54  enumeración Keys, 130  error, notificar, 97  errores en una página ASP.NET, controlar, 841,  855  errores, control en DataGridView, 476  ErrorProvider, 97  ErrorText, 479  escribir datos en una tabla, 490  espacios de nombres, 32  especificación de lenguaje común, 6  eSQL, 645  esquinas redondeadas, 979  estado de aplicación, 810  estado de sesión, 810  estado de una página, 803  estado de vista, 807  estado del modelo, 767  estilo del texto, 364  estructura de una aplicación gráfica, 48  etiqueta, 23, 54, 82  etiquetas HTML, 1069  Eval, 755  EventHandler, 59, 403 

    evento, 46  evento ‐ método, 61  evento ApplicationExit, 72  evento CellBeginEdit, 547  evento CellFormatting, 247  evento Click, 87  evento Enter, 90  evento FormClosing, 365, 569  evento Idle, 72  evento KeyPress, 87  evento Load, 89, 568  evento MouseClick, 90  evento Paint, 294  evento PreInit, 982  evento PrintPage, 358  evento PropertyChanged, 427  evento Selecting, 838  evento SelectionChange, 363  evento Shown, 89  evento Shutdown, 73  evento Startup, 73  evento StartupNextInstance, 73  evento TextChanged, 87, 426  evento ThreadException, 72  evento ThreadExit, 72  evento UnhandledException, 73  evento UserDeletingRow, 546  evento Validated, 98  evento Validating, 96  evento, suscribir, 30  eventos, 30, 58  eventos del ratón, 334  eventos del teclado, 86  eventos KeyDown y KeyUp, 94  eventos KeyDown y KeyUp y KeyPress, 94  eventos más comunes, 59  eventos, lista, 30  eventos, responder, 86  EVENTVALIDATION, 809  EventWaitHandle, 410, 413  ExecuteNonQuery, 503  ExecuteReader, 503  EXIF, 321  Exit, 51  explorador de bases de datos, 495  expresión de consulta, 628  expresión de consulta, compilación, 635  expresiones de consulta, 632  expresiones de enlace de datos, 753  expresiones lambda, 623 

    1113

    1114

    ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

    expresiones regulares, 99, 438  Expression, 629, 632  Extension, 622, 636  extremo, 875 

    F  factoría, 526  fecha y hora, 25  fecha y hora, formato, 381  fechas, 211  fichero de configuración, 527, 528, 827, 927  fichero de recursos, 132, 1096  fila añadir, 583  fila nueva, 583  filas, 487  FileDialog, 217  FileName, 219  FileUpload, 897  Fill, 506, 568  Filter, 219  FilterIndex, 219  filtrado, 863  filtro de nombres de fichero, 219  finalizar la ejecución, 22  Finally, 509  Find, 255, 352, 584  FindString, 157, 194  firma digital, 960  FixedDialog, 177  FlatStyle, 185, 189  flow layout, 782  FlowLayoutPanel, 213  Fluent API, 712  foco, 89, 229, 583  Focus, 89, 193, 583  FolderBrowserDialog, 217  font, 1069  Font, 54, 109, 303  FontDialog, 217, 222  For Each, 231  ForeColor, 109  form, 798, 1076  Form, 48, 81  Format, 88  Format de String, 381  Format, evento, 432, 435  FormatException, 88  formatos de fechas y horas, 381  FormBorderStyle, 66, 177 

    FormClosed, 64  FormClosing, 64, 365, 569  FormClosing, evento, 180  FormsAuthentication, 938  formulario Acerca De, 329  formulario activo, 63, 346  formulario cargar, 568  formulario cerrar, 569  formulario hijo, 350  formulario MDI, 348, 603  formulario modal, 63  formulario no modal, 63  formulario propietario, 182  formulario web, diseño, 735  formulario, BackgroundImage, 324  formulario, cerrar, 365  formulario, posición inicial, 63  formularios, 45, 1076  formularios hijo, 346  formularios hijo abiertos, 345, 362  formularios web, 773, 798  formularios, colección, 63  formularios, comunicación entre, 234  FormView, 765, 858  From, 626, 635  FromArgb, 109  FromFile, 324  FromImage, 312  ftp, 1064, 1066  fuente, establecer, 109  FullPath, 255  Func, 625  funciones, representar, 330  fusionar barras de herramientas, 371 

    G  GDI+, 293  GDI+, servicios, 295  generador de código nativo, 12  generar código JavaScript, 1014  gestión de datos, 723  gestor de recursos, 1099  get, 798  GetAllUsers, 956  GetCurrent, 925  GetCustomAttributes, 70  GetDatabaseValues, 698  getElementsByTagName, 1009  GetExecutingAssembly, 70 

    ÍNDICE

    GetObject, 68, 132  getSelectedColumn, 253  GetString, 68, 132, 1101  GetType, 263, 544  GetView, 843  GIF, 321  Global.asax, 796  globalización, 1093  Gopher, 1064  GotFocus, 229  gráficos, 293  gráficos en un documento HTML, 1074  gráficos vectoriales, 295  Graphics, 298, 341  GraphicsPath, 304, 308  grid layout, 782  GridView, 759, 864, 1025  GridView, AllowSorting, 863  GridView, SelectedValue, 866  Group, 637  Group … By, 627  GroupBox, 81, 188, 191  grupo de aplicaciones, 745, 922  grupos de noticias, 1066  guardar documento, 355  guardar una aplicación, 33  guardar una imagen, 325 

    H  habilitar o inhabilitar los elementos de un menú,  152  Handled, 87  Handles, 46, 61  HashSet, 703, 716  HasMorePages, 359  head, 1069  height, 1075  herramientas, caja, 22  hidden, 807  Hide, 65, 236  hilos, 391  hilos accediendo a controles de los formularios,  399  hilos secundarios, detener de forma controlada,  414  hilos, cancelar, 407  hilos, estados, 398  hilos, mecanismos de sincronización, 408  hipertexto, 1073 

    hn, 1070  hojas de estilo, 973, 1023, 1084  hr, 1070  href, 1073  HScrollBar, 81, 204  html, 8, 1068, 1069  HTML, controles, 727, 728  HtmlInputHidden, 807  HTTP, 8, 803, 1064  HTTP 403.13, 968  HTTP get, 799  HTTP post, 800  HttpClientCertificate, 963  HttpContext, 802, 925  HttpCookie, 804  http‐equiv, 917  HTTPS, 962, 966  HttpServerUtility, 802  HyperLink, 840, 854 

    I  IBindingList, 431, 433, 440, 447, 469  IBindingListView, 470  Icon, 29, 65  icono de la aplicación, 29  IDatabaseInitializer, 708  Identity, 707, 897, 924  IDictionary, 844  idioma, 1094  IDisposable, 511  Idle, 72  IEditableObject, 548  IEnumerable, 440, 627, 641  iframe, 1075  IgnoreCase, 1101  IIS, 742, 919  IIS 7.0, certificados, 963  IIS, instalar, 1092  IList, 431, 440  Image, 322  Image, propiedad, 133  ImageIndex, 257, 258  ImageList, 257  imagen, 325, 1079  imagen en un botón, 130  imagen, cargar, 324  imágen, FromFile, 260  imagen, guardar, 325  imágenes, 296 

    1115

    1116

    ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

    imágenes en un documento HTML, 1074  imágenes, lista de, 257  Images, 257  ImageStream, 258  ImageTransparentColor, 133  IMAP, 1064  img, 1074  imprimir documento, 357  incoherencia de accesibilidad, 231  Increment, 209  Inherits, 781  iniciadores de colecciones, 622  iniciadores de objetos, 621  iniciar una lista desplegable, 281  inicio de sesión, 936  Init, 785  InitialDirectory, 219  Initialize, 710  innerHTML, 1010  INotifyPropertyChanged, 427, 448  input, 1077  InputBox, 174  Insert, 197, 823, 843  INSERT, 490  insertar filas, 682  insertar filas, EntityDataSource, 841  insertar filas, modelo de enlace, 855  InsertCommand, 505  Inserting, 845  InsertItemTemplate, 859  InsertMethod, 766  interceptar la tecla pulsada, 91  Interface, 371  interfaces gráficas, 7, 38  interfaz, 45  interfaz de múltiples documentos, 343  interfaz fluida, 712  interfaz IEditableObject, 548  Interlocked, 410  internacionalización, 1093  Internet, 1061  Internet Explorer, 1067  Into, 639  intranet, 1062  introducir datos, 475  Invalidate, 295  InvariantCulture, 1096  Invoke, 400, 402  InvokeRequired, 401, 402  inyección de código SQL, 513 

    IPrincipal, 924  IQueryable, 627, 641, 680  IRC, 915  IsAlive, 398  ISAPI, 1091  IsBackground, 398, 419  IsCallback, 1016  IsClientScriptBlockRegistered, 1017  IsDispose, 236  IsDisposed, 183  IsInAsyncPostBack, 1021  IsMatch, 102, 438  IsMDIContainer, 344  IsOnline, 957  IsPostBack, 759, 785  IsStartupScriptRegistered, 1017  IsValid, 785  it, 648, 835  Italic, 364  Item, 231, 756  ItemClicked, 481  Items, propiedad, 156, 194  ItemType, 756 

    J  JavaScript, 1001  JavaScript, depurar código, 1058  JavaScript, eventos, 1015  JavaScript, fichero .js, 1015  JavaScript, generar código, 1014  JIT, 11  Join, 398, 627, 638  JPEG, 321  jQuery, 795, 943  JSON, 1007 

    K  Key, 231  KeyChar, 87, 92  KeyDown, 86, 94  KeyPress, 86, 92, 187  KeyPressEventArgs, 87  Keys, 94, 130  KeyUp, 86, 94  KeyValuePair, 231 

    ÍNDICE

    L  label, 1081  Label, 53, 81, 82  LabelEdit, 255, 268  Language, 782, 1096  LargeChange, 204  LastActivityDate, 957  LayoutMdi, 347, 362  LayoutMode, 29  Lazy Loading, 649  lector de datos, 504  Left, 65  Let, 640  li, 1072  Like, 584  líneas de ayuda, 29  LINQ, 619  LINQ to Entities, 644  Linux, 1103  List, 442  lista, 24, 193  lista de formularios abiertos, 362  lista de los eventos, 30  lista de tareas, 133  lista desplegable, 24, 198, 1080  lista desplegable, añadir elemento, 202  lista desplegable, borrar elemento, 202  lista desplegable, diseñar, 200  lista desplegable, estilo, 199  lista desplegable, iniciar, 201  lista, acceder a sus elementos, 196  lista, borrar elemento, 198  lista, colección de elementos, 197  lista, columnas, 193  lista, diseño, 194  lista, elemento seleccionado, 194  lista, iniciar, 196  lista, ordenar, 194  lista, selección múltiple, 196  listas desplegables en menús, 155  listas HTML, 1072  ListBox, 54, 81, 193, 445  ListBox, vincular con DataSet, 521, 558  ListChanged, 552  ListControl, 81  ListView, 269, 859  ListView, ejemplo, 273  ListViewItem, 273  Literal, 976 

    1117

    llamada asíncrona, 400  llamada síncrona, 400  Load, 89, 568, 751, 785  LoadFile, 352  LocalDB, 1054  localhost, 800  Localizable, 1096  localización, 1093  Location, 55, 126, 222  LocationChanged, 65, 223  lock, 410  lógica de negocio, 723  Login, control, 938  LoginName, 978, 985  LoginName, control, 951  LoginStatus, 978, 985  LoginStatus, control, 939  LoginView, 977  LoginView, control, 939  logo, 367 

    M  maestro‐detalle, 461, 587  maestro‐detalle, aplicación web, 868  mail, 1065  Main, 49, 51  MainMenuStrip, 126, 344  manifiesto, 11  ManualResetEvent, 410  mapa de bits, 320  MapPath, 802  máquina virtual, 11  marcador de posición de contenido, 971, 977,  987  marcas de tiempo, 896  marco, 24  marco con título, 281  marcos en páginas HTML, 1075  máscaras, 980  MaskedTextBox, 81, 104  MasterPage, 1023  MasterPageFile, 971  Match, 102  Matches, 103  Matrix, 315  Max, 627  MaxDropDownItems, 199  maximizar, 44  Maximum, 203 

    1118

    ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

    MDI, 343, 366  MdiChildren, 346  MdiLayout, 347  MdiWindowListItem, 345  MemberExpression, 632  Membership, 951, 956  MembershipUser, 956  mensaje, mostrar, 129  mensajes, 13  menú, 123  menú contextual, 159, 480  Menú de control, 43  menú dinámico, 161  menú Ventana, 345, 347, 362  menú, añadir, 126  menú, controlador de eventos, 128, 147  menú, elementos, 127  menú, señalar elemento, 153  menú, separador, 128  menús, 121  menús en páginas web, 974, 996  menús, combinar, 345  menús, diseño, 124  menús, líneas de separación, 125  MenuStrip, 126, 323  Merge, 351  MergeAction, 345, 351  MergeIndex, 345, 351  MessageBox, 170  MessageBox.Show, 425  meta, 917  Metafile, 322  metarchivo, 296  method, 798, 1077  MethodCallExpression, 632  MethodInvoker, 403  método ‐ evento, 61  método Add, 55, 583  método conducido por un evento, 86  método DataBind, 753  método Delete, 584  método Dispose, 50  método Exit, 51  método Fill, 568  método Find, 584  método Focus, 583  método Insert, 843  método NewRow, 583  método PerformClick, 583  método Print, 358 

    método Select, 89, 584  método SetToolTip, 57  método Update, 569  métodos de página, 1038  Métodos del generador de consultas, 645  métodos extensores, 622  Microsoft .NET, 4  Microsoft Access, 502  Microsoft.ACE.OLEDB, 503  Microsoft.Jet.OLEDB, 503  MiddleCenter, 54  miembro protegido, 50  Min, 627  minimizar, 44  Minimum, 203  modal o no modal, 170  Model First, 653, 700  ModelMethodContext, 862  modelo de datos, 454, 457  modelo de enlace de ASP.NET, 757, 847  modelo de entidades, 644  ModelState, 767  Model‐View‐Controller, 1059  Model‐View‐ViewModel (MVVM), 1059  módem, 1065  modificadores de tamaño, 27  modificar datos, 675  modificar datos en una tabla, 490  modificar una base de datos, 582  Modified, 354, 365, 499  ModifierKeys, 94  Modifiers, 369  Monitor, 409, 412  Mono, 1103  MonthCalendar, 212  mosaico, 362  mostrar un mensaje, 129  MouseClick, 90  MouseDown, 334  MouseMove, 334  MouseUp, 334  mover el control, 27  MsgBox, 129  MSIL, 9  MSL, 644  MultiLine, 139  multiple, 1081  Mutex, 409  My, 327  My.Computer, 327 

    ÍNDICE

    My.Computer.Audio, 339  My.Computer.Clipboard, 142 

    N  name, 1073, 1077  Name, 50, 126, 398  navegar por los elementos de una lista, 466  nemónico, 85, 129  NetworkService, 746, 771  NewRow, 583  news, 1066  ngen.exe, 12  N‐Layer architecture, 895  Node, 263  Nodes, 255  nodo seleccionado, 265  nodo, añadir, 265  nodo, borrar, 268  nodos, borrar todos, 268  NT AUTHORITY\Servicio de Red, 790  N‐Tier architecture, 895  nuevo documento, 353  NuGet, 701  Nullable(Of Integer), 848 

    O  Object, 80  ObjectCollection, 197  ObjectContext, 653  ObjectDataSource, 904, 905  ObjectQuery, 645  ObjectStateEntry, 676, 695  ObjectStateManager, 676, 695  objeto de negocio, 905  objeto Response, 999  objetos como orígenes de datos, 454  objetos de negocio, 535  objetos de sincronización, 409  OdbcConnection, 501  OdbcDataAdapter, 505  ol, 1072  OleDbConnection, 501  OleDbDataAdapter, 505  OleDbDataReader, 504  onchange, evento, 1008  onreadystatechange, 1005  OpenFile, 219, 220  OpenFileDialog, 217, 220 

    OpenForms, 63  operadores de consulta, 626  OperationContract, 876  optgroup, 1081  OptimisticConcurrencyException, 689  option, 1080  Option Explicit, 36  Option Strict, 36  OracleConnection, 501  OracleDataAdapter, 505  orden, 505  orden de tabulación, 1080  orden parametrizada, 516  orden SQL, escribir una nueva, 610  orden Tab, 55, 90, 281  ordenación, 863  Order By, 627, 635  organizar iconos, 362  Orientation, 207  origen de datos, 440, 457  orígenes de datos ADO.NET, 440, 575  orígenes de datos, ventana, 457  OriginalValues, 698  ORM, 643, 701  OutputCache, 813  Overrides, 50  OwnedForms, 183  OwnedWindows, 65  Owner, 65, 183, 234 

    P  p, 1070  Padding, 126  padre‐hija, tablas, 587  Page, 784, 924, 1017  Page.DataBind, 752  Page_Error, 841  Page_evento, 751, 785  PageMethods, 1038  PageRequestManager, 1033  PageSetupDialog, 217  página de contenido, 969  página de inicio de sesión, 936  página maestra, 969  página principal, 969  página web, 781, 1068  página web ASP.NET, 739  página web dinámica, 1090  página web, modelo de ejecución, 747 

    1119

    1120

    ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

    paginación, 863  páginas ASP, 1091  páginas web, publicar, 741  Paint, 294, 298, 299  Panel, 24, 188, 323, 367  panel de dibujo, 340  pantalla de presentación, 76  ParameterExpression, 632  Parameters, 516  parámetro oculto, 807, 1079  parámetros en órdenes SQL, 516  Parse, 114  Parse, evento, 432, 435  Partial, 86  pasos, 239  passport, 927  PasswordChar, 176  PasswordRecovery, control, 950  Paste, 144  patrón de diseño Factory, 526  patrones de diseño, 649  Pen, 300  perfiles, 983  PerformClick, 117, 469, 583  PerformStep, 209  permanente, 312  PictureBox, 81, 323  plantilla, 755, 760  plantilla de formularios, 366  Play, 339  PNG, 321  POCO, 701  Point, 55, 302  pool de conexiones, 926  POP 2 y 3, 1064  portapapeles, 142, 327  posición de un componente, modificar, 222  posición inicial del formulario, 63  Position, 442, 581  post, 798  postback, 1003, 1029  postbacks asíncronos, 1021  PostgreSql, 502  precompilar la aplicación ASP.NET, 797  PreInit, 785, 982  PreRender, 785  presentación, 723  PRIMARY KEY, 489  principal, 919  Print, 358 

    PrintDialog, 217  PrintPage, 358  Priority, 398  problemas de concurrencia, 556  procedimientos almacenados, 517, 533  producto cartesiano, 638  Profile, 983  ProgressBar, 81, 208  ProgressChanged, 406  ProgressPercentage, 406  PropertyChanged, 427  PropertyManager, 441  propiedad, 656  propiedad autoimplementada, 621  propiedad cambió, notificar, 427  propiedad Cancel, 96  propiedad ClientSize, 50  propiedad Controls, 55  propiedad Count, 581  propiedad Cursor, 329  propiedad DataBindings, 577  propiedad DataMember, 567  propiedad DataSource, 567  propiedad Font, 54  propiedad Icon, 29  propiedad Location, 55  propiedad Modified, 354, 365  propiedad Name, 50  propiedad Position, 581  propiedad ReadOnly, 108  propiedad Size, 50, 55  propiedad TabStop, 55  propiedad TanIndex, 55  propiedad Text, 50, 54  propiedad TextAlign, 54, 108  propiedades, 27  propiedades de navegación, 662  propiedades, añadir a un control, 376, 387  propiedades, atributos, 379  propiedades, clasificación, 379  propiedades, control de usuario, 373, 375, 377,  378, 379, 380, 381, 386, 387, 388  propietario de un diálogo, 234  Protected, 50  protocolo, 1062  protocolo de transferencia de ficheros, 1066  proveedor de datos, 500  proveedor de entidades, 645  proveedores de LINQ, 641  providers, 951 

    ÍNDICE

    proyecto, 16  publicar páginas web, 741  puntero, 22  punto de entrada a la aplicación, 51  punto de inserción, 89  punto final, 875 

    Q  QueryString, atributo proveedor de valor, 848 

    R  RAD, 781  RadioButton, 54, 81, 188  RangeValidator, 793  raster, dispositivos, 294  Read, 504  ReaderWriterLock, 410  ReadOnly, 108  readyState, 1005  recorte, área de, 309  Rectangle, 302  recursos, 130, 1096  recursos de una aplicación, 68  recursos embebidos, 132  recursos vinculados, 132  recursos, acceder, 1099, 1100  Redirect, 803, 999  RedirectFromLoginPage, 938  Redo, 352  reescritura de la URL, 806  refactorización, 375  referencias, 19  referencias culturales, 1094  reflexión, 70  Refresh, 447, 691  Regex, 102, 438  región, 308  región de recorte, 309  región no válida, 295  RegisterClientScriptBlock, 1017  RegisterStartupScript, 1017  registros, 487  rehacer, 352, 360  rejilla, 567  rejilla de ayuda, 29  Reload, 693, 698  reloj, 223  reloj despertador, 164, 238 

    Remove, 197, 231  RemoveAt, 197  RemoveAt, colección, 164  RemoveHandler, 62  rendimiento del servidor, 812  repintar una ventana, 295  Replace, 103  ReportProgress, 406  representar funciones, 330  Request, 802  RequiredFieldValidator, 793  reset, 1079  Reset, 413  Resize, 223  resolución gráfica, 294  ResourceManager, 68, 132, 1099, 1101  Response, 802, 999  Response.Redirect, 938  responseText, 1005  responseXML, 1005  RestoreBounds, 66  reutilización, 373  RevertMerge, 351  RGB, 109  RichTextBox, 81, 151, 352  Row, 553  RowCount, 254  Rows, 243  RTF, 352  Run, 46  RunWorkerAsync, 404  RunWorkerCompleted, 404, 407  ruta del sitio web, 802 

    S  SaveChanges, 662  SaveFile, 352  script callbacks, 1012  ScriptManager, 1021  ScriptManagerProxy, 1028  ScriptPath, 1021  scripts, 1021, 1091  ScriptService, 1036  Scroll, 206  ScrollBar, 54, 81, 203  ScrollBars, 139  sección crítica, 410  seguimiento de los cambios, 695  seguridad, 958 

    1121

    1122

    ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

    seleccionar datos de una tabla, 491  seleccionar el contenido de una caja de texto, 90  seleccionar el texto de una caja, 229  seleccionar un objeto, 28  select, 1080  Select, 89, 91, 144, 584, 635, 823, 838  SELECT, 491  SelectAll, 90, 144, 229  SelectCommand, 505  selected, 1081  SelectedCells, 244  SelectedColumns, 243  SelectedImageIndex, 257, 258  SelectedIndex, 157, 194, 199, 752  SelectedIndexChanged, 157, 672, 673  SelectedItem, 157, 194, 199, 201, 752  SelectedItems, 196  SelectedNode, 255, 265  SelectedRows, 243  SelectedRtf, 359  SelectedText, 91, 143, 359  SelectedValue, 558, 752  Selecting, 838  SelectionAlignment, 364  SelectionChange, 363  SelectionFont, 364  SelectionLength, 91, 143  SelectionStart, 91, 143  SelectMethod, 761  Semaphore, 409  sentencia Using, 511  señalar un elemento de un menú, 153  separadores, 125  seriar/deseriar un árbol, 292  Server, 802, 841  ServiceContract, 876  Services, 1021, 1036  servicio, 873  servicio de conexiones, 926  Servicio de red, 746, 771  servicio de suscripciones, 951  servicio WCF, 875  servicio WCF, configuración, 882  servicio web, 8  servicio web, acceso a BD, 990  servicios de IIS, 742  servicios de Internet, 1065  Servicios de objetos, 646  servicios web con AJAX, 1034  servicios web y LINQ, 894 

    servicios web, ejecución asíncrona, 890  servidor de nombres, 1064  servidor SMTP de IIS, 948  servidor web, 1092  servlets, 1092  Session, 802  Set, 413, 686  SetCacheability, 815  SetClip, 309  SetError, 97  SetInitializer, 710  setLocationRelativeTo, 283  setTimeout, 1011  SetToolTip, 57  ShortcutKeys, 130  Show, 65, 170, 177, 183, 234  ShowColor, 222  ShowDialog, 63, 177, 179, 183, 218  ShowHelp, 221  ShowInTaskbar, 64, 65  Shown, 63, 89  ShowNodeToolTips, 269  ShowPlusMinus, 269  ShowReadOnly, 219  ShowRootLines, 269  Shutdown, 73  simultaneidad, 689, 895  simultaneidad optimista, 563  sincronización, 917  sistema de nombres de dominio, 1063  sitio web, 741  sitio web, reglas de acceso, 954  sitios web, administración, 941  size, 1069  Size, 50, 55, 222, 303  SizeChanged, 223  skins, 980  Sleep, 398  SmallChange, 204  SMTP, 948, 1065  SOAP, 871  SOAP, mensaje, 874  SolidBrush, 301  solución, 16  sonido en una aplicación, 339  Sort, 194, 200  SortedList, 229, 230  SplashScreen, 76  SplitContainer, 273  SQL, 488 

    ÍNDICE

    SQL Server, 502, 509, 790  SQL Server 2012 Express, 1051  SQL Server Management Studio Express, 1054  SqlCacheDependency, 817  SQLCMD, 1052  SqlCommand, 503  SqlCommandBuilder, 563  SqlConnection, 501  SqlDataAdapter, 505  SqlDataReader, 504  SqlDataSource, 820, 1024  src, 1074, 1076  SSDL, 644  SSL, 930, 961, 967  Start, 396, 398  StartPosition, 63  Startup, 73  StartupNextInstance, 73  StartupPosition, 66  State, 698  status, 1005  StatusBar, 81  StatusStrip, 137  statusText, 1005  Step, 209  StoreWins, 693  Strikethru, 364  subdominio, 1063  submenú‐menú contextual, 161  submenús, 127  submit, 1079  Substitution, 814  Sum, 627  suplantación de identidad, 932  SupportsFiltering, 469  SupportsSorting, 469  suscribir evento, 30  SvcUtil.exe, 887  SyncLock, 410, 419  System.ComponentModel, 81  System.Data.Linq, 619  System.Drawing, 50, 54, 82, 296  System.Linq, 619  System.Linq.Expressions, 631  System.Runtime.CompilerServices, 622, 636  System.Threading, 392  system.web, 927  System.Web, 802  System.Windows.Forms, 49, 80  System.Windows.Forms.Design, 81 

    1123

    T  Tab, 55  TabControl, 210  tabindex, 1080  TabIndex, 55, 89, 126  tabla, 24, 241, 487, 1083  tabla con cabecera de filas, 281  tabla, construir, 244  tabla, iniciar, 246  table, 1083  table dinámico, 1005  TableAdapterManager, 574  TableLayoutPanel, 213  tablero de dibujo, 340  TabStop, 55  Tag, 484  Take While, 627  tamaño de los controles, 27  tamaño de un componente, modificar, 222  TCP/IP, 1062  td, 1083  tecla de acceso, 56, 85  tecla pulsada, interceptar, 91  teclas, 94  teclas Alt, Control o Shift (Mayús), 94  telnet, 1065  temas, 980  temporizador, 25, 223, 1011  Text, 50, 54, 88, 199  TextAlign, 54, 108  textarea, 1080  TextBox, 53, 81, 82, 141  TextBoxBase, 81, 143  TextChanged, 87, 191, 426  texto seleccionado, 152  th, 1083  theme, 980  Thread, 395  ThreadException, 72  ThreadExit, 72  ThreadStart, 395  ThreadState, 398  ThreeState, 185  Tick, evento, 225  TickFrequency, 207  ticks, 239  TickStyle, 207  TIFF, 321  Timer, 224, 410, 1034 

    1124

    ENCICLOPEDIA DE MICROSOFT VISUAL BASIC

    TimeSpam, 226  tip, 57  tipo anónimo, 620  tipo de un objeto, 263  tipo enumerado, 111  tipo implícito, 620  tipografía, 296  tipos de enlace, 432  tipos SQL, 489  title, 1069  ToDouble, 88  ToInt32, 192  ToList, 663  ToolBar, 81  ToolStrip, 121, 134  ToolStripButton, 135  ToolStripComboBox, 155  ToolStripItem, 121  ToolStripItemCollection, 127  ToolStripManager, 351  ToolStripMenuItem, 126, 480  ToolStripSeparator, 128  ToolTip, 57  Top, 65  Topmost, 66  ToString, 193, 230, 262  ToUpper, 193  tr, 1083  TrackBar, 81, 207  transacción, 518, 613  transacciones explícitas, 523  TransactionScope, 519, 613  Transform, 316  transformación, 314, 331  transformación global, 316  transformación local, 316  transformaciones de color, 318  trazado, 308  TreeNode, 255  TreeView, 254  trigger, 1029  Triggers, 1030  TryParse, 114  type, 1077  Type, 263, 460, 544  typeof, 460 

    U  Unchanged, 499 

    Underline, 364  Undo, 144, 154, 352, 360  UnhandledException, 73  unidad de medida, 299  UNIQUE, 489  Unload, 785  Update, 507, 569, 613, 823  UPDATE, 490  UpdateCommand, 505  UpdateMethod, 762  UpdateMode, 1031  UpdatePanel, 1028  UpdateProgress, 1032  URL, 725, 1072  URL, dirigirse a otra, 938  USENET, 1065, 1066  User, 924  UserControl, 375  UserDeletingRow, 546  UserName, 957  Using, 511, 613  usuario ASPNET, 926 

    V  validación, 767  validación de datos, DataGridView, 478  validación de los datos, 606  validación discreta, 794  validación personalizada, 104  validación, controles, 727  validar datos, 438  validar un campo de texto, 93  Validate, 606  Validated, 96  Validating, 96  ValidationAttribute, 711  ValidationSummary, 793  value, 1079  Value, 203, 209, 231, 237  Value Object, 532, 649  value provider attributes, 848  ValueChanged, 206  ValueMember, 521, 558  var, 620  varbinary, 897  variable fuertemente tipada, 756  variable, declaración implícita, 620  VaryByParam, 813  ventana, 43, 45 

    ÍNDICE

    ventana de aplicación, 344  ventana de documento, 344  ventana, centrar, 283  Ventana, menú, 347, 362  ViewState, 784, 807, 808  ViewState, deshabilitar, 818  ViewState, mecanismo, 818  vista de colección, 471  vista del control, 844  vista, buscar sus elementos, 474  vista, filtrar sus elementos, 474  vista, ordenar sus elementos, 473  Visual Studio .NET, 13, 15  VScrollBar, 81, 204 

    W  WaitAll, 413  WaitAny, 413  WaitHandle, 410, 412  WaitOne, 413  WCF, 873  web, 1066  web, controles, 727  Web.config, 927  WebForm_DoCallback, 1013 

     

    webMethod, 1039  WebResource.axd, 1014  Where, 635  WhereParameters, 838  width, 1075  Windows Forms, 7, 38, 79  WindowsFormsApplicationBase, 76  WindowsIdentity, 925  WindowState, 66, 344  WithEvents, 54  WordWrap, 139  WorkerReportsProgress, 406  WorkerSupportsCancellation, 407  world wide web, 1066  WPF, 7, 38, 79  WriteLine, 129  WSDL, 872  WWW, 1065, 1066 

    X  XCOPY, 1052  XHTML, 1001, 1090  XML, 7, 1009, 1089  XMLHTTP, 1004  XMLHttpRequest, 1004 

    1125

    Del mismo autor ● Curso de programación con PASCAL ● Curso de programación GW BASIC/BASICA ● Manual para TURBO BASIC Guía del programador ● Manual para Quick C 2 Guía del programador ● Manual para Quick BASIC 4.5 Guía del programador ● Curso de programación Microsoft COBOL ● Enciclopedia del lenguaje C ● Curso de programación QBASIC y MS-DOS 5 ● Curso de programación RM/COBOL-85 ● El abecé de MS-DOS 6 ● Microsoft Visual C ++ (ver. 1.5x de 16 bits) Aplicaciones para Windows ● Microsoft Visual C ++ Aplicaciones para Win32 (2ª edición) ● Microsoft Visual C ++ Programación avanzada en Win32 ● Visual Basic 6 Curso de programación (2ª edición) ● Enciclopedia de Microsoft Visual Basic 6 ● El lenguaje de programación Java ● El lenguaje de programación C#

    ISBN: 978-84-86381-36-3 224 págs. ISBN: 978-84-86381-87-5 320 págs. ISBN: 978-84-86381-43-1 444 págs. ISBN: 978-84-86381-65-3 540 págs. ISBN: 978-84-86381-74-5 496 págs. ISBN: 978-84-7897-001-8 480 págs. ISBN: 978-84-7897-053-7 888 págs. ISBN: 978-84-7897-059-9 384 págs. ISBN: 978-84-7897-070-4 396 págs. ISBN: 978-84-7897-114-5 224 págs. ISBN: 978-84-7897-180-0 846 págs. + 2 disquetes ISBN: 978-84-7897-561-7 792 págs. + disquete ISBN: 978-84-7897-344-6 888 págs. + CD-ROM ISBN: 978-84-7897-357-6 528 págs. + disquete ISBN: 978-84-7897-386-6 1.072 págs. + CD-ROM ISBN: 978-84-7897-485-6 320 págs. + CD-ROM ISBN: 978-84-7897-500-6 320 págs. + CD-ROM

    Del mismo autor ● El lenguaje de programación Visual Basic.NET ● Java 2 Lenguaje y aplicaciones ● Programación orientada a objetos con C ++ (4ª edición) ● C/C++ Curso de programación (3ª edición) ● Microsoft C# Lenguaje y aplicaciones (2ª edición) ● Java 2. Interfaces gráficas y aplicaciones para Internet (3ª edición) ● Aplicaciones .Net multiplataforma (Proyecto Mono) ● Enciclopedia del lenguaje C ++ (2ª edición) ● Enciclopedia de Microsoft Visual C# (3ª edición) ● Enciclopedia de Microsoft Visual Basic (2ª edición) ● Microsoft Visual Basic .NET Lenguaje y aplicaciones (3ª edición) ● Java 2 Curso de programación (4ª edición) ● Microsoft C# Curso de programación (2ª edición) ● Visual C#. Interfaces gráficas y aplicaciones para Internet con WPF, WCF y Silverlight ● Visual Basic. Interfaces gráficas y aplicaciones para Internet con WPF, WCF y Silverlight

    ISBN: 978-84-7897-525-9 464 págs. + CD-ROM ISBN: 978-84-7897-745-1 392 págs. + CD-ROM ISBN: 978-84-7897-761-1 648 págs. + CD-ROM ISBN: 978-84-7897-762-8 708 págs. + CD-ROM ISBN: 978-84-7897-813-7 520 págs. + CD-ROM ISBN: 978-84-7897-859-5 718 págs. + CD-ROM ISBN: 978-84-7897-880-9 212 págs. + CD-ROM ISBN: 978-84-7897-915-8 902 págs. + CD-ROM ISBN: 978-84-7897-986-8 1.110 págs. + CD-ROM ISBN: 978-84-7897-987-5 1.090 págs. + CD-ROM ISBN: 978-84-9964-020-4 520 págs. + CD-ROM ISBN: 978-84-9964-032-7 820 págs. + CD-ROM ISBN: 978-84-9964-068-6 850 págs. + CD-ROM ISBN: 978-84-9964-203-1 956 págs. + CD-ROM ISBN: 978-84-9964-204-8 938 págs. + CD-ROM

    INSTALACIÓN Para instalar el kit de desarrollo de Visual Basic y los ejemplos de este libro descargue la plataforma de desarrollo de la dirección: http://www.microsoft.com/express/.

    PLATAFORMA WINDOWS Instalación de .NET Framework SDK Hay que instalar .NET Framework Redistributable Package antes de instalar .NET Framework SDK. El primer paquete incluye todo lo necesario para ejecutar aplicaciones desarrolladas con .NET Framework. El segundo paquete incorpora todo lo necesario para escribir, construir, verificar y desplegar aplicaciones desarrolladas con.NET Framework. Para realizar la instalación, siga las instrucciones mostradas por el asistente de instalación. Esta instalación se realiza en la carpeta Microsoft.NET de Windows y en la carpeta Microsoft.NET de archivos de programas.

    Instalación de Microsoft Visual Studio La instalación de Visual Studio (el paquete completo o las versiones Express que necesite) no requiere la instalación previa del SDK porque está incluido en éste. Descargue de Internet el paquete Visual Studio Express 2012, o bien, si tiene acceso a alguna versión profesional de Visual Studio 2012, e instálelo (opcionalmente puede instalar SQL Server Express).

    Ejemplos del libro Los ejemplos del libro puede instalarlos en la carpeta Projects de Visual Studio o los puede recuperar directamente desde el material adicional cuando los quiera consultar.

    PLATAFORMA LINUX Véase el apéndice D.

    LICENCIA Todo el contenido de este material adicional, excepto los ejemplos del libro, es propiedad de las firmas que los representan (Microsoft, etc.). La inclusión en este libro se debe a su gentileza y es totalmente gratuita y con la finalidad de apoyar el aprendizaje del software correspondiente. Para obtener más información y actualizaciones visite las direcciones indicadas en dicho software: http://www.microsoft.com/express/ Al realizar el proceso de instalación, haga el favor de consultar el acuerdo de licencia para cada uno de los productos.

    WEB DEL AUTOR: http://www.fjceballos.es En esta Web podrá echar una ojeada a mis publicaciones más recientes y acceder a la descarga del software necesario para el estudio de esta obra así como a otros recursos.