Grid - Establecer el foco en la grid

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

Control Grid

Al pulsar un botón del formulario, queremos que el foco del cursor se dirija a la primera columna del grid.
Útil para cuando queremos navegar en el grid con los cursores del teclado.

También podremos cambiar el aspecto del foco cuando seleccionamos un registro mediante la propiedad marqueeStyle. Útil para cuando establecemos una regla de color por línea y al seleccionar el registro no se ve el color configurado. Porque predomina el color del recordselector del grid.


Código VB6:

'Este ejemplo se posiciona en el el grid cuando se pulsa el botón guardar.
'Con la condición de que no haya contenido en el grid

Sub Initialize()
     gform.Controls("Botonera").ActivarScripts = True
End Sub

Sub Botonera_AfterExecute(aBotonera, aBoton) 
     If aboton.name = "botGuardar" Then
         Establecefoco
     End If
End Sub

Sub Establecefoco ()
     Dim g 'As AhoraOCX.cntGridUsuario
     Set g = gForm.Controls("NombreGrid")
     If g.rowcount = 0 Then 
         g.Setfocus
         g.grid.bookmark = 1
         g.grid.col = 1
         g.grid.Row=1
     End If
End Sub


Código C#:

using AhoraSistema;
using AhoraOCX;
using AhoraCore;

namespace AhoraScriptsPantalla
{
  public class AhoraCl_frmAlbaranes : AhoraOCX.AhoraBaseScript
  {

  
    public void Initialize()
    {
      (gForm.Controls["Botonera"] as ICntBotonera).ActivarScripts = true;
    }

    public void Botonera_AfterExecute(ICntBotonera aBotonera, IAhoraTool aBoton)
    {
      if (aBoton.Name == "botGuardar")
      {
        EstableceFoco();
      }
    }

    private void EstableceFoco()
    {
      ICntGridUsuario lGrid = (ICntGridUsuario)gForm.Controls["grdLineas"];
      if (lGrid.RowCount == 0) 
      {
        (lGrid as System.Windows.Forms.Control).Focus();
        lGrid.Bookmark = 1;
        lGrid.Col = 1;
        lGrid.Row = 1;
      }
    }

  }
}


Método alternativo mediante el uso de la propiedad CampoNuevaFila.


Código VB6:

Sub Initialize()
     gform.Controls("Botonera").ActivarScripts = True
End Sub
     
Sub Botonera_AfterExecute(aBotonera, aBoton) 
     If aboton.name = "botGuardar" Then
         Establecefoco
     End If
End Sub

Sub Establecefoco ()
     Dim g 'As AhoraOCX.cntGridUsuario
     Set g = gForm.Controls("grdlineas")
     If g.rowcount = 0 Then 
         g.CampoNuevaFila = "@CodigoBarras"
     End If
End Sub


Código C#:

using AhoraSistema;
using AhoraOCX;
using AhoraCore;

namespace AhoraScriptsPantalla
{
  public class AhoraCl_frmAlbaranes : AhoraOCX.AhoraBaseScript
  {

  
    public void Initialize()
    {
      (gForm.Controls["Botonera"] as ICntBotonera).ActivarScripts = true;
    }

    public void Botonera_AfterExecute(ICntBotonera aBotonera, IAhoraTool aBoton)
    {
      if (aBoton.Name == "botGuardar")
      {
        EstableceFoco();
      }
    }

    private void EstableceFoco()
    {
      ICntGridUsuario lGrid = (ICntGridUsuario)gForm.Controls["grdLineas"];
      if (lGrid.RowCount == 0) 
      {
        lGrid.CampoNuevaFila = "@CodigoBarras";
      }
    }

  }
}


¿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