Option Explicit
'Variables
'##################################################
' Estructura para dar de alta los datos de las Horas.
Private Type Horas_T
'Variables
inicio1 As Date
fin1 As Date
inicio2 As Date
fin2 As Date
inicio3 As Date
fin3 As Date
tiempo As Date
dia As String * 8
fecha As Integer
semana As Integer
mes As String * 10
año As Integer
npedido As Long
Totalhoras As Integer
End Type
'Variables para utilizar la estructura anterior
Dim Horas As Horas_T
Dim HorasTemp As Horas_T
'Variables para el archivo de los datos de Horas_T y temporal
Dim Numero As Integer
Dim FileTemp As Integer
'Variables para la posición del primer y último registro
Dim RegActual As Long
Dim RegUltimo As Long
' Variable para la posición Temporal del registro
Dim RegActualTemp As Long
Dim semanatemp As Integer
Dim Pos As Integer, p As Integer
'Variables para datos temporales de la Grilla
Dim inicio1_C As Date
Dim fin1_C As Date
Dim inicio2_C As Date
Dim fin2_C As Date
Dim inicio3_C As Date
Dim fin3_C As Date
Dim tiempo_C As Date
Dim dia_C As String
Dim fecha_C As Integer
Dim semana_C As Integer
Dim mes_C As String
Dim año_C As Integer
Dim npedido_C As Long
Dim Totalhoras_C As Integer
'Variables para las celdas de la Grilla
Dim lunes As String
Dim martes As String
Dim miercoles As String
Dim jueves As String
Dim viernes As String
Dim sabado As String
Dim domingo As String
Dim Entrada As Integer
Dim FilaG As Single
Dim ColumnaG As Single
Dim DatoG As Variant
Dim SemanaActual As Integer
'Variables contador
Dim x As Integer, s As Integer
' ---------------------------------------------------------------------------
' \\ -- Descripción : Alternar color por Filas en Flexgrid
' ---------------------------------------------------------------------------
Private Declare Function SetErrorMode Lib "kernel32" (ByVal wMode As Long) As Long
Private Declare Sub InitCommonControls Lib "Comctl32" ()
' ---------------------------------------------------------------------------
' \\ -- Función para Colorear por Filas
' ---------------------------------------------------------------------------
Private Sub pvSetColors(objFlexgrid As Object, ByVal lColor1 As Long, ByVal lColor2 As Long)
Dim iRow As Long
Dim iCol As Integer
Dim lCurrentColor As Long
With objFlexgrid
' -- Desahbilitar el repintado del control para agilizar el trabajo
.Redraw = False
.BackColor = lColor1
' -- Recorrer las filas
For iRow = 0 To .Rows - 1 Step 2
' -- Establecer la Fila actual del flex
.Row = iRow
' -- Recorre por columna y le aplica el color a la celda indicada de la fila actual
For iCol = 0 To .Cols - 1
.Col = iCol
.CellBackColor = lColor2
Next
Next
' -- Reestablecer la propiedad Redraw para poder refrescar el control
.Redraw = True
End With
End Sub
Private Sub pvSetColors2(objFlexgrid As Object, ByVal lColor1 As Long, ByVal lColor2 As Long)
Dim iRow As Long
Dim iCol As Integer
Dim lCurrentColor As Long
With objFlexgrid
' -- Desahbilitar el repintado del control para agilizar el trabajo
.Redraw = False
.BackColor = lColor1
.Row = 6
' -- Recorre por columna y le aplica el color a la celda indicada de la fila actual
For iCol = 0 To .Cols - 1
.Col = iCol
.CellBackColor = lColor2
Next
' -- Reestablecer la propiedad Redraw para poder refrescar el control
.Redraw = True
End With
End Sub
' ---------------------------------------------------------------------------
' \\ -- Subrutina que Visualiza los datos en el MSFlexGrid1
' ---------------------------------------------------------------------------
Private Sub VisualizarDatos()
Dim ContRegDias As Integer
Dim ContDias As Integer
Dim NrDia As Integer
'Calculamos el Nr. del dia de la semana.
Select Case dia_C
Case Is = "lunes"
NrDia = 1
Case Is = "martes"
NrDia = 2
Case Is = "miercoles"
NrDia = 3
Case Is = "jueves"
NrDia = 4
Case Is = "viernes"
NrDia = 5
Case Is = "sabado"
NrDia = 6
Case Is = "domingo"
NrDia = 7
End Select
ContDias = 7
ContRegDias = ContDias - NrDia
For ContRegDias = 7 To ContRegDias
ActualizarDatoG
' Mostramos los datos en las celdas
Select Case dia_C
Case Is = "lunes"
MSFlexGrid1.TextMatrix(FilaG, 0) = DatoG
Case Is = "martes"
MSFlexGrid1.TextMatrix(FilaG, 1) = DatoG
Case Is = "miercoles"
MSFlexGrid1.TextMatrix(FilaG, 2) = DatoG
Case Is = "jueves"
MSFlexGrid1.TextMatrix(FilaG, 3) = DatoG
Case Is = "viernes"
MSFlexGrid1.TextMatrix(FilaG, 4) = DatoG
Case Is = "sabado"
MSFlexGrid1.TextMatrix(FilaG, 5) = DatoG
Case Is = "domingo"
MSFlexGrid1.TextMatrix(FilaG, 6) = DatoG
End Select
FilaG = FilaG + 1
Next
End Sub
' --------------------------------------------------------------------------
' \\ -- Subrutina para actualizar los datos leidos de Horas.dat.
' --------------------------------------------------------------------------
Private Sub ActualizarDatoG()
FilaG = 0
For FilaG = 0 To 6
Select Case FilaG
Case 0
DatoG = inicio1_C
Case 1
DatoG = fin1_C
Case 2
DatoG = inicio2_C
Case 3
DatoG = fin2_C
Case 4
DatoG = inicio3_C
Case 5
DatoG = fin3_C
Case 6
DatoG = tiempo_C
End Select
Next
End Sub
' --------------------------------------------------------------------------
' \\ -- Subrutina para abrir el archivo Horas.dat.
' --------------------------------------------------------------------------
Private Sub AbrirArchivo()
Numero = FreeFile
Open "Horas.dat" For Random As Numero Len = Len(Horas)
RegActual = 1
' Almacenamos la posición del último registro
RegUltimo = LOF(Numero) / Len(Horas)
If RegUltimo = 0 Then
RegUltimo = 1
End If
End Sub
' ---------------------------------------------------------------------------
' \\ -- Función para asignar los Datos de un registro del archivo Horas.dat a
' ----- las variables internas.
' ---------------------------------------------------------------------------
Private Sub CargarDatos()
Get #Numero, RegUltimo, Horas
'Asignamos contenidos de las variables con datos de Horas.dat.
With Horas
inicio1_C = .inicio1
fin1_C = .fin1
inicio2_C = .inicio2
fin2_C = .fin2
inicio3_C = .inicio3
fin3_C = .fin3
tiempo_C = .tiempo
dia_C = .dia
fecha_C = .fecha
semana_C = .semana
mes_C = .mes
año_C = .año
npedido_C = .npedido
Totalhoras_C = .Totalhoras
End With
End Sub
Private Sub Form_Load()
Call pvSetColors(MSFlexGrid1, RGB(255, 255, 203), RGB(255, 255, 255))
Call pvSetColors2(MSFlexGrid1, RGB(255, 255, 203), RGB(255, 234, 255))
Dim nrcol As Integer
nrcol = 0
npedido_C = 0
For nrcol = 0 To MSFlexGrid1.Cols - 1
' Asignamos la Columa
MSFlexGrid1.Col = nrcol
' Ahora podemos asignarle el tamaño que queramos
MSFlexGrid1.ColWidth(nrcol) = 960
Next
AbrirArchivo
CargarDatos
VisualizarDatos
End Sub