En esta sección vamos a crear la ventana de configuración para guardar las configuraciones de nuestra aplicación estos datos se guardan en un archivo INI
Colabora y Suscribete a mi canal de
En este archivos guardaremos el tipo de impresora que usaremos para la facturación, para los informes y para el cuadre de caja ya que podremos querer imprimir la factura en una impresora de ticket y los informes en un impresora normal.
Esta es la ventana de configuración de mi software:
A medida que vayamos completando el software iremos implementando configuraciones en nuestra ventana.
Por ahora la ventana debe tener los siguientes controles:
El primer paso es crear un archivo llamado configuracion.ini en la carpeta de nuestro proyecto.
El siguiente paso es crear un variable a nivel de modulos llamada Path_Archivo_Ini de tipo String en mi caso he puesto esta variable en el modulo mod_Conexion
También creamos 3 variables para guardar las tres configuraciones que vamos a tener para la impresora que vamos a utilizar:
Global Path_Archivo_Ini As String '-------------- Variables Configuracion --------------- Global glob_conf_ImpreFacturacion As String Global glob_conf_ImpreInformes As String Global glob_conf_ImpreCierreCaja As String
Modificamos el procedimiento de UbicacionDb y agregamos la linea que le va a pasar la ubicación del archivo INI
Sub UbicacionDb() DireccionDb = GLeerArchivo(App.Path & "\url.txt") Path_Archivo_Ini = App.Path & "\configuracion.ini" End Sub
Para poder Leer y escribir archivos ini debemos utilizar la API de Windows y para eso debemos ingresar el siguiente código en el modulo mod_Funciones
Función api que recupera un valor-dato de un archivo Ini Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" ( _ ByVal lpApplicationName As String, _ ByVal lpKeyName As String, _ ByVal lpDefault As String, _ ByVal lpReturnedString As String, _ ByVal nSize As Long, _ ByVal lpFileName As String) As Long 'Función api que Escribe un valor - dato en un archivo Ini Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" ( _ ByVal lpApplicationName As String, _ ByVal lpKeyName As String, _ ByVal lpString As String, _ ByVal lpFileName As String) As Long 'Lee un dato _----------------------------- 'Recibe la ruta del archivo, la clave a leer y _ el valor por defecto en caso de que la Key no exista Public Function Leer_Ini(Path_INI As String, key As String, Default As Variant) As String Dim bufer As String * 256 Dim Len_Value As Long Len_Value = GetPrivateProfileString(APPLICATION, _ key, _ Default, _ bufer, _ Len(bufer), _ Path_INI) Leer_Ini = Left$(bufer, Len_Value) End Function 'Escribe un dato en el INI _ ----------------------------- 'Recibe la ruta del archivo, La clave a escribir y el valor a añadir en dicha clave Public Function Grabar_Ini(Path_INI As String, key As String, Valor As Variant) As String WritePrivateProfileString APPLICATION, _ key, _ Valor, _ Path_INI End Function
En el código anterior se llaman a dos funciones de la API de windows GetPrivateProfileString y WritePrivateProfileString y se crear dos funciones personalizadas para grabar y leer el archivo INI.
El siguiente paso es crear el formulario con los siguientes controles:
cmdImpFacturacion = ComboBox
cmbImpInformes = ComboBox
cmbImpCierreCaja = ComboBox
cmdGuardar = CommandButton
cmdCerrar= CommandButton
El primer paso en el formulario es llenar los ComboBox con la lista de impresoras que tienen instaladas en su computador para eso se usa el código siguiente:
Public Function Obtener_Impresoras() Dim I As Integer ' recorre las impresoras del sistema y las añade a la lista For I = 0 To Printers.Count - 1 cmdImpFacturacion.AddItem Printers(I).DeviceName cmbImpInformes.AddItem Printers(I).DeviceName cmbImpCierreCaja.AddItem Printers(I).DeviceName Next cmdImpFacturacion.ListIndex = 0 cmbImpInformes.ListIndex = 0 cmbImpCierreCaja.ListIndex = 0 End Function
En el codigo anterior recorremos todas las impresoras usando un For desde cero hasta Printers.Count – 1 que es el que tiene la cantidad de impresoras.
Luego se pasa el index a Printers(I).DeviceName y se obtiene el nombre de la impresora es muy fácil hacer esta parte no tiene mucha explicación.
En esta sola función estamos llenando los 3 ComboBox
El siguiente paso es crear un procedimiento para guardar las impresoras seleccionadas en el archivo INI
Primero en el evento clic del botón guardar va el siguiente código:
Private Sub cmdGuardar_Click() Call GuardarConfiguracion End Sub
Luego el procedimiento GuardarConfiguracion
Sub GuardarConfiguracion() Call Grabar_Ini(Path_Archivo_Ini, "ImpreFacturacion", cmdImpFacturacion.Text) Call Grabar_Ini(Path_Archivo_Ini, "ImpreInformes", cmbImpInformes.Text) Call Grabar_Ini(Path_Archivo_Ini, "ImpreCierreCaja", cmbImpCierreCaja.Text) End Sub
Para grabar una lineas en el archivo INI se usa la función Grabar_Ini que tiene 3 parámetros: 1- la ubicación del archivo, La variable o key (no debe tener espacios ni signos) con se va a guardar el dato y el ultimo el valor que vamos a guardar. Al guardar el archivo INI se ve asi:
El siguiente paso es poner publica esa información que guardamos para que quede visible para todo el proyecto para eso usamos las variables globales que ya declaramos, para eso es el siguiente código:
'cuando se guardar se almacen en una variable global para poder accedes desde cualquier lugar del proyecto glob_conf_ImpreFacturacion = cmdImpFacturacion.Text glob_conf_ImpreInformes = cmbImpInformes.Text glob_conf_ImpreCierreCaja = cmbImpCierreCaja.Text
quedando así:
Sub GuardarConfiguracion() Call Grabar_Ini(Path_Archivo_Ini, "ImpreFacturacion", cmdImpFacturacion.Text) Call Grabar_Ini(Path_Archivo_Ini, "ImpreInformes", cmbImpInformes.Text) Call Grabar_Ini(Path_Archivo_Ini, "ImpreCierreCaja", cmbImpCierreCaja.Text) 'cuando se guardar se almacen en una variable global para poder accedes desde cualquier lugar del proyecto glob_conf_ImpreFacturacion = cmdImpFacturacion.Text glob_conf_ImpreInformes = cmbImpInformes.Text glob_conf_ImpreCierreCaja = cmbImpCierreCaja.Text End Sub
Bueno ahora queremos que al abrir el formulario de configuración me cargue los datos que tiene el archivo INI para eso usamos el procedimiento siguiente:
Sub CargarDatosConfiguracion() cmdImpFacturacion.Text = Leer_Ini(Path_Archivo_Ini, "ImpreFacturacion", "") cmbImpInformes.Text = Leer_Ini(Path_Archivo_Ini, "ImpreInformes", "") cmbImpCierreCaja.Text = Leer_Ini(Path_Archivo_Ini, "ImpreCierreCaja", "") End Sub
La función Leer_INI requiere de 3 parámetros: el primero es la ubicación del archivo, la segunda es la variable o key que necesitamos y el ultimo es un valor predeterminado en caso de que no exista el key en el archivo.
El ultimo paso es hacer que nuestra aplicación cuando inicie cargue la información del archivo INI para que quede disponible como por ejemplo cual es la impresora que se usa para imprimir las facturas para eso debemos acceder al archivo INI cuando abre el formulario frmPrincipal.
Primero se crea la función que lee la información en el modulo mod_Consultas:
Sub CargarDatosConfiguracion() impFacturacion = Leer_Ini(Path_Archivo_Ini, "ImpreFacturacion", "") If impFacturacion <> "" Then cmdImpFacturacion.Text = impFacturacion End If ImpInformes = Leer_Ini(Path_Archivo_Ini, "ImpreInformes", "") If ImpInformes <> "" Then cmbImpInformes.Text = ImpInformes End If ImpCierreCaja = Leer_Ini(Path_Archivo_Ini, "ImpreCierreCaja", "") If ImpCierreCaja <> "" Then cmbImpCierreCaja.Text = ImpCierreCaja End If End Sub
En este código se esta leyendo cada variable del archivo INI y guardándola en la variable globlal así cuando se necesita saber con que impresora imprimir la factura simplemente se toma la variable glob_conf_ImpreFacturaciont.
Nos falta agregar al menú este formulario, en el formulario frmPrincipal nos vamos al menú y damos clic en Opciones – Configuración si no tiene el item en el menú lo crean como mnuConfiguracion. Si no recuerdan como pueden irse a la lección Parte 6 – Inserción de datos en la base de datos, y uso de datos Encriptados, Login
Y luego colocamos el código para abrir la ventana de configuración:
Private Sub mnuConfiguracion_Click() frmConfiguracion.Show End Sub
Con esto ya tenemos todo listo para hacer la factura de ticket por que ya podemos escoger la impresora con la que deseamos imprimir.
Suscribete a Youtube
Siguenos en Twitter
Siguenos en Facebook
(1) Comment