Grid - Configuración de asistente de selección F3

Creado por David Miralpeix, Modificado el Fri, 16 Feb 2024 a las 12:25 PM por David Miralpeix

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);
        }
    }
}


¿Le ha sido útil este artículo?

¡Qué bien!

Gracias por sus comentarios

¡Sentimos mucho no haber sido de ayuda!

Gracias por sus comentarios

¡Háganos saber cómo podemos mejorar este artículo!

Seleccione al menos una de las razones
Se requiere la verificación del CAPTCHA.

Sus comentarios se han enviado

Agradecemos su esfuerzo e intentaremos corregir el artículo