Attribute VB_Name = "Procesos"
Public DerFinanzas As Boolean
Public Rendim As Database
Public CodPerfil As String
Public Sedes(6, 3) As String ' almaceno las sedes su ip y base de datos
Public conexionremota As Boolean ' Indica si la sesión iniciada es local o remota
Public IpRemota As String        ' Indica la direccion ip del servidor de bdd remoto
Public basedatosremota As String ' Indica el nombre de la bdd a conectar
' Los 3 parámetros anteriores son fundamentales para la conexion remota de la
' base de datos.
Public arraygrilla() As String
'Public Nom_usu_ses As String
Public Nom_com_usu_ses As String
Public Pas_usu_ses As String

'''' Variables que se obtienen a traves de la tabla de configuracion
'*******************************************************************
Public Anno As String
Public PerEscIni
Public PerEscFin
Public PostIni
Public CODBC
Public CODPK
Public CODCO
Public IP_FLORIDA
Public IP_FARFANA
Public IP_SANMARTIN
Public IP_LONGITUDINAL
Public IP_LINCOLN_A3
Public IP_LINCOLN_A4
'*******************************************************************

' las variables declaradas anteriormente son las variables de sesión
Public Anhopostulacion As String
Public ManTab As String
Public ManTab2 As String
Public varformfechas As String
Public DirAplicacion As String
Public RutGlobal As String
Public Menuletras As String ' Variable que indica el tipo de busqueda para emitir letras
Public MenuInformes  As String ' Variable que indica el tipo de reporte a emitir
Public Menuinformes2 As String ' Variable que indica el tipo de reporte a emitir referente a postulaciones
Public Menuinformes3 As String ' Variable que indica el tipo de reporte a emitir referente a estadisticas de Utp
Public Menuinformes4 As String ' Variable que indica el tipo de reporte a emitir referente a estadisticas de Utp2
Public MenuInformesBeca As String ' Variable que indica el tipo de reporte de becas
Public MenuInformesFnza As String ' Variable que indica el tipo de reporte financiero
Public MenuInformes2Fnza As String
Public MenuMantencionFnza ' Variable que indica proceso de mantención en finaznas
Public Respos2 As String
Public Anuevocurso()
Public alumnossincurso() As String ' aqui guardo los datos principales de alumnos sin curso
Public alumnosconcurso() As String ' aqui guardo los datos principales de alumnos sin curso
Public A_CMB_NIV_APO()
Public A_CMB_REG_APO()
Public A_CMB_REG_ALU()
Public A_CMB_COM_APO()
Public A_CMB_COM_ALU()
Public A_CMB_COD_GEO()
Public ameses(12, 3) ' matriz de 3 x 12 nombre mes, dia inicio, dia fin
Public A_CMB_CON_APO() ' combo convenio de apoderado
Public A_CMB_TIP_APO() ' combo tipo de apoderado
Public aprofesores()       ' Array donde almaceno datos del profesor para consultar
Public acomunas()       ' Array donde almaceno las comunas para consultar
Public profecursos()       ' internamente
Public ingxcodigo As Integer
Public Busqueda As Integer
Public Busqueapo As Integer

Public connLN As ADODB.Connection 'Lista negra
Public connSQL As ADODB.Connection
Public conn_deuda As ADODB.Connection
Public conn As ADODB.Connection
Public ConnAnt As ADODB.Connection
Public ConnExt As ADODB.Connection
Public rsConCurso As ADODB.Recordset
Public rsSinCurso As ADODB.Recordset
Public RsFuncion As ADODB.Recordset
Public rs As ADODB.Recordset
Public rsinforme As ADODB.Recordset
Public RsAux As ADODB.Recordset
Public rsnotas As ADODB.Recordset
Public rsCtaReg As ADODB.Recordset
Public Rs_Pos As ADODB.Recordset
Public Rs_Apo As ADODB.Recordset
Public rs_Usu As ADODB.Recordset
Public rsER As ADODB.Recordset
Public fld As ADODB.Field
Public Sql As String
Public PC_IP As String
Public PC_Nom As String
Public Base As String
Public Servidor As String
Public Sede As String
'**** FTP ****
Public HostFtp As String
Public UserFtp As String
Public PassFtp As String
Public DirUpdateFtp As String ' usado por módulo GesUpdate
Public Ninstal As String
'**** FTP ****
Public Menuinformes5 As String ' Variable que indica el tipo de reporte a emitir referente a proyeccion de vacantes
Public UsoDeExamen As Boolean
Public Escenario As Integer
Public Rut_Ini_Apo As String
Public Rut_Apo_Ok As Boolean
Public ngramax As Integer
Public Const Cod_sec_religion = 13
Public Const Cod_asi_religion = 13
Public MenuCorrec As String ' variable que define que frame se activa en form correc
Public AnnoIni As String
Public DerUsuario As String
'constantes para obtener la información regional
Public Const LOCALE_FONTSIGNATURE = &H58
Public Const LOCALE_ICENTURY = &H24
Public Const LOCALE_ICOUNTRY = &H5 'código de país
Public Const LOCALE_ICURRDIGITS = &H19 'nº de decimales en las monedas
Public Const LOCALE_ICURRENCY = &H1B 'posición del simbolo de moneda respecto al _
    número,0=delante, 1=detrás, 2=delante con un blanco, 3=detras con un blanco
Public Const LOCALE_IDATE = &H21
Public Const LOCALE_IDAYLZERO = &H26 '1=días con dos dígitos en fecha corta
Public Const LOCALE_IDEFAULTCODEPAGE = &HB 'página de códigos por defecto
Public Const LOCALE_IDEFAULTCOUNTRY = &HA 'código de país por defecto
Public Const LOCALE_IDEFAULTLANGUAGE = &H9 'codigo de lenguaje por defecto
Public Const LOCALE_IDIGITS = &H11 'nº de decimales en los numeros
Public Const LOCALE_IINTLCURRDIGITS = &H1A
Public Const LOCALE_ILANGUAGE = &H1 'codigo del lenguaje
Public Const LOCALE_ILDATE = &H22
Public Const LOCALE_ILZERO = &H12
Public Const LOCALE_IMEASURE = &HD 'sistema de medida, 0=metrico, 1 =EE.UU.
Public Const LOCALE_IMONLZERO = &H27
Public Const LOCALE_INEGCURR = &H1C 'formato nº negativo en las monedas
Public Const LOCALE_INEGSEPBYSPACE = &H57 'un espacio entre el nº y la moneda en los _
    negativos
Public Const LOCALE_INEGSIGNPOSN = &H53 'posicion del signo en las monedas negativas, _
    0=no se pone, 1=antes del numero, 2=despues del numero,3=antes de la moneda, _
    4=despues de la monea
Public Const LOCALE_INEGSYMPRECEDES = &H56
Public Const LOCALE_IPOSSEPBYSPACE = &H55
Public Const LOCALE_IPOSSIGNPOSN = &H52
Public Const LOCALE_IPOSSYMPRECEDES = &H54
Public Const LOCALE_ITIME = &H23
Public Const LOCALE_ITLZERO = &H25 '1=horas con dos digitos
Public Const LOCALE_NOUSEROVERRIDE = &H80000000
Public Const LOCALE_S1159 = &H28 'simbolo a.m.
Public Const LOCALE_S2359 = &H29 'simbolo p.m.
Public Const LOCALE_SABBREVCTRYNAME = &H7 'nombre abreviado del país
Public Const LOCALE_SABBREVDAYNAME1 = &H31 'nombre abreviado de los días de la semana
Public Const LOCALE_SABBREVDAYNAME2 = &H32 'en el idioma del país
Public Const LOCALE_SABBREVDAYNAME3 = &H33
Public Const LOCALE_SABBREVDAYNAME4 = &H34
Public Const LOCALE_SABBREVDAYNAME5 = &H35
Public Const LOCALE_SABBREVDAYNAME6 = &H36
Public Const LOCALE_SABBREVDAYNAME7 = &H37
Public Const LOCALE_SABBREVLANGNAME = &H3 'nombre a breviado del lenguaje
Public Const LOCALE_SABBREVMONTHNAME1 = &H44  'nombre abreviado de los meses del año
Public Const LOCALE_SABBREVMONTHNAME10 = &H4D 'en el idioma del país
Public Const LOCALE_SABBREVMONTHNAME11 = &H4E
Public Const LOCALE_SABBREVMONTHNAME12 = &H4F
Public Const LOCALE_SABBREVMONTHNAME13 = &H100F
Public Const LOCALE_SABBREVMONTHNAME2 = &H45
Public Const LOCALE_SABBREVMONTHNAME3 = &H46
Public Const LOCALE_SABBREVMONTHNAME4 = &H47
Public Const LOCALE_SABBREVMONTHNAME5 = &H48
Public Const LOCALE_SABBREVMONTHNAME6 = &H49
Public Const LOCALE_SABBREVMONTHNAME7 = &H4A
Public Const LOCALE_SABBREVMONTHNAME8 = &H4B
Public Const LOCALE_SABBREVMONTHNAME9 = &H4C
Public Const LOCALE_SCOUNTRY = &H6 'nombre del país en inglés
Public Const LOCALE_SCURRENCY = &H14 'símbolo de la moneda
Public Const LOCALE_SDATE = &H1D 'separador de fechas
Public Const LOCALE_SDAYNAME1 = &H2A 'nombre de los días día de la semana
Public Const LOCALE_SDAYNAME2 = &H2B 'en el idioma del país
Public Const LOCALE_SDAYNAME3 = &H2C
Public Const LOCALE_SDAYNAME4 = &H2D
Public Const LOCALE_SDAYNAME5 = &H2E
Public Const LOCALE_SDAYNAME6 = &H2F
Public Const LOCALE_SDAYNAME7 = &H30
Public Const LOCALE_SDECIMAL = &HE 'separador decimal
Public Const LOCALE_SENGCOUNTRY = &H1002
Public Const LOCALE_SENGLANGUAGE = &H1001
Public Const LOCALE_SGROUPING = &H10 'nº de dígitos en grupo
Public Const LOCALE_SINTLSYMBOL = &H15 'simbolo internacional del pais
Public Const LOCALE_SLANGUAGE = &H2 'lenguaje selecionado en conf.reg.
Public Const LOCALE_SLIST = &HC 'separador de listas
Public Const LOCALE_SLONGDATE = &H20 'formato de fecha larga
Public Const LOCALE_SMONDECIMALSEP = &H16 'separador decimal en las monedas
Public Const LOCALE_SMONGROUPING = &H18 'nº de dígitos en grupo para las monedas
Public Const LOCALE_SMONTHNAME1 = &H38  'nombres de los meses
Public Const LOCALE_SMONTHNAME10 = &H41 'en el idioma del país
Public Const LOCALE_SMONTHNAME11 = &H42
Public Const LOCALE_SMONTHNAME12 = &H43
Public Const LOCALE_SMONTHNAME2 = &H39
Public Const LOCALE_SMONTHNAME3 = &H3A
Public Const LOCALE_SMONTHNAME4 = &H3B
Public Const LOCALE_SMONTHNAME5 = &H3C
Public Const LOCALE_SMONTHNAME6 = &H3D
Public Const LOCALE_SMONTHNAME7 = &H3E
Public Const LOCALE_SMONTHNAME8 = &H3F
Public Const LOCALE_SMONTHNAME9 = &H40
Public Const LOCALE_SMONTHOUSANDSEP = &H17 'separador de miles en las monedas
Public Const LOCALE_SNATIVECTRYNAME = &H8 'nombre del país en el idioma del país
Public Const LOCALE_SNATIVEDIGITS = &H13 'digitos empleados en el país
Public Const LOCALE_SNATIVELANGNAME = &H4 'idioma del país en el idioma del país
Public Const LOCALE_SNEGATIVESIGN = &H51 'simbolo de signo negativo
Public Const LOCALE_SPOSITIVESIGN = &H50 'simbolo de signo positivo
Public Const LOCALE_SSHORTDATE = &H1F 'formato de fecha corta
Public Const LOCALE_STHOUSAND = &HF 'separador de miles
Public Const LOCALE_STIME = &H1E 'separador de horas
Public Const LOCALE_STIMEFORMAT = &H1003 'formato de horas
Public Const LOCALE_SYSTEM_DEFAULT = &H800 'presentar información del sistema
Public Const LOCALE_USER_DEFAULT = &H400 'presentar información del usuario

Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale _
    As Long, ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long
Declare Function SetLocaleInfo Lib "kernel32" Alias "SetLocaleInfoA" (ByVal Locale As Long, _
     ByVal LCType As Long, ByVal lpLCData As String) As Long


'098765456.
Public Sub PonerConf1()
'Configuración del número
SetLocaleInfo LOCALE_USER_DEFAULT, LOCALE_SDECIMAL, "."
SetLocaleInfo LOCALE_USER_DEFAULT, LOCALE_STHOUSAND, ","
'Configuración de la moneda
SetLocaleInfo LOCALE_USER_DEFAULT, LOCALE_SMONDECIMALSEP, "."
SetLocaleInfo LOCALE_USER_DEFAULT, LOCALE_SMONTHOUSANDSEP, ","
End Sub

Public Sub PonerConf2()
'Configuración del número
SetLocaleInfo LOCALE_USER_DEFAULT, LOCALE_SDECIMAL, ","
SetLocaleInfo LOCALE_USER_DEFAULT, LOCALE_STHOUSAND, "."
'Configuración de la moneda
SetLocaleInfo LOCALE_USER_DEFAULT, LOCALE_SMONDECIMALSEP, ","
SetLocaleInfo LOCALE_USER_DEFAULT, LOCALE_SMONTHOUSANDSEP, "."
End Sub
     
Sub Main()
    Dim varconecta As Boolean
    If Len(App.Path) > 3 Then DirAplicacion = App.Path + "\"
    If Len(App.Path) <= 3 Then DirAplicacion = App.Path
        Servidor = IniGet("GESCOL.INI", "Servidor", "IP", "")
        If Len(Trim(Servidor)) = 0 Then
            Servidor = InputBox("Ingrese IP del Servidor", "IP Servidor")
            IniWrite "GESCOL.INI", "Servidor", "IP", Servidor
            IniWrite "GESCOL.INI", "Servidor", "Base de Datos", "Gescol"
        End If
        Base = IniGet("GESCOL.INI", "Servidor", "Base de Datos", "")
        base_inicio = Base
'        'DESde here
'        If Trim(Base) <> "" Then
'            varconecta = ConectarBD(conn, Servidor, Base, "groot", PassBDLocal, True)
'        Else
'            MsgBox "No se encuentra base de datos en archivo de configuración" & Chr(13) & "Contáctese con el administrador del Sistema", vbCritical, "Detección de Validación"
'            End
'        End If
'        Sede = UCase(Base)
'        If varconecta Then
'            Update ' Aquí llamamos al sub que invoca al actualizador web update.exe
'            AnnoIni = devuelvecampo("cfg", "", "valor", "param = 'ANNO'", conn)
'            Anno = AnnoIni
'            PerEscIni = devuelvecampo("cfg", "", "valor", "param = 'PerEscIni' and agno = " & Anno, conn)
'            PerEscFin = devuelvecampo("cfg", "", "valor", "param = 'PerEscFin' and agno = " & Anno, conn)
'            PostIni = devuelvecampo("cfg", "", "valor", "param = 'PostIni' and agno = " & Anno, conn)
'            CODBC = devuelvecampo("cfg", "", "valor", "param = 'CODBC'", conn)
'            CODPK = devuelvecampo("cfg", "", "valor", "param = 'CODPK'", conn)
'            IP_FLORIDA = devuelvecampo("cfg", "", "valor", "param = 'IP_FLORIDA'", conn)
'            IP_FARFANA = devuelvecampo("cfg", "", "valor", "param = 'IP_FARFANA'", conn)
'            IP_SANMARTIN = devuelvecampo("cfg", "", "valor", "param = 'IP_SANMARTIN'", conn)
'            IP_LONGITUDINAL = devuelvecampo("cfg", "", "valor", "param = 'IP_LONGITUDINAL'", conn)
'            IP_LINCOLN_A3 = devuelvecampo("cfg", "", "valor", "param = 'IP_LINCOLN_A3'", conn)
'            IP_LINCOLN_A4 = devuelvecampo("cfg", "", "valor", "param = 'IP_LINCOLN_A4'", conn)
'        ' until here
            Load frmLogin
            frmLogin.Show vbModal
            If frmLogin.LoginSucceeded Then
                Load Form_main
                ActivaMenus DerUsuario
                Form_main.Show
            End If
'''            'tambien
'''        Else
'''            ' ## Nada ##
'''        End If
''''fin tambien
End Sub

Public Sub ActivaMenus(OrdenMenu As String)
    Dim s As String, sC As String
    Dim I As Long
    Dim tControl As Control
    Dim tMenu As Menu
    Dim tNode As Node
    Dim Cuenta As Integer
    Cuenta = 1
    On Error GoTo RevisaFalla
    For I = 0 To Form_main.Controls.count - 1
        If TypeOf Form_main.Controls.Item(I) Is Menu Then
            If Form_main.Controls.Item(I).Caption <> "-" And _
            Mid(Form_main.Controls.Item(I).Name, 1, 3) <> "sop" Then
                If Trim(UCase(Form_main.Controls.Item(I).Name)) = "FNZA" Then
                    Form_main.Controls(I).Visible = IIf(DerFinanzas, True, False)
                ' Aquí impido que la visualización del menú finanzas, dependa del campo
                ' de privilegios de la tabla usuarios. Así no se provoca un desorden en los items
                ' cuando se agregan opciones nuevas.
                ElseIf Left(Trim(UCase(Form_main.Controls.Item(I).Name)), 4) <> "FNZA" Then
                    Form_main.Controls(I).Visible = IIf(Mid(OrdenMenu, Cuenta, 1) = 1, True, False)
                End If
                Cuenta = Cuenta + 1
            End If
        End If
    Next
    Exit Sub
RevisaFalla:
    Select Case Err.Number
        Case Is = 387
            Resume Next
        Case Else
            MsgBox Err.Number
            Resume Next
    End Select
    End Sub


Sub encabezadopapel(negrita As Boolean)
On Error GoTo Errimpresion
Dim colegio As String, Fecha As String, hora As String, direccion As String, localidad As String
colegio = DevuelveCampo("establecimientos", "", "nom_est", "rdb <> ''", conn)
direccion = DevuelveCampo("establecimientos", "", "dir_est", "rdb <> ''", conn)
localidad = DevuelveCampo("establecimientos", "", "localidad_est", "rdb <> ''", conn)
anchopagina = Printer.Width
Largopagina = Printer.Height
Printer.FontBold = negrita
' Aquí imprimo los datos del establecimiento
Printer.CurrentX = 100: Printer.CurrentY = 200: Printer.Print (colegio)
Printer.CurrentX = 100: Printer.CurrentY = 400: Printer.Print (direccion)
Printer.CurrentX = 100: Printer.CurrentY = 600: Printer.Print (localidad)
' Aquí imprimo la fecha y hora del sistema
Printer.CurrentX = 9800: Printer.CurrentY = 200: Printer.Print ("FECHA")
Printer.CurrentX = 9800: Printer.CurrentY = 400: Printer.Print ("HORA")
Printer.CurrentX = 10400: Printer.CurrentY = 200: Printer.Print (":")
Printer.CurrentX = 10400: Printer.CurrentY = 400: Printer.Print (":")
Printer.CurrentX = 10500: Printer.CurrentY = 200: Printer.Print (Date)
Printer.CurrentX = 10500: Printer.CurrentY = 400: Printer.Print (Time)
Printer.FontBold = False
Exit Sub
Errimpresion:
End Sub


Sub encabezadopapel_hue(negrita As Boolean)
On Error GoTo Errimpresion
Dim colegio As String, Fecha As String, hora As String, direccion As String, localidad As String
colegio = DevuelveCampo("establecimientos", "", "nom_est", "rdb <> ''", conn)
direccion = DevuelveCampo("establecimientos", "", "dir_est", "rdb <> ''", conn)
localidad = DevuelveCampo("establecimientos", "", "localidad_est", "rdb <> ''", conn)
anchopagina = Printer.Width
Largopagina = Printer.Height
Printer.FontBold = True

'c
Printer.FontBold = False
Printer.Line (50, 800)-(11500, 2300), , B  ' ESTE ES EL PRIMER BOX DEL INFORME


' Aquí imprimo los datos del establecimiento
'Printer.CurrentX = 4000: Printer.CurrentY = 1600: Printer.Print (colegio)
Printer.FontBold = True
Printer.CurrentX = 100: Printer.CurrentY = 1400: Printer.Print ("PROVINCIA")
Printer.CurrentX = 100: Printer.CurrentY = 1700: Printer.Print ("DIRECCION")
Printer.CurrentX = 100: Printer.CurrentY = 2000: Printer.Print ("COMUNA")

Printer.CurrentX = 1300: Printer.CurrentY = 1400: Printer.Print (":")
Printer.CurrentX = 1300: Printer.CurrentY = 1700: Printer.Print (":")
Printer.CurrentX = 1300: Printer.CurrentY = 2000: Printer.Print (":")
Printer.FontBold = False

Printer.FontSize = 10
Printer.CurrentX = 4000: Printer.CurrentY = 900: Printer.Print (colegio)
Printer.FontSize = 8

Printer.CurrentX = 1500: Printer.CurrentY = 1400: Printer.Print ("SANTIAGO")
Printer.CurrentX = 1500: Printer.CurrentY = 1700: Printer.Print (direccion)
Printer.CurrentX = 1500: Printer.CurrentY = 2000: Printer.Print (localidad)
' Aquí imprimo la fecha y hora del sistema
Printer.CurrentX = 9800: Printer.CurrentY = 200: Printer.Print ("FECHA")
Printer.CurrentX = 9800: Printer.CurrentY = 400: Printer.Print ("HORA")
Printer.CurrentX = 10400: Printer.CurrentY = 200: Printer.Print (":")
Printer.CurrentX = 10400: Printer.CurrentY = 400: Printer.Print (":")
Printer.CurrentX = 10500: Printer.CurrentY = 200: Printer.Print (Date)
Printer.CurrentX = 10700: Printer.CurrentY = 400: Printer.Print (Time)
Printer.FontBold = False
Exit Sub
Errimpresion:
End Sub


Public Sub Update()
    Veractual = DevuelveCampo("instalacion", "", "num_instal", "not isnull(num_instal)", conn)
    Ninstal = TraeInstal(DirAplicacion & "Instal.pro")
    If val(Ninstal) < val(Veractual) Then
        If dir(DirAplicacion & "") <> "" Then
            Call Limpieza
            Shell DirAplicacion & "Update.exe", vbNormalNoFocus
            End
        Else
            MsgBox ("Se encuentra una versión de GesCol antigua en su sistema. No se puede utilizar" & Chr(13) & "Contáctese con el Administrador de sistema.")
            End
        End If
    End If
End Sub

Public Sub Update_Warning()
    Veractual = DevuelveCampo("instalacion", "", "num_instal", "not isnull(num_instal)", conn)
    Ninstal = TraeInstal(DirAplicacion & "Instal.pro")
    If val(Ninstal) < val(Veractual) Then
        If dir(DirAplicacion & "") <> "" Then
            MsgBox "Se encuentra disponible una nueva versión de GesCol." & vbCrLf & "Por favor cierre GesCol y abralo nuevamente para actualizar esta versión.", vbInformation + vbOKOnly, "Hay una nueva actualización disponible"
        End If
    End If
End Sub

Sub encabezadopantalla(Ppview As PP, negrita As Boolean)
Dim colegio As String, Fecha As String, hora As String, direccion As String, localidad As String
colegio = DevuelveCampo("establecimientos", "", "nom_est", "rdb <> ''", conn)
direccion = DevuelveCampo("establecimientos", "", "dir_est", "rdb <> ''", conn)
localidad = DevuelveCampo("establecimientos", "", "localidad_est", "rdb <> ''", conn)

'anchopagina = ppview.PageWidth
'Largopagina = ppview.PageHeight
Ppview.FontBold = negrita
' Aquí imprimo los datos del establecimiento
Ppview.CurrentX = 100: Ppview.CurrentY = 200: Ppview.PrintText (colegio)
Ppview.CurrentX = 100: Ppview.CurrentY = 400: Ppview.PrintText (direccion)
Ppview.CurrentX = 100: Ppview.CurrentY = 600: Ppview.PrintText (localidad)
' Aquí imprimo la fecha y hora del sistema
Ppview.CurrentX = 9800: Ppview.CurrentY = 200: Ppview.PrintText ("FECHA")
Ppview.CurrentX = 9800: Ppview.CurrentY = 400: Ppview.PrintText ("HORA")
Ppview.CurrentX = 10400: Ppview.CurrentY = 200: Ppview.PrintText (":")
Ppview.CurrentX = 10400: Ppview.CurrentY = 400: Ppview.PrintText (":")
Ppview.CurrentX = 10500: Ppview.CurrentY = 200: Ppview.PrintText (Date)
Ppview.CurrentX = 10500: Ppview.CurrentY = 400: Ppview.PrintText (Time)
Ppview.FontBold = False
End Sub
Sub centrarenpantalla(Ppview As PP, Fila As Integer, texto As String)
      HWidth = Ppview.TextWidth(texto) / 2   ' Obtiene la mitad del ancho.
      'HHeight = Printer.TextHeight(texto) / 2  ' Obtiene la mitad del alto.
      Ppview.CurrentX = Ppview.ScaleWidth / 2 - HWidth
      Ppview.CurrentY = Fila
      Ppview.PrintText (texto)
End Sub
Sub centrarenpapel(Fila As Integer, texto As String)
On Error GoTo Errimpresion
      HWidth = Printer.TextWidth(texto) / 2   ' Obtiene la mitad del ancho.
      'HHeight = Printer.TextHeight(texto) / 2  ' Obtiene la mitad del alto.
      Printer.CurrentX = Printer.ScaleWidth / 2 - HWidth
      Printer.CurrentY = Fila
      Printer.Print (texto)
Exit Sub
Errimpresion:
End Sub

