Mar 182021
 

En este caso se trata por un lado de un Módulo clase y por otro un Usercontrol para crear una interfaz de usuario moderna llamada Neumorphism o Neomorfismo, la cual comenzó a ponerse de moda a partir del 2020, si bien está pensada para aplicaciones móviles o webs no veo motivo para no implementarlo en nuestro querido vb6, al menos en aplicaciones pequeñas para no sobrecargar mucho la memoria y ralentizar nuestra app. El motor de todo esta basado en GDI+.

Con el módulo clase hay un ejemplo donde podemos jugar con las propiedades de la clase y otro formularios con algunos ejemplos graficados.
Además este permite dibujar un Path de GDI+ con el cual se utilizó un módulo extra, donde se puede crear distintas formas (Shapes) y se les puede aplicar el estilo, aprovecho para agradecer a Eduardo por tomar parte de las rutinas de su ShapeEx.



Con el Usercontrol hay tres ejemplos aplicados. No voy a detallar todas las propiedades, es cuestión de meter mano y jugar un poco, son las mismas del módulo. Con los ejemplos esta acompañando el usercontrol «LabelPlus» que es para agregar texto e iconos a las formas, (no quise volver a programar todo esto por eso utilicé dos usercontrols).

Ya más adelante voy a subir un reproductor de música en el que estoy trabajando donde puede verse todo esto aplicado.

Por último quiero aclarar que todo esto funciona más rápido cuando está compilado..

Neumorphism1.png Neumorphism2.png Neumorphism3.png Neumorphism4.png Neumorphism5.png
Mar 012021
 

Hola en esta ocasión un poco más de lo mismo ya en el blog hay 3 artículos más referidos a menús, pero bien, esta clase se trata de armar un menú popup con apis de una forma más sencilla y con varias propiedades que vb6 no contiene, algunas de ellas son: ItemBitmap, ItemRadioCheck, ItemDefault, ItemHilite, ítems en columna (Break).

Como plus hay un módulo que sirve para leer imágenes, con un tamaño específico, esto esta pensado más que nada para soporte del DPI.

Dentro del módulo está la función llamada LoadPictureEx con la que podemos pasarle como primer parámetro:

  • Un Array de bits de la imagen
  • El path de la imagen
  • Una Url web de la imagen
  • Una url con la imagen codificada en ella «data:image/png;base64,iVBORw…»
  • Un objeto Stream (devuelto por algunas librerías de windows)
  • Un hBitmap
  • un hIcon

El segundo y tercer parámetro es el alto y ancho de la imagen. El tercero boolean si queremos que se ajuste a ese ancho o que sea proporcional. El cuarto parámetro el formato de salida vbPicTypeBitmap o vbPicTypeIcon. El quinto parámetro es un color, para esas imágenes tipo vectoriales de un solo color, con esta función podemos pintarlas a ese color (aclaro no tiene soporte para SVG). El sexto parámetro BackColor, sería por si es un png y lo queremos mostrar en un control imagen, elegimos su color de fondo.

la función retorna un iPicture o StdPicture con un Bitmap o Icono con una imagen de 32Bits de profundidad, la cual sirve para pasar a los common controls. y el menú por supuesto. también se pude utilizar con el icono del formulario con SendMenssage, el SysTray etc etc etc.

ClsApiMenu.png
Dic 192020
 

Este proyecto me lo compartió el colega J. Elihu quien fue que lo trabajo, así que les dejo como descripción su propio Readme.txt para que entiendan mejor. Se los recomiendo!

CONTENIDO:

  1. ¿Que es vbSqlite?
  2. Caracteristicas
  3. ¿Como usar?
  4. Licencia

  1. ¿Qué es vbSqlite3?

SQlite3 + VB6: vbSqlite3 es un envoltorio (ligero,entendible) que permite
integrar el motor de base de datos de SQlite con las aplicaciones de VB6
Todo estos sin generar dependencias (ODBC, ADO y DLL’s activex) y usando
las versiones actuales del MDB de SQlite3.

REQUERIMIENTOS

- Sqlite3.dll   -> MDB de Sqlite.
- cLib      -> Conectar Sqlite3.dll + VB6.
- cSqlite   -> Conexión a la base de datos.
- cSqliteCursor -> Manejador de consultas a la base de datos.

CREDITOS

- Cobein   (mSqlite.bas)
- Cocus    (cSQLiteConnection.cls)
- Cocus    (cSQLiteRecordset.cls)

  1. Caracteristicas

vbSqlite3 implementa todas las funciones requeridas para una conexión con
el motor de base de datos de SQlite, adicionalmente implementa rutinas,
propiedades y funciones que facilitan su uso y claro entendimiento.
El envoltorio permite:

- Ejecutar commandos SQL de SQlite.
- Adjuntar varias bases de datos a una conexión de SQlite.
- Copia de seguridad de la 'db' (backup).
- Eliminar los espacios en blanco de la 'db' (vacuum)
- Configurar el modo WAL de la 'db'
- Cambiar la codificación de la 'db'
- Activar/Desactivar la restrición de claves foraneas.
- Cambiar el modo de sincronización de la 'db'.
- Obtener el código y mensaje de error.
- Insertar/Actualizar datos mediante un objeto de consulta
  (cSqliteCursor) - (Sqlite_bind_*).
- Reestablecer los objetos de consulta (reset).
- Obtener los campos BLOB de una consulta.
- Adjuntar datos a una declaracion preparada (Sqlite_bind_*).
- Obtener la ID del ultmio registro insertado.
- Obtener la cantidad de registros afectados por una consulta.
- Ejecutar transacciones desde una coleccion de sentencias SQL.
- Obtener y establecer la version de usuario(UserVersion).
- Crear multiples instancias de conexión (cSqlite).
- Cargar la libreria de SQlite desde una ruta personalizada.

Las actualizaciones posteriores del envoltorio pueden incluir nuevas
características y funciones.


  1. ¿Como usar?

Se incluye la demo en el proyecto como guia de incio rápido para el uso del
envoltorio.

1 - Incluya Sqlite3.dll en la carpeta de su proyecto, o en la carpeta
    System32, o cargue la dll desde una ruta personalizada.
2 - Cree una nueva instancia de cSqlite y establezca la conexión.
3 - Llame a cSqlite.Execute para ejecutar sentencias SQL.
4 - Llame a cSqlite.Query para instanciar un nuevo objeto de consulta.
5 - Para interactuar con el objeto de consulta, segun el caso, llame a: 
    cSqliteCursor.Step
    cSqliteCursor.Value
    cSqliteCursor.BLOB
    cSqliteCursor.Bind
    cSqliteCursor.Reset
6 - Para finalizar la conexión, destruya primero la instancia del
    objeto de consulta (cSqliteCursor) y luego la instancia de la
    conexión(cSqlite).

Para Añadir/Actualizar/Remover datos mediante un objecto de declaracion
preparada debe usar la rutina: ‘cSqliteCursor.Bind’. Para mayor información
consultar la documentacion oficial: https://www.sqlite.org/docs.html


  1. Licencia

  - El envoltorio 'vbSqlite3' es gratuito.
- El envoltorio es de propiedad del autor.
- Se puede editar/cambiar/redistribuir el codigo manteniendo los
  creditos del autor.
- Se permite redistribuir el codigo fuente siempre que no se cobra
  ninguna tarifa.

J. Elihu
E-mail: elihulgst.10@gmail.com

vbsqlite3_1.jfif
vbsqlite3_2.jfif
vbsqlite3_3.jfif
Sep 012020
 

Se trata de una suite de user controls, para crear gráficos estadísticos. Son cuatro controles pero algunos poseen estilos diferentes, se podría decir que están los principales y más utilizados. Cada user control es independiente del otro, por lo que no requiere implementar toda la suite, por supuesto esto no lo hace más óptimo en reducción de código, pero es esa costumbre de no depender de nada, son muchas lineas de código y seguramente habrá más de algún bugs dando vuelta, por mi parte creo que hasta aquí llegaron mis ganas con esto, por supuesto que si alguien encuentra algún error o sugerencia se agradece informar para corregirlo.

En la descarga se encuentra un ejemplo de cada uno y un proyecto principal que abarca todos y algunos agregados para simular un Dashboard.

DashBoard.png
PieChart.png
DonutChart.png
BarChart1.png
BarChart2.png
AreaChart.png
TreeMaps.png
TreeMaps2.png
May 042020
 

En este caso se trata de otra Api de Google con la que podes hacer gráficos interactivos de distintos tipos, cuando digo interactivos sólo me refiero a que tienen un pequeño efecto al pasar el mouse sobre los distintos trazos del gráfico. Si bien esto está pensado más para páginas web, puede sernos útil en casos puntuales, en ese punto cada quien decide si le es para suyo. El usercontrol internamente crea un WebBrowser para invocar a esta Api. Cuenta con soporte para DPI. De más está decir que requiere internet para cargar el gráfico; también aclaro que como yo lo propuse no está pensado para cambiar los datos en tiempo real, es decir se carga el gráfico con los datos y no se puede modificar sus rangos, para ello es necesario volverlo a cargar todo. Les recomiendo descargarlo y echarle un vistazo a cómo funciona.

Requerimientos:
– Internet Explorer 11
– Conosimiento del API de Google Charts

GoogleCharts1.png
GoogleCharts2.png
GoogleCharts3.png

 Posted by at 0:03
Abr 292020
 

Esta es una versión de este control el cual carecía de la barra de progreso para mostrar un porcentaje era más bien de esos que sólo giran. En esta versión se puede hacer ambas cosas, pero está más abocada a mostrar el progreso, prácticamente con un poco de ingenio se pueden lograr todos los diseños que se ven por la web de este tipo de controles tal como se muestra en la primer imágen; la segunda imágen es la página de propiedades del usercontrol, este sirve sólo para formar una paleta degradada de colores, donde podemos seleccionar y armar nuestra paleta a gusto. el control cuenta con muchas propiedades por lo que es necesario que metan mano y jueguen con éste para aprender para qué sirve cada una, yo no tengo ganas de hacer un archivo de ayuda :), pero mirando los ejemplos es fácil darse cuenta para qué sirve cada una.

ucProgressCircular2020.png
ucProgressCircular2020.png

21/09/21 Actualizado, se corrigió un error en la pagina de propiedades, al cargar el control en otro proyecto fallaba la el método de obtener el nombre del proyecto. Gracias Eduardo por la función GetProjectName

Mar 172020
 

Hola, se trata de un módulo clase que sirve para automatizar whatsApp por medio del Navegador MS Edge + Javascript y VB6 a travez de web.whatsapp.com , no sé si es el caso pero creo que se puede llamar web scraping, este tipo de técnica no suelen durar mucho ya que si WhatsApp cambia parte del contenido html de su web este módulo puede quedar inservible, es para disfrutarlo mientras dure, luego si hay cambios tendrás que buscar la manera de actualizarlo.

Esto puede ser muy útil si se sabe aprovechar, podemos leer y
enviar mensajes de texto, obtener lista de contactos, números telefónicos, foto de perfil y otras.

Es importante aclarar que este módulo requiere Windows 10 y MS Edge (html version) aclaro de html version ya que en estos días Microsoft ha actualizado MS Edge a una versión que utiliza el motor de Chromium, y este no se puede automatizar, la versión clásica de MS Edge utilizaba el motor de Internet Explorer, por eso es que se puede automatizar, el motivo de utilizar Edge y no Internet Explorer es porque éste último no es aceptado por Web.Whatsapp.com, la versión de Chromium aún no es una actualizacion global de windows pero seguramente con el tiempo sea global, no se preocupen se puede volver a la versión html , siguiendo estos pasos como ven pueden tener ambas versiones si así lo desean. ACLARO NO REQUIERE SELENIUM

En la descarga se incluye el módulo y un pequeño ejemplo de uso (recalco es sólo un ejemplo no tiene utilidad alguna), a modo de comentario he realizado un aplicativo utilizando este módulo que sirve para solicitar turnos mediante whatsapp, aún no sé si lo voy a publicar, este funciona mediantes comandos de palabras, algo así como una inteligencia artificial pero de muy muy bajo nivel 🙂 en donde el cliente solicita un turno, la aplicación verifica si está disponible, lo almacena en una base de datos y le envía un mensaje que su turno ha sido reservado.

Para el ejemplo he utilizado un OCX, deben registrarlo (con permisos de administrador); utilice el ocx porque como muchos nombres y palabras utilizan caracteres unicodes lo que incluye los Emojis, si utilizan los controles comunes de vb estos se verían mal e inclusive no funcionaria bien la aplicación.

WhatsApp.png

 Posted by at 18:37