DataGrid para imprimir con Crystal Reports en C# y VB

Desde un archivo XML se rellena un DataGrid cuyas columnas se crean por código configurando parámetros como la anchura de cada columna, con filtros de selección de registros basados en sentencias SQL y 2 opciones diferentes para imprimir los datos: mediante un informe de Crystal Reports o efectuando una transformación XSL al archivo origen de los datos para obtener una página HTML con formato, en C# y VB

El formulario principal tiene un DataGrid con las 4 columnas de la tabla obtenida desde un archivo XML que tiene 4 elementos: Id, Apellidos, Nombre y Cargo.

Continuar leyendo «DataGrid para imprimir con Crystal Reports en C# y VB»

Deslimitar Specialized Turbo Levo 2018 y 2019

Modificar el límite de velocidad de la bicicleta eléctrica Specialized Turbo Levo modelos año 2018 y 2019 para poder superarlo con el motor activo usando LightBlue Explorer (BLE ) o BLEvo for Smart Turbo Levo

Nota sobre el modelo 2019

El artículo original refería al modelo 2018 de esta bicicleta y al software LightBlue Explorer (BLE) de Punch Through. Este método no funcionaba con el modelo 2019. Para más complicación, las versiones recientes de la app Mission Control habían perdido la opción de modificar el diámetro de la rueda y alterar la velocidad máxima permitida con motor.
Pero utilizando otro software llamado BLEvo for Smart Turbo Levo de Paolo Dozio es posible realizar esta modificación en los modelos 2018 y también en los modelos 2019. BLEvo a diferencia de BLE no es gratuita pero las opciones que ofrece y sus características compensan el pago al comprarla. Su interfaz no es demasiado elegante pero su funcionamiento es óptimo. Dejando aparte otras muchas características y centrándonos en la que nos ocupa, esta app permite modificar o bien el diámetro de la rueda o bien la velocidad de corte del motor. El fin obtenido es el mismo con cualquiera de las 2 configuraciones.

Turbo Levo modelo 2018

Specialized tiene el que para mí es el mejor modelo de bicicleta eléctrica de montaña con suspensión doble, la Turbo Levo FSR. Hay varios modelos con precios y calidades diferentes pero todos llevan batería integrada en el tubo diagonal y motor central integrado en la zona del pedalier. Son bicicletas que se manejan perfectamente por la montaña a pesar de su peso en parado que es muy superior al de las bicicletas sin motor.

Continuar leyendo «Deslimitar Specialized Turbo Levo 2018 y 2019»

Aplicaciones de 64 bits con Acces en VS y Office 2019

Configurar proyectos de bases de datos de Microsoft Access en sistemas con la versión de 64 bits de Office 2019 para que los proyectos también se compilen y ejecuten a 64 bits, en Visual Studio 2019

En muchos sistemas conviven versiones de 32 bits de Visual Studio y de Microsoft Office. En esas circunstancias, para diseñar proyectos que utilizan bases de datos de Access es obligatorio configurar los proyectos para que compilen y ejecuten en el modo de 32 bits ya que el componente (Access Database Engine – Componente redistribuible del motor de base de datos de Microsoft Access) que permite interoperar entre los programas de Office y otras aplicaciones como Visual Studio también es de 32 bits al tener que coincidir con la plataforma de Office.

Continuar leyendo «Aplicaciones de 64 bits con Acces en VS y Office 2019»

Navegador web con el control WebView 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 con el control WebView en C# (3)»

Listado recursivo de un directorio 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 de un directorio en C# y VB»

DataGrid con paginación 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 con paginación en ASP .NET con C# y VB»

Capturar con GDI+ las regiones del formulario 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 «Capturar con GDI+ las regiones del formulario en C# y VB»

Formulario redondeado, romboidal y poligonal 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 «Formulario redondeado, romboidal y poligonal en C# y VB»

Mostrar fotos desde botones 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 «Mostrar fotos desde botones en Java»