Constantes
De GrialWIKI
(→Botones de comando y clase Grialbuttons) |
|||
Línea 194: | Línea 194: | ||
==Botones de comando y clase Grialbuttons== | ==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 | + | 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 | En la barra superior | ||
Línea 205: | Línea 205: | ||
* BUTTON_INFORM | * BUTTON_INFORM | ||
- | Cuando el usuario presiona alguno de estos botones , el GrialApl | + | 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 : | En la barra inferior : | ||
Línea 212: | Línea 212: | ||
* BUTTON_CANCEL | * BUTTON_CANCEL | ||
- | Cuando el usuario presiona alguno de estos botones , el GrialApl | + | 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== | ==Marcos Contenedores== |
Revisión de 20:19 31 ago 2009
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
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
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 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
Parametros de Sesion
Los siguentes datos se pueden acceder a través del parametro IDENTIDAD_ACTIVA del GrialApl Nota: Se recomienda acceder a estos datos utilizando las propiedades del control GrialFunctionFrame siempre que sea posible.
Por Ejemplo, para obtener el nombre del usuario: GrialCont.Parameter(“IDENTIDAD_ACTIVA”).Retorna(“USUA_NOMBRE”)
DATOS en (GrialCont.ParamRecibidos – GrialCont.Parameter)
Para vero todos los parámetros, hacer, en la ventana de Debug:
? grialcont.ParamRecibidos.Contenido
SERVER_LOCATION ---> |http://200.41.229.187| (del tipo 8) SERVEROBJ_CLASS ---> |GrialData.Server| (del tipo 8) USUARIO ---> |LTATO| (del tipo 8) CONEXION ---> |LTATO:PROD;WMMNFpnwqtFmvwn| (del tipo 8) DB_INSTANCE ---> |PROD| (del tipo 8) RELA_SOCUSUA15 ---> |1| (del tipo 8) ID_SOCUSUA01 ---> |1| (del tipo 8) SOCUSUA01_NOMBRE ---> |LTATO| (del tipo 8) SOCUSUA15_ENTIDAD ---> |TATO, LUCIO| (del tipo 8) SOCUSUA15_NRODOC ---> |20-21796978-7| (del tipo 8) SOCUSUA01_FBAJA ---> || (del tipo 8) SOCUSUA01_TIPO ---> |2| (del tipo 8) SOCUSUA01_TIENEUSERDB ---> |1| (del tipo 8) RELA_PREFORM02_BASE ---> |105| (del tipo 8) ENTIDAD ---> |Tato, Lucio| (del tipo 8) SU02_1 ---> |objeto| (del tipo 9) SU02_2 ---> |objeto| (del tipo 9) SU02_3 ---> |objeto| (del tipo 9) SU02_4 ---> |objeto| (del tipo 9) SU02_5 ---> |objeto| (del tipo 9) SU02_6 ---> |objeto| (del tipo 9) SU02_7 ---> |objeto| (del tipo 9) SU02_ACTIVA ---> |1| (del tipo 2) DISKSESSION_CONNINDEX ---> |1| (del tipo 3) INSTALACIONES_ROOT ---> |http://200.41.229.187| (del tipo 8) CONNECTION_INDEX ---> |0| (del tipo 8) ID_SYSFUNC03 ---> |3784| (del tipo 3) ID_FUNC ---> |3784| (del tipo 3) FUNC_URL ---> |/instalaciones| (del tipo 8) FUNC_DESCRI ---> |Proceso Respuesta Banco Lotes Transferencias| (del tipo 8) FUNC_DESCRI_ROT ---> |Proceso Respuesta Banco Lotes Transferencias| (del tipo 8) FUNC_CODDUPL ---> || (del tipo 8) SOCUSUA21 ---> |153| (del tipo 3) SYSFUNC03 ---> |3784| (del tipo 3) PUEDEEJECUTAR ---> |0| (del tipo 3) MENU_ALTA ---> |-1| (del tipo 3) MENU_BAJA ---> |-1| (del tipo 3) MENU_MODI ---> |-1| (del tipo 3) MENU_CONSULTA ---> |-1| (del tipo 3) MENU_REPORTE ---> |-1| (del tipo 3) MENU_INFORME ---> |-1| (del tipo 3) MENU_FRM1 ---> -1 si el usuario esta habilitado, 0 en otro caso MENU_FRM2 ---> -1 si el usuario esta habilitado, 0 en otro caso MENU_FRM3 ---> -1 si el usuario esta habilitado, 0 en otro caso MENU_ACEPTAR ---> |-1| si el usuario tiene el boton aceptar
Para Acceder a cualquiera de estos parámetros utilizar GrialCont.Parameter. Ejemplo:
> ? GrialCont.Parameter(“SOCUSUA01_NOMBRE”) > LTATO
Para Acceder a los datos del Puesto activo (Soc_Usua_02) usar “SU02_ACTIVA”:
Ejemplo:
Dim IndiceSu02Activa as Integer IndiceSu02Activa = Val(GrialCont.Parameter("SU02_ACTIVA")) Dim SU02Activa As Object Set SU02Activa = GrialCont.ParamRecibidos("SU02_" & IndiceSu02Activa) Debug.Print "Su U.Organica es " & SU02Aciva!PREFORM11_DESCRI
Para ver todo el contenido del subgrupo de parámetros, realice en la ventana de Debug:
? SU02Activa.Contenido ID_SOCUSUA02 ---> |3666| (del tipo 8) RELA_SOCUSUA01 ---> |261| (del tipo 8) RELA_SOCUSUA21 ---> |161| (del tipo 8) RELA_PREFORM02 ---> |1825| (del tipo 8) RELA_PREFORM11 ---> |2301| (del tipo 8) RELA_PREFORM12 ---> |1681| (del tipo 8) SOCUSUA02_FBAJA ---> || (del tipo 8) PREFORM02_CODIGO ---> |1| (del tipo 8) PREFORM02_DESCRI ---> |Administración Central| (del tipo 8) PREFORM11_CODIGO ---> |GN.02| (del tipo 8) PREFORM11_DESCRI ---> |Organo Rector Presupuesto| (del tipo 8) PREFORM12_CODIGO ---> |AB| (del tipo 8) PREFORM12_DESCRI ---> |Administrador de la Base| (del tipo 8) RELA_PREFORM01 ---> |688| (del tipo 8) ID_PREFORM03 ---> |1931| (del tipo 8) PERI_DESCRI ---> |Período 2006| (del tipo 8) PERI_ANO ---> |2006| (del tipo 8) SYSFORM02_COD ---> |FOR| (del tipo 8) PREFORM02_CODRECTOR ---> |1| (del tipo 8) EJE_RELA_PREFORM01 ---> |686| (del tipo 8) EJE_ID_PREFORM03 ---> |1853| (del tipo 8) EJE_PERI_DESCRI ---> |Período 2005| (del tipo 8) EJE_PERI_ANO ---> |2005| (del tipo 8) EJE_SYSFORM02_COD ---> |EJE| (del tipo 8)
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
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