Constantes

De GrialWIKI

Referencia Grial


Contenido

Imagenes Existentes en el GrialImages

Lista de Keys para las ImageList

  • ToolbarNormal,ToolbarHot y ToolbarDisabled
    • Alta,Baja,Modificacion,Consulta,Reporte,Informe,Aceptar,Cancelar

Son los íconos que se observan en los botones del GrialApl

  • TreeImages
    • Leaf, Baja, Root, Branch, CRPc, CRPa, IMP, INST0, INST1, INST2, DIRECTA

Image:Iconos_GrialTree.JPG

Notas:

  • "CRPc" es como Leaf pero en rojo
  • "CRPa" en como Branch (un folder) con un "+" indicando continuación


  • GridImages
    • ABM, Expandir SE, Input Verde Grande, Input Verde, Flecha SE, Refresh, Invocar, Marca Verde, Marca Rojo Amarillo, Marca Rojo Blanco, Input Verde Doble

Image:Iconos_GrialGrid.JPG

Código de la Función GetImage

Public Function GetImage(ByVal RequestCode As String, Optional ByVal SubCode As String) As Object
Select Case RequestCode
 
        Case "Toolbar"
            Select Case SubCode
                Case "Normal"
                        Set GetImage = ToolbarNormal ' ImageList
                Case "Hot"
                        Set GetImage = ToolbarHot ' ImageList
                Case "Disabled"
                        Set GetImage = ToolbarDisabled ' ImageList
            End Select
 
        Case "BackgroundImage"
            Set GetImage = BackgroundImage ' Picture
 
        Case "TreeImages"
            Set GetImage = TreeImages ' ImageList
 
        Case "GridImages"
            Set GetImage = GridImages ' ImageList
 
        Case "Report"
            Select Case SubCode
                Case "Header"
                        Set GetImage = ReportHeader ' Picture, Escudo
                Case "AntiCopia"
                        Set GetImage = AntiCopia ' Picture, Escudo en gris, watermark
            End Select
 
End Select
End Function

Ejemplo de uso:

Para asignar una imagen a un boton... al final del userdocumen_show

   On Error Resume Next ' Ignoro Errores
   VerCompromisoCmd.Picture = GrialCont.GetImage("GridImages").ListImages("ABM").Picture


Constantes Predefinidas

Niveles de acceso

El entorno de desarrollo Grial permite definir nueve niveles de acceso distintos para cada usuario y establecer un correlato entre estos niveles y los componentes visuales de las aplicaciones. Los niveles de acceso puede consultarse desde el GrialCont de la aplicación con:

Val(GrialCont.Parameter(MENU_ALTA_ROT))

Que retorna -1 si el usuario tiene habilitado el acceso y 0 en caso contrario

  • MENU_ALTA_ROT : Asociado al botón de comando BUTTON_NEW del GrialApl.
  • MENU_BAJA_ROT : Asociado al botón de comando BUTTON_DELETE
  • MENU_MODIFICACION_ROT : Asociado al botón de comando BUTTON_MODIFICATION
  • MENU_CONSULTA_ROT : Asociado al botón de comando BUTTON_CONSULT
  • MENU_REPORTE_ROT : Asociado al botón de comando BUTTON_REPORT
  • MENU_INFORME_ROT : Asociado al botón de comando BUTTON_INFORM
  • MENU_FRM1_ROT : Acceso especial configurable para cada módulo.
  • MENU_FRM2_ROT : Acceso especial configurable para cada módulo.
  • MENU_FRM3_ROT : Acceso especial configurable para cada módulo.


Botones de comando y clase Grialbuttons

El GrialApl tiene incorporados ocho botones de comando. Seis en la barra de herramientas superior y dos en la inferior. Las constantes definidas para cada botón son:

En la barra superior

  • BUTTON_NEW
  • BUTTON_DELETE
  • BUTTON_MODIFICATION
  • BUTTON_CONSULT
  • BUTTON_REPORT
  • BUTTON_INFORM

Cuando el usuario presiona alguno de estos botones, el GrialApl genera un evento ButtonClick, y si se ejecuta correctamente visualiza el área de trabajo (ContainerFrm_show).

En la barra inferior :

  • BUTTON_ACCEPT
  • BUTTON_CANCEL

Cuando el usuario presiona alguno de estos botones, el GrialApl genera un evento BottomButtonClick y si se ejecuta correctamente invisibiliza el área de trabajo (ContainerFrm_Hide)

Marcos Contenedores

Los marcos contenedores son objetos frame de visual basic. El GrialApl reserva para funciones específicas los frames que se denominan con los siguientes nombres :

  • Container_Frm : Es el frame contenedor de todos los objetos visuales asociados a una transacción. Este frame permanece invisible mientras el usuario no presione ninguno de los [botones de comando-] de la barra superior. Asimismo una vez visualizado vuelve a quedar invisible cuando el usuario confirma o cancela la transacción con los botones de la barra inferior. Este Frame debe existir obligatoriamente en todo VisualDocument que utilice el Grialapl, de no ser así se producirá un error.


  • Menu1_frm : En este frame quedan contenidos todos los controles asociados al nivel de acceso Frame_1.Todos los controles contenidos en este Frame quedarán deshabilitados si el usuario no tiene asignado el nivel de acceso configurable MENU_FRM1_ROT
  • Menu2_frm : En este frame quedan contenidos todos los controles asociados al nivel de acceso Frame_2.Todos los controles contenidos en este Frame quedarán deshabilitados si el usuario no tiene asignado el nivel de acceso configurable MENU_FRM2_ROT
  • Menu3_frm : En este frame quedan contenidos todos los controles asociados al nivel de acceso Frame_3.Todos los controles contenidos en este Frame quedarán deshabilitados si el usuario no tiene asignado el nivel de acceso configurable MENU_FRM3_ROT


Estados del GrialApl

   Los diferentes estados en que puede encontrarse un GrialApl son :
  • INITIAL_STATUS : Es el estado inicial del Grialapl. En este estado, el [marco contenedor-] container_frm y [los botones de comando-] de la barra inferior se encuentran invisibles. Para salir de este estado el usuario debe presionar alguno de los botones de comando de la barra superior. Cuando se sale de este estado se disparan los eventos [ButtonClick-] y [ContainerFrmShow-] en ese orden.


  • CONTROLS_ENABLED  : Es el estado por default al que se arriba luego que se ha presionado alguno de los botones de comando de la barra superior. En este estado el marco contenedor Container_Frm y los botones de comando de la barra inferior se encuentran visibles y los botones de la barra superior deshabilitados. Para salir de este estado y volver al estado inicial, el usuario debe presionar alguno de los dos botones de la barra inferior (CANCELAR o ACEPTAR).Cuando se sale de este estado se disparan los eventos [BottomButtonClick-] y [ContainerFrmHide-] en ese orden.


  • VIEW_MODE : Es un estado alternativo al anterior. Para arribar a este estado basta cambiar el valor del parámetro NewState del evento [ButtonClick-] que se ha disparado cuando el usuario presionó un botón de comando de la barra superior. En este estado los botones de comando de la barra superior y el marco contenedor container_frm se encuentran visibles pero deshabilitados y los botones de la barra inferior habilitados. Para salir de este estado el usuario debe presionar alguno de los dos botones de la barra inferior (CANCELAR o ACEPTAR) .Cuando se sale de este estado se disparan los eventos [BottomButtonClick-] y [ContainerFrmHide-] en ese orden.

Archivos Comunes

Los archivos comunes son rutinas que se incluyen en todos los módulos y unifican el manejo de errores y facilitan la depuración del código.

CommonFunctions.BAS
Contiene el manejo de errores
Debug_SQL_bas.BAS
Contiene rutinas de apoyo para, por ejemplo, mostrar el contenido de un recordset

CommonFunctions.BAS

Public Function VBErrorText() As String
    Dim Source As String
    Source = Err.Source
    If Source Like App.EXEName & "*" Then
        Source = ""
    Else
        Source = Source & ": "
    End If
    VBErrorText = "Ha ocurrido un error." & vbCrLf & vbCrLf & _
                     Source & Err.Description
End Function
 
Sub MsgError(GrialCont As Object)
    Dim s As String, AppVersion As String
    s = VBErrorText()
    On Error Resume Next
        AppVersion = " v" & App.Major & "." & App.Minor & "." & App.Revision
        MsgBox s, vbCritical, App.Title & AppVersion
        GrialCont.AddErrLog App.EXEName & AppVersion & ": " & s
    Err.Clear
End Sub

Debug_SQL_bas.BAS

Option Explicit
Option Compare Text
 
Sub ascii(a As String)
Dim n As Integer
For n = 1 To Len(a)
    Debug.Print Asc(Mid(a, n, 1)); ",";
    If n Mod 10 = 0 Then Debug.Print
Next
Debug.Print
End Sub
 
Sub cutprint(ByVal s As String)
Do While Len(s)
    If Len(s) > 40 Then
        Dim cutp As Integer
        cutp = InStr(30, s, ",")
        If cutp = 0 Then cutp = InStr(30, s, ";")
        If cutp = 0 Then cutp = Max(InStr(20, s, " "), 80)
        Debug.Print Left$(s, cutp - 1)
        'Add Left$(s, cutp - 1)
        s = Mid$(s, cutp)
    Else
        Debug.Print s
'        Add s
        Exit Do
    End If
 
Loop
 
End Sub
 
Sub sql(ComandoSQL)
sqlprint ComandoSQL
'Clipboard.SetText MsgText
End Sub
 
Sub sqlprint(ByVal s As String)
Dim cutp As Integer
'Msg ""
Do
    cutp = InStr(10, s, "FROM")
    If cutp = 0 Then cutp = InStr(10, s, "WHERE")
    If cutp = 0 Then cutp = InStr(10, s, "and")
    If cutp = 0 Then cutp = InStr(10, s, "GROUP")
    If cutp = 0 Then cutp = InStr(10, s, "ORDER")
    If cutp = 0 Then cutp = Len(s) + 1
    cutprint Left$(s, cutp - 1)
    s = Mid$(s, cutp)
Loop While Len(s)
 
End Sub
 
Sub ShowRec(r As Recordset)
On Error Resume Next
Dim F As Field
For Each F In r.Fields
    Debug.Print F.Name; ": ", , F.Value;
    If Err Then Debug.Print "("; Err.Description; ")";
    Debug.Print
Next
Err.Clear
End Sub
 
Sub Show(r)
On Error Resume Next
 
Dim SaveFilter, SaveBmk
SaveFilter = r.Filter
If Err Then
    Debug.Print Err.Description
    Exit Sub
End If
 
If Not (r.EOF Or r.BOF Or (r.Status And adRecDeleted) <> 0) Then
    SaveBmk = r.Bookmark
End If
 
'R.Filter = adFilterPendingRecords
If r.RecordCount = 0 Then
    Debug.Print " RecordCount = 0"
    GoTo Salida
End If
 
Dim F As Field
r.MoveFirst
Do While Not r.EOF
    Debug.Print "REC:"; r.AbsolutePosition; " "; ' " ["; R.Status; "]:";
     For Each F In r.Fields
        Debug.Print F.Name; ":"; 'F.OriginalValue;
        Debug.Print "|"; F.Value; "| ";
        If Err Then
            Debug.Print "("; Left$(Err.Description, 15); "...) ";
            Err.Clear
        End If
    Next
    Debug.Print
    r.MoveNext
Loop
 
Salida:
r.Filter = SaveFilter
if not IsEmpty(SaveBmk) then r.Bookmark = SaveBmk
Err.Clear
End Sub
 
Sub Pend(r)
 
On Error Resume Next
 
Dim SaveFilter, SaveBmk
SaveFilter = r.Filter
If Err Then
    Debug.Print Err.Description
    Exit Sub
End If
 
If Not (r.EOF Or r.BOF Or (r.Status And adRecDeleted) <> 0) Then
    SaveBmk = r.Bookmark
End If
r.Filter = ""
r.Filter = adFilterPendingRecords
If r.RecordCount = 0 Then
    Debug.Print Err.Description
    Debug.Print " adFilterPendingRecords, RecordCount = 0"
    GoTo Salida
End If
 
 
Dim F As Field
r.MoveFirst
Do While Not r.EOF
    Debug.Print "REC:"; r.AbsolutePosition; "["; r.Status; ":";
    If r.Status And adRecDeleted Then Debug.Print "Del ";
    If r.Status And adRecModified Then Debug.Print "Mod ";
    If r.Status And adRecNew Then Debug.Print "New ";
    Debug.Print "] ";
     For Each F In r.Fields
        Debug.Print LCase$(F.Name); ":|"; F.OriginalValue;
        If r.Status And adRecDeleted Then
            Debug.Print "| ";
        Else
            Debug.Print "|"; F.Value; "| ";
            If Err Then
                Debug.Print "("; Left$(Err.Description, 5); "...) ";
                Err.Clear
            End If
        End If
    Next
    Debug.Print
    Err.Clear
    r.MoveNext
    If Err Then
            Debug.Print "Movenext: ("; Err.Description & ")"
            Exit Do
    End If
Loop
Err.Clear
 
Salida:
r.Filter = SaveFilter
If Not IsEmpty(SaveBmk) Then r.Bookmark = SaveBmk
Err.Clear
 
End Sub
Herramientas personales