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.
Código VB6:
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
Código C#:
using AhoraAsistentes; using AhoraOCX; namespace AhoraScriptsVacia { public class Script_0 : AhoraOCX.AhoraBaseScript { public void Main() { // Ejemplo de utilización 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 IFrmMantenimientos lFrm = (IFrmMantenimientos)gCn.AhoraProceso("NewFrmMantenimiento", out _, gCn); lFrm.NombreForm = "frmMantPers_ArticulosAlt"; ICntGridUsuario lGrid = lFrm["Articulo alternativo"]; lGrid.Agregar = true; lGrid.Editar = true; lGrid.Eliminar = true; lGrid.CargaObjetos = false; lGrid.EditarPorObjeto = false; lGrid.GridHeadLines = 2; lGrid.AgregaColumna("IdArticulo", 167, "IdArticulo", false, "Select IdArticulo,IdArticulo IdArt, Descrip from Articulos order by Idarticulo"); lGrid.AgregaColumna("IdArticuloAlt", 167, "Art. Alt.", false, "Select IdArticulo,IdArticulo IdArt, Descrip from Articulos order by Idarticulo"); lGrid.AgregaColumna("@Descrip", 133, "Descripción", true); lGrid.AgregaColumna("@M", 133, "Marca", false); lGrid.From = ""; lGrid.Where = ""; lGrid.Campo("@Descrip").Sustitucion = "Select Descrip from Articulos where IdArticulo = @IdArticuloAlt"; lGrid.Campo("@M").Booleano = true; lGrid.Campo("@M").Default = true; lGrid.ColumnaEscalada = "@Descrip"; ICampoGrid lCampoIdArticulo = lGrid.Campo("IdArticulo"); lCampoIdArticulo.Coleccion = "Articulos"; lCampoIdArticulo.ColeccionWhere = "Where IdArticulo = @IdArticulo"; lCampoIdArticulo.AsignaAsistente(gCn.Obj.Objetos["Articulos"].Entorno.Icono1.ToString(), "vCombo_Articulos", "", "IdArticulo", "IdArticulo", 533, 0, false); // Campos del asistente lCampoIdArticulo.AssistAddField("IdArticulo", "Id Artículo", ETipoDato.String, 300); lGrid.Campo("@Descrip").Coleccion = "Articulos"; lGrid.Campo("@Descrip").ColeccionWhere = "Where IdArticulo = @IdArticuloAlt"; lGrid.RefrescaSinLoad = true; lGrid.Refresca = true; lGrid.SoloArray = true; lFrm.Form.Width = lFrm.Form.Width * 2; lFrm.Form.Text = "Artículo alternativos"; lFrm.Carga(null, false, EBotonesMant.eBotMant_Cerrar); } } }