Control Grid

Útil para cuando queremos que el combo muestre una descripción en vez de un campo código.
IMPORTANTE: La cantidad de registros está limitada. Evitad poner en este campo una select que traiga muchos registros. Ya que para cada registro de la grid, ejecuta la consulta y penaliza en rendimiento y tiempos de carga.

Los combos del grid nos muestran el dato guardado, y permiten visualizar hasta 3 columnas en el desplegable. Cuando queremos que en vez de enseñarnos el dato guardado, nos muestre otro (como una descripción) debemos utilizar la propiedad Value Items.
En principio la máscara se define al crear la columna, como un parámetro de entrada en la función agregaColumna. Cuando el grid ya está definido podemos cambiar la máscara para que sustituya el valor que muestra por otro que esté relacionado en una select.

Definición:
Grid.ValueItems (aCampo as String,[aSql],[aEsResId as Boolean]) AS ValueItems
- aSQL debe indicar 2 campos, donde el primero es el campo que está en la grid y se quiere reemplazar, y el segundo es lo que queremos ver.
- aEsResId indica si lo que queremos ver es una imagen. En este caso, el segundo valor de la select debe devolver el icono correspondiente a la tabla iconos (y por supuesto al repositorio de imagenes de iconos accesible desde el ADMON)

Ver código ejemplo

    'Formulario de pedidos. Cambiar la máscara del combo para que en vez del IdIva muestre el porcentaje.
Sub Show ()

     gForm.Controls("grdLineas").ValueItems "IdIva","Select IdIva, Porcentaje from Ivas", False
end sub

ValueItem para visualizar Iconos
'
Este es el código del campo IdEstado del grid de líneas de pedidos de formularios de pedidos/albarán/factura
grdLineas.AgregaColumna "IdEstado", 400, "E", True, , , , , "Select IdEstado,Icono From Pedidos_cli_estados", True


'Ejemplo en un grid con una columna que muestra el icono de una impresora
'Usaremos un frmMantenimiento de la tabla de idiomas, con un campo formulaSelect que devuelve el valor de un icono.

Sub Main()


     frmAux.Descargar 'ATENCIÓN: DEBE ESTAR SIEMPRE QUE NO SE MUESTRE EL FORMULARIO.

     Set lFrm = gcn.ahoraproceso ("NewFrmMantenimiento",False,gcn)

     lfrm.Form.NombreForm = "Pers_frmMant_Idiomas"

     With lFrm.Grid("Idiomas") ' NO_TRADUCIR_TAG

             .Agregar = True

             .Editar = True

             .Eliminar = True

             .CargaObjetos = False

             .EditarPorObjeto = False

             .Grid.HeadLines = 2

             .AgregaColumna "IdIdioma", 2500, "IdIdioma"

             .AgregaColumna "Descrip", 2500, "Descripción",False

             .AgregaColumna "ICONO", 400, "I", True, , , , , "select id, icono from vPers_Icos", True 

             .Campo ("Icono").Formulaselect = "select 1"

             .campo ("IdIdioma").Default = "Select isnull(max(IdIdioma),0) +1 from Idiomas"

             .From = "Idiomas" 

             .Where = ""

             .ColumnaEscalada = "Descrip"

             .OrdenMultiple = "Descrip"

             .RefrescaSinLoad = True 

             .Refresca = True

     End With

     lFrm.Form.Caption = "Mantenimiento de Idiomas "

     lFrm.Carga , False, 4
End Sub


--Esta es la definición de la vista vPers_Icos de la query
create view vPers_Icos
as
select 1 Id, 1037 icono
go
zpermisos vPers_Icos

Autor: Daniel Ernesto Lutz Llano