Constantes

De GrialWIKI

(Diferencias entre revisiones)
(Página creada con ''''Referencia Grial =Sintaxis Extendida del Servidor de Datos= ==Sintaxis extendida para ejecución de Stored Procedures en el entorno Grial== El GrialDataServer provee una ...')
(Imagenes Existentes en el GrialImages)
Línea 301: Línea 301:
=Imagenes Existentes en el GrialImages=
=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==
==Código de la Función GetImage==
Línea 335: Línea 356:
End Function
End Function
</code>
</code>
-
 
-
==Lista de Keys para las ImageList==
 
-
*ToolbarNormal,ToolbarHot y ToolbarDisabled
 
-
**Alta,Baja,Modificaion,Consulta,Reporte,Informe,Aceptar,Cancelar
 
-
 
-
*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
 
-
 
===Ejemplo de uso:===
===Ejemplo de uso:===

Revisión de 20:13 31 ago 2009

Referencia Grial

Contenido

Sintaxis Extendida del Servidor de Datos

Sintaxis extendida para ejecución de Stored Procedures en el entorno Grial

El GrialDataServer provee una sintaxis extendida para ejecutar Stored Procedures en un servidor de datos, que incluye la posibilidad de recuperar parámetros de output o Input/Output.

La sintaxis es la siguiente

  Txn.Cmd "Execute: procedure_name;param;param..."

Donde :

procedure_name: Es el nombre del Stored Procedure en el servidor de datos.

y cada "param" es un parámetro de dicho SP con la sigiente sintaxis:

"IOType:Name[=Value][:DataType][:Size]"

Donde:

  • IOType = puede ser: IO u O, donde IO=Input-output y O=Output
  • Name = nombre a asignar al campo del Rst con los resultados
  • Value = valor inicial para el parametro (solo para IOtype=IO)
  • DataType = puede ser: Number , Varchar, String o Date. (“String” es equivalente a “Varchar”)

Para parámetros de input, sólo es necesario colocar el valor del Parámetro. Si el valor que se especifica es alfanumérico debe encerrarse entre comillas dobles o simples, "" o , con lo que se asume que el parámetro es de tipo "Varchar2"

Si se omite "datatype", se determina el tipo del parámetro ("Number" o "Varchar") según el resultado de la función IsNumeric(Value). Esto último debe tenerse muy en cuenta si no se sabe bien que tipo de valores se pasarán en un parámetro alfanumérico. Es aconsejable especificar siempre "DataType" como "Varchar", o encerrrar el valor entre comillas, cuando se tiene un parámetro alfanumérico definido en el Stored Procedure.

Por ejemplo:

Tenemos en el servidor de datos un Stored Procedure :

Procedure Prueba_Ejemplo ( Param1 in Varchar2
                           ,Param2 in  Number
                           ,Param3 in out Varchar2
                           ,Param4 in out Number
                           ,Param5 out Varchar2
                           ,ParamFecha IN Date ) 
is
Begin
  Param3:= substr(Param1,1,2);
  Param4:= Param2 + 10;
  Param5:= to_char(ParamFecha,'mmm');
End;


y lo llamamos desde el módulo:

Dim Grq as New GrialQuery
Grq.Init "Execute:Prueba_Ejemplo; 'UNO'; 2; IO:Param3=1024:Varchar; " & _
          "IO:Param4=2003; O:Param5; " & DateParam(Now) 
Grialcont.LoadData Grq

En esta llamada:

  • el primer parametro es de tipo varchar, con valor "UNO"
  • el segundo parametro es de tipo number con valor 2
  • el tercer parametro es de entrada/salida (IO), su nombre es "Param3", valor de entrada "1024" y su tipo "Varchar2"
  • el cuarto parametro es de entrada/salida (IO), su nombre es "Param4", valor de entrada 2003 y su tipo "Number" (por ser el valor asignado un numero)
  • el quinto parametro es de salida (O), su nombre es "Param5"
  • el sexto parametro es de tipo "Date" y su valor inicial es la fecha y hora actuales

Nota: La función "DateParam(Fecha)" (componente del GrialUtilP), formatea el parámetro de tipo fecha según el standard esperado por el Grial Data Server (formato: "yyyy-mm-dd HH.nn.ss").

Luego de la ejecución del comando, se devuelve como resultado un recordset con tantos campos como parámetros de tipo OUTPUT/IO se hallan especificado. Los nombres de los campos son los indicados mediante el codigo "name" en la especificación de parámetros.

Luego de la ejecución (LoadData), Grq.Rst tendrá un solo registro con los siguientes campos:

? Grq.Rst!Param3.Value 
  UN

? Grq.Rst!Param4.Value
  12

? Grq.Rst!Param5.Value
  mar

Donde cada valor será aquel que el SP haya establecido durante su ejecución para cada parámetro de OUTPUT/IO.

Utilizando nuevos IDs de la misma transacción

Es posible utilizar dentro de una transacción, un valor de nuevo ID calculado por la base de datos correspondiente a un alta realizada en un ítem previo de la misma transacción. Esto se realiza colocando la macro: [Last_ID] en cualquier lugar del comando, esta macro será reemplazada por el ultimo valor de ID dado de alta en el ítem de la transacción especificado. Por default la referencia es al ítem de la transacción inmediatamente superior, pero puede modificarse la referencia utilizando las propiedades Name= y Header= del parámetro secundario del método Cmd.

Por Ejemplo:

  Case BUTTON_NEW

       PreEjec10_grq.PrepareAddNew
       CargarRegistroNuevoPreventivo
       Txn.Cmd PreEjec10_grq.Rst, "Name=Header_preventivo:ID_PREEJEC10"
       Txn.Cmd PreEjec11_grq.Rst, "ID_PREEJEC11;RELA_PREEJEC10"
                   
       Txn.Cmd "Execute: PREEJEC10_IMPUTAR;[Last_ID]", "Header=Header_preventivo"


En este ejemplo, el procedimiento PREEJEC10_IMPUTAR tiene un solo parámetro de entrada, el cual será el ID del registro dado de alta en el ítem 0 (Name=Header_Preventivo) de la transacción.

El reemplazo de la macro [Last_ID] funciona en cualquier comando de texto que se envíe en una transacción, sean comandos SQL directos (Select,update,ect) o llamadas a procedimientos de la base.


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

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
            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. Puede hacerse referencia a estos botones a través de un objeto de la clase GrialButtons.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 visualiza la transacción y genera un evento ButtonClick

En la barra inferior :

  • BUTTON_ACCEPT
  • BUTTON_CANCEL

Cuando el usuario presiona alguno de estos botones , el GrialApl invisibiliza la transacción y genera un evento BottomButtonClick

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.