Control Grid

Descripción:
Formulario de filtrado de información para seleccionar un elemento en concreto de una lista de selección.
Se usa para poder filtrar la información por más de un campo. Cuando el filtrado de un combo por un campo no es suficiente.
Consiste en la llamada al formulario de selección genérico mediante la pulsación de la tecla F3 en un campo del grid (ver "Formulario asistente de selección genérico" en este mismo apartado de tutorial de scripts).

Funcionamiento:
Si el campo del grid tiene configuradas las propiedades AsignaAsistente y AssistAddField, si el usuario pulsa F3, saldrá un formulario con un grid y campos de filtrado para facilitar la búsqueda de la información que desea poner en el campo.
Declaración de parámetros de métodos necesarios:
- AsignaAsistente: Icono:string ,From:string,Order:string, DataField[, Width:single=0, Height:single=0, MantieneCampos:bool = False, ControlFoco:bool = True]
- AssistAddField: aField:String, aDescrip As String, aType As String, Asize, aAutosize As Boolean=False, aDataField As Boolean=False, AsearchDield As Boolean = False, aFormat As String = ""


Los combos que añadamos en el grid cargarán automáticamente un asistente. Para desactivarlo hay que poner la propiedad DesactivaAsist a True.

Ejemplo:

gForm.Controls("grdLineas").Campo("IdEmpleado").DesactivaAsist = True


Si se desea cambiar el foco por defecto en el asistente, usar AssistAddField de la siguiente forma:

.AssistAddField "Descrip", gCn.Traducir(734, "Descripción con FOCO"), "String", 4500,True,,True

Es importante tener presente que el valor del Id del campo que esté actualmente seleccionado se copiará en el campo que tenga el foco.

Notas.
Para optimizar su uso conviene que los campos de filtrado no sean más de 2, y poner un campo "Descrip" que concatene en el mismo toda la información por la cual filtrar.


 Ver código ejemplo

Sub Main()

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

     'Ejemplo de utilización de asistente de selección de los campos de un grid. 

     'Consiste en lanzar el asistente de selección genérico, configurando las propiedades del campo AsignaAsistente y AssistAddField 

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

     lfrm.Form.NombreForm = "frmMantPers_ArticulosAlt"

     With lFrm.Grid("Articulo alternativos") ' NO_TRADUCIR_TAG

             .Agregar = True

             .Editar = True

             .Eliminar = True

             .CargaObjetos = False

             .EditarPorObjeto = False

             .Grid.HeadLines = 2

             .AgregaColumna "IdArticulo", 2500, "IdArticulo", False,"Select IdArticulo,IdArticulo IdArt, Descrip from Articulos order by Idarticulo"

             .AgregaColumna "IdArticuloAlt", 2500, "Art. Alt.",False,"Select IdArticulo,IdArticulo IdArt, Descrip from Articulos order by Idarticulo"

             .AgregaColumna "@Descrip", 2000, "Descripción",True

             .AgregaColumna "@M", 2000, "Marca",False

             .From = "" 

             .Where = ""

             .Campo ("@Descrip").Sustitucion = "Select Descrip from Articulos where IdArticulo = @IdArticuloAlt"

             .Campo ("@M").Booleano = True

             .Campo ("@M").Default = True 

             .ColumnaEscalada = "@Descrip"

             With .campo ("IdArticulo")

                 .Coleccion = "Articulos"

                 .ColeccionWhere = "Where IdArticulo = @IdArticulo"

                 'AsignaAsistente Icono:string ,From:string,Order:string, DataField[, Width:single=0, Height:single=0, MantieneCampos:bool = False, ControlFoco:bool = True] 

                 .AsignaAsistente gCn.Obj.Objetos("Articulos").Entorno.Icono1,"vCombo_Articulos", "", "IdArticulo", "IdArticulo", 8000, , False

                 'Campos del asistente

                 'AssistAddField aField:String, aDescrip As String, aType As String, Asize, aAutosize As Boolean=False, aDataField As Boolean=False, AsearchDield As Boolean = False, aFormat As String = ""

                 .AssistAddField "IdArticulo", "Id Artículo", "String", 2000, , True

                 .AssistAddField "Descrip", gCn.Traducir(734, "Descripción"), "String", 4500 

             End With

             .campo ("@Descrip").Coleccion = "Articulos"

             .campo ("@Descrip").ColeccionWhere = "Where IdArticulo = @IdArticuloAlt"

             '.OrdenMultiple = "IdArticulo"

             .RefrescaSinLoad = True 

             .Refresca = True

             .soloarray = True

     End With

     lFrm.Form.Width = lFrm.Form.width * 2

     lFrm.Form.Caption = "Artículo alternativos "

     lFrm.Carga , False, 4
End Sub

Autor: Daniel Ernesto Lutz Llano