Navegador web en C# (3)

Navegador web usando la versión moderna del control WebBrowser, el control WebView, que renderiza las páginas usando el motor de Microsoft Edge en lugar de hacerlo con el motor de Internet Explorer, añadiendo un segundo formulario que muestra el código HTML de la página que se visita, en C#

En 2 ejercicios anteriores (1 y 2) se desarrolla una aplicación de formularios de Windows con Visual Basic, construida alrededor de un objeto de la clase WebBrowser que permite mostrar en su interior páginas web y también interactuar con las páginas visitadas. Se trata de una clase muy madura que apareció en NET Framework 2, fácil de utilizar y con muchos textos de ayuda en Internet.
Pero tiene el inconveniente de que, por su antigüedad, utiliza el motor de renderizado de Internet Explorer, navegador actualmente obsoleto incluso para la propia Microsoft. En teoría renderiza con la versión de Internet Explorer que tengamos instalada en el sistema pero en la práctica parece mostrar las características de Internet Explorer 7 salvo que se manipule el registro para forzar a nuestra aplicación a utilizar el motor de la versión más moderna que es la 11 a condición de que la tengamos instalada (las instrucciones para hacerlo están en el artículo 2 de los referidos al principio del texto).

Continuar leyendo «Navegador web en C# (3)»

Listado recursivo en C# y VB

Listar de forma recursiva todos los archivos de un directorio y de los subdirectorios que contiene, informando del tiempo requerido para la tarea, con botones para ordenar la lista de forma ascendente o descendente, en Visual Studio 2017 con C# y VB

Damián Castroviejo tiene un ejercicio titulado «How to use a recursive function to read a directory structure and save it to XML» cuyo código consigue listar adecuadamente de forma recursiva los archivos de un directorio y de sus subdirectorios y guardar la estructura de archivos y carpetas en un archivo XML. Aplicando la función recursiva propuesta por Damián Castroviejo, en este ejercicio se rellena un control ListBox con todos los archivos existentes en una carpeta determinada.

Continuar leyendo «Listado recursivo en C# y VB»

DataGrid en ASP .NET con C# y VB

Mostrar una base de datos de Microsoft Access dentro de una página ASPX en un DataGrid con paginación para mostrar en cada página un número limitado y definido de registros y desplazarse entre las distintas páginas mediante botones de navegación, en Visual Studio 2017 con C# y VB

En este ejercicio nos conectamos con una base de datos de Microsoft Access y, por código, creamos un DataGrid en el que se activa la paginación. El DataGrid tiene opciones de configuración del número de registros por página, número de botones de navegación y su posición, botones numéricos o de flecha, diseño (tipo de fuente, colores de fondo, bordes, formato diferente en cabecera, cuerpo y pie, anchura de las columnas), etc.

Continuar leyendo «DataGrid en ASP .NET con C# y VB»

Regiones GDI+ en C# y VB

Capturar la ventana completa del formulario con o sin decoración (área cliente) o una región que se corresponde con un control PictureBox usando GDI+ mediante objetos Graphics de origen y destino y la función BitBlt que combina 2 mapas de bits en uno solo, en C# y VB

En un artículo anterior se mostraba cómo aplicar un recorte circular a la imagen de un control PictureBox para que la imagen se vea redondeada. He ampliado el ejercicio continuando con GDI (Graphics Device Interface). GDI es es uno de los tres componentes de la interfaz de usuario de Microsoft Windows. Trabaja junto con el núcleo y la API de Windows.

Este ejercicio añade la funcionalidad de captura de pantalla usando métodos de las clases de GDI+ explicando cómo hacer para capturar la ventana de la aplicación completa (con bordes y decoraciones), la ventana sin decoración (lo que se llama área cliente del formulario) o una región específica de la ventana, la de un control PictureBox de imagen redondeada, y guardar los resultados como imagen JPG en el directorio del ensamblado. Estas imágenes JPG se muestran en un formulario nuevo.

Continuar leyendo «Regiones GDI+ en C# y VB»

Formularios con forma en C# y VB

Aplicar regiones a un formulario usando objetos GraphicsPath.AddLine y GraphicsPath.AddEllipse para recortar el área del formulario y cambiar la forma de la ventana, en Visual Studio 2017 con C# y VB

Utilizando objetos de la clase GraphicsPath y aplicando regiones de recorte es sencillo modificar la forma de la ventana de un formulario. Podemos darle prácticamente cualquier aspecto pero, por sencillez del código, en este ejercicio nos restringiremos a 3 formas, círculo, rombo y polígono, usando regiones de recorte con el aspecto deseado.

GraphicsPath del espacio de nombres System.Drawing.Drawing2D representa una serie de líneas y curvas conectadas. La base del ejercicio es:

  • ventana redondeada: en el evento Paint de un PictureBox o del formulario se dibuja sobre GraphicsPath una región de recorte de forma circular con el método AddEllipse y se convierte en la región visible del formulario
  • ventana romboidal y poligonal: en el evento Load del formulario se van añadiendo líneas definidas por su punto x.y de inicio y de final con coordenadas absolutas calculadas respecto a la ventana visible del formulario. Cada segmento de línea se añade con GraphicsPath.AddLine(Int32, Int32, Int32, Int32) a la figura actual.
Continuar leyendo «Formularios con forma en C# y VB»

Foto desde un botón en Java

Mostrar imágenes al pulsar botones en una ventana JFrame que implementa la interfaz ActionListener, detectar la pulsación del botón como un evento de acción (ActionEvent) y llamar a la acción prevista con el método actionPerformed,en Java

Introducción: responder a las acciones del usuario

Las aplicaciones han de responder a las acciones que realiza el usuario, por ejemplo: cerrar la ventana al pulsar un botón. Es necesario poder detectar las acciones de usuario y convertirlas en acciones de programa. Java dispone de varias formas de implementar este funcionamiento. En este ejercicio se mostrarán algunas de ellas. Todas se basan en el uso de Interfaces. Las Interfaces son clases “prefabricadas” con propósitos definidos
Cada Interface contiene declaraciones de métodos (nombre del método, lista de argumentos y tipo de retorno) pero estos métodos no están implementados (carecen de cuerpo) y deben ser desarrollados. Todos los métodos de las Interfaces son public. Las Interfaces también pueden declarar constantes (public final static).
En Java no existe la herencia múltiple como tal: una clase no puede heredar (extends) de más de una clase. Pero una clase puede implementar más de una Interface, ésta es una manera de tener herencia múltiple. En la clase que implementa una Interface han de ser sobrescritos (override) todos los métodos declarados en la Interface.

Continuar leyendo «Foto desde un botón en Java»

Microsoft Access en Java (2)

Conectar con una base de datos de Microsoft Access mediante el controlador JDBC UCanAccess, emitir sentencias SQL a la base de datos y mostrar los resultados, ejecutar el programa desde línea de comandos junto con las dependencias, crear archivos de comando para ejecutar el programa; ejercicio de Java para consola

Desde Java 8 la conexión JDBC-ODBC ya no se incluye en Java. Existen algunos controladores JDBC propietarios para conectar con MS Access pero el proyecto UCanAccess está activo actualmente, es open source y proporciona un controlador JDBC generado sobre código de Jackcess.
UCanAccess funciona bien y es sencillo de utilizar. El dato más remarcable es el de las dependencias que requiere que en la versión actual 4.0.1 son: ucanaccess-4.0.1, hsqldb-2.3.1, jackcess-2.1.6, commons-logging-1.1.1 y commons-lang-2.6.

Jackcess a diferencia de UCanAccess es una librería de código Java diseñada para leer y escribir bases de datos de MS Access que no es un controlador JDBC sino una implementación directa de las características disponibles para interactuar con bases de datos de MS Access. Su licencia es del tipo Apache License.

Continuar leyendo «Microsoft Access en Java (2)»

Microsoft Access en Java (1)

Conectar con una base de datos de Microsoft Access por medio del puente JDBC-ODBC configurando el origen de los datos en el panel de control ODBC de 32 bits mostrando los registros obtenidos desde consultas SQL con Java 7

Requisitos previos

El puente JDBC-ODBC ha dejado de estar disponible en Java 8 por lo que para poder utilizarlo hay que tener Java 7 o versión anterior. Aunque se trata de un método obsoleto y poco eficiente de acceder a bases de datos de Microsoft Access desde Java, todavía hay usuarios que lo utilizan y que no desean migrar sus programas a controladores propios del lenguaje, libres (ucanaccess, jackcess…) o comerciales.

En Windows 10 están disponibles en las herramientas administrativas los paneles de control ODBC. Hay 2 versiones, para 32 y para 64 bits. Microsoft Access usa un controlador de 32 bits por lo que se necesita instalar Java 7 para 32 bits y abrir el panel ODBC de 32 bits, sin estos 2 requisitos falla el acceso a las bases de datos (BD) desde Java por este método. El panel ODBC se puede encontrar en las herramientas administrativas o tecleando en el menú Inicio > Buscar «Orígenes de datos…» que muestra las 2 opciones:

  • Orígenes de datos ODBC (32 bits)
  • Orígenes de datos ODBC (64 bits).
Continuar leyendo «Microsoft Access en Java (1)»

Navegador web en VB (2)

Navegador Web usando la clase WebBrowser, configurando 2 idiomas diferentes (es-ES y en-US) que se guardan en My.Settings, cambiando de idioma sin reiniciar la aplicación, mostrando el código HTML de la página que se visita en un segundo formulario y almacenando el historial en un archivo de texto entre sesiones, en Visual Studio 2017

Continuando el ejercicio anterior (aquí) se completa con las propuestas de localización e internacionalización del programa. Se añade un formulario de opciones que permite configurar el programa, tanto en lo que respecta al arranque en ventana o pantalla completa como a la hora de cambiar el idioma utilizado (restringido a 2: español e inglés). También se añade un formulario que muestra el código HTML de la página web que se está visitando.

Continuar leyendo «Navegador web en VB (2)»