Parte 13 Creación de la Ventana de Tipos de Usuario, uso del control MSHFlexGrid

En este vídeo creamos la Ventana de Tipos de Usuario y enseño el uso del control MSHFlexGrid (Microsoft Hierarchical Flexgrid) este control se usa para mostrar información en forma de tabla de Datos, su uso es muy fácil solo se conecta por la propiedades DataMember y DataSource usando un Recorset.

En Nuestro ejemplo conectamos a una tabla Llamada tiposUsuario  de la siguiente manera.

Dim RecorsetTemp As New ADODB.Recordset

Sql = "Select IdNivelUsuario, nombre_tipo From TiposUsuario Order By nombre_tipo ASC "
RecorsetTemp.Open Sql, ConexionADO, adOpenStatic, adLockReadOnly

Grid.DataMember = RecorsetTemp.DataMember
Set Grid.DataSource = RecorsetTemp.DataSource

La ventana que estamos trabajando es para administra los tipos de usuario que manejara el software. Cada usuario dependiendo de tipo puede acceder a opciones del software que otro no podrán ejemplo:

El Administrador tiene acceso a todo, pero el caso del vendedor solo tiene acceso a hacer ventas, entonces en esta ventana configuraremos los accesos para cada usuario.

Siguiente con el desarrollo del software se crearon los siguientes sub procedimientos:

Sub LlenarGridTiposUs()
    Dim Sql As String
    Dim Columnas As Integer
    Columnas = 2
    Sql = "Select IdNivelUsuario, nombre_tipo From TiposUsuario Order By nombre_tipo ASC "
    Call LlenarGrid(msGrid, Sql, Columnas)
    
    
    msGrid.ColWidth(0) = 0
    msGrid.ColWidth(1) = 1100
    msGrid.ColWidth(2) = 4000

    msGrid.TextMatrix(0, 1) = "ID"
    msGrid.TextMatrix(0, 2) = "Nombre Tipo"
    
    
End Sub

El llenarGrisTiposUs se usa para hacer la consulta a la tabla y pasar esa consulta al sub procedimiento de llenar LlenarGrid que recibe 3 parámetros:

  1. msGrid: que es el nombre del control MshFlexGrid que usamos en nuestro caso lo renombramos a msGrid
  2. Sql: es la consulta que le vamos a pasar al procedimiento para que llene el grid
  3. Columnas: es el numero de columnas que va a manejar el Grid

Este sub procedimiento se coloco en el modulo mod_consultas. El código del  sub procedimiento LlenarGrid() es este:

Sub LlenarGrid(Grid As MSHFlexGrid, Sql As String, TotalColum As Integer)
    Dim RecorsetTemp As New ADODB.Recordset
    
    RecorsetTemp.Open Sql, ConexionADO, adOpenStatic, adLockReadOnly
    
    Grid.Redraw = False 'desactivamos el repintado en pantalla
    Grid.FixedRows = 0
    Grid.Rows = 0
        
        
    Grid.DataMember = RecorsetTemp.DataMember
    Set Grid.DataSource = RecorsetTemp.DataSource 'vinculamos con el recorset
    
        
    Grid.AddItem "", 0 'se agrega una fila al grid
    If Grid.Row > 1 Then Grid.FixedRows = 1 'si hay mas de un registro se habilita el titulo
    
    'recorre las celdas del titulo del grid y le da color
    For I = 1 To TotalColum
        Grid.Row = 0
        Grid.Col = I 'va recorriendo las celdas de la primera fila
        Grid.CellBackColor = &H8C5828 'color azul para el fondo
        Grid.CellAlignment = flexAlignCenterCenter 'texto centrado
        Grid.CellForeColor = vbWhite 'color blanco para el texto
        Grid.CellFontBold = True 'Negrita
    Next I
    
    
    'este recorrido es para colorear filas pares en el grid para darle una mejor vista al usuario
    For fila = 1 To Grid.Rows - 1
        Grid.Row = fila
        If fila Mod 2 = 0 Then 'si la fila tiene como modulo 2 entonces es un numero par
            For I = 1 To TotalColum
                Grid.Col = I
                Grid.CellBackColor = &HFEEEDD 'color de fondo para la celda
            Next I
        End If
    Next fila
    
    Grid.Redraw = True 'se habilita el repintado
    
End Sub

Se vería de la siguiente manera:

Se quiere que al dar doble clic sobre una de las filas del grid se puede editar el tipo de usuario para eso se creo un sub procedimiento:

Dim IdTipoUsuario

Sub EditarTipo()
    If msGrid.Row > 0 Then
       IdTipoUsuario = msGrid.TextMatrix(msGrid.Row, 1)
       txtNombreTipo = msGrid.TextMatrix(msGrid.Row, 2)
    End If
End Sub

Private Sub msGrid_DblClick()
    Call EditarTipo
End Sub

Para guardar el Tipo de Usuario se tiene en cuenta el valor de la variable IdTipoUsuario si es = 0 quiere decir que es un nuevo registro y es mayo a cero quiere decir que se va a actualizar.

Después de guardar se llama al evento Clic del botón nuevo que lo que hace es limpiar el textbox y llamar al sub procedimiento de LlenarGridTiposUs

Sub GuardarTipoUsuario()

    If txtNombreTipo = "" Then
       MsgBox "Debe llenar el nombre del tipo de usuario", vbExclamation, "Error"
       Exit Sub
    End If
    If IdTipoUsuario = 0 Then
        IdTipoUsuario = UltimoIdUsuario("TiposUsuario", "IdNivelUsuario")
        Sql = "Insert Into TiposUsuario (IdNivelUsuario, nombre_tipo) Values (" & IdTipoUsuario & ",'" & txtNombreTipo & "') "
    Else
        Sql = "Update TiposUsuario SET nombre_tipo = '" & txtNombreTipo & "' Where IdNivelUsuario = " & IdTipoUsuario
    End If
    ConexionADO.Execute Sql
       
    Call LlenarGridTiposUs
End Sub

Private Sub cmdGuardar_Click()
 Call GuardarTipoUsuario
 Call cmdNuevo_Click
 
End Sub

Private Sub cmdNuevo_Click()
 IdTipoUsuario = 0
 txtNombreTipo.Text = ""
 txtNombreTipo.SetFocus
End Sub


En El Evento Load del formulario se llama al LlenarGridTiposUs para que al abrir el formulario nos muestre la lista de tipos de usuario:

Private Sub Form_Load()
 Call LlenarGridTiposUs
 IdTipoUsuario = 0
 
End Sub

Al MSHFlexGrid se le cambiaron varias propiedades que fueron las siguientes:

BackCOlorFixed: &H009A620E&

SelectionMode: 1-flexSelectionByRow

Fond: Verdana 9pt

 

Siguiente Lección Parte 14 Ventana de Búsqueda de Usuarios

 

Comentarios de Facebook

Deja un comentario