Portal    Foro    Buscar    FAQ    Registrarse    Conectarse

Nuevo Control: GvColumnFixer

Nuevo Control: GvColumnFixer
Artículo
Responder citando    Descargar mensaje  
Mensaje Nuevo Control: GvColumnFixer 
 
A raíz de una petición en otro hilo del foro, esta mañana me he divertido haciendo un control que es, básicamente, un Gridview al que puedes "fijar" columnas de modo que siempre sean visible a pesar de los Scrolls horizontales que se puedan hacer.
La idea de cómo hacerlo se me ha ocurrido en la cama esta noche y ha resultado buena: No es un Gridview, son dos coordinados.
El primero contiene las columnas que se hayan fijado, y no es visible si no hay columnas que fijar.
El segundo es un gridview normal al que se le ocultan las columnas que se dan por fijadas para no duplicarlas.
El control lo he hecho basado en un Result. Es decir, haces una consulta a una BD y le pasas el result en su propiedad Result.
Si alguien quiere algo más flexible, no es difícil de implementar para que acepte un array de dos dimensiones, un array de colecciones, un fichero .csv, etc.

El aspecto, una vez fijado un par de columnas es este:
 captura_de_pantalla_de_2019_08_19_20_05_31

Vale, vale, el nombre no es muy afortunado... más bien da ganas de vomitar pero si a alguien se le ocurre un nombre mejor que indique que "hereda de Gridview (gv) y Fija columnas (column fixer), que me lo diga y lo cambio encantado.

Para incorporarlo en vuestros proyectos podéis hacer dos cosas:
A.- Copiar la carpeta .../src/gvColumnFixer del proyecto adjunto a este mensaje en la carpeta ./src de vuestro proyecto y el archivo .hidden/control/gvcolumnfixer.png del proyecto en la misma carpeta de vuestro proyecto (si no existe .hidden/control la creáis).

B.- Crear el paquete de instalación con el proyecto adjunto e instalarlo en vuestro ordenador. A partir de ahí lo tendréis disponible como un componente más de Gambas.

El formulario de prueba que hay en éste proyecto crea una pequeña base de datos en el home de vuestro usuario y la borra al salir.

Espero que os sea útil

Saludos

Post Data:
Para añadir algo más de flexibilidad al invento, le he puesto dos referencias a los dos griviews y un evento AfterData(row, column) que se levanta después de procesado el evento data. Con eso se puede manipular cada celda ya rellenada de cada uno de los dos gridviews como se quiera.
Así, añadiendo éste código al formularioi Test
Public Sub gvColumnFixer1_afterData(row As Integer, column As Integer)

    gvColumnFixer1.GVScrolled[row, column].Font.Bold = True 'ponemos en negrita el gridview con scroll
    If Not gvColumnFixer1.GVScrolled[row, column].text Then gvColumnFixer1.GVScrolled[row, column].richtext = "NULO"' Ponemos la cadena NULO si el campo está vacío
    If gvColumnFixer1.FixedColumns.Count > 0 Then
        gvColumnFixer1.GVFixed[row, 0].Foreground = Color.red 'Si es un campo fijo lo escribimos en rojo
    Endif

End

Queda así:

 captura_de_pantalla_de_2019_08_22_21_46_32

Está chulo ¿no?
     



 
última edición por shordi el Sabado, 24 Agosto 2019, 22:51; editado 8 veces 
shordi - Ver perfil del usuario Enviar mensaje privado  
shordi [ Domingo, 18 Agosto 2019, 13:48 ]
 


Nuevo Control: GvColumnFixer
Comentarios
Responder citando    Descargar mensaje  
Mensaje Re: Nuevo Control: GvColumnFixer 
 
shordi escribió:  
que me lo diga y lo cambio encantado.



Genial eres un crack !!!!

Oye que te parece "FixedGridView" como posible nombre y en su interior poner una cabecera comentada para explicar su uso y característica.

Yo partiría de la librería oficial de GridView e intentaría que no se vea el foco de forma visible para que parezca un solo control e incluso la reescribiría para crear un componente nuevo. Pero son palabras de un soñador, por favor que no desvirtué tu gran trabajo.

Muchísimas gracias.



 
última edición por gambafeliz el Domingo, 18 Agosto 2019, 19:31; editado 1 vez 
gambafeliz - Ver perfil del usuario Enviar mensaje privado  
gambafeliz [ Domingo, 18 Agosto 2019, 19:28 ]
Responder citando    Descargar mensaje  
Mensaje Re: Nuevo Control: GvColumnFixer 
 
Citar:
Yo partiría de la librería oficial de GridView e intentaría que no se vea el foco de forma visible para que parezca un solo control e incluso la reescribiría para crear un componente nuevo.


No entiendo: Al abrirlo no se ve el foco y hasta donde coligo parece (y es) un control único. Por otra parte ya es un componente...(Menú->Proyecto->propiedades->General)



 
shordi - Ver perfil del usuario Enviar mensaje privado  
shordi [ Domingo, 18 Agosto 2019, 20:38 ]
Responder citando    Descargar mensaje  
Mensaje Re: Nuevo Control: GvColumnFixer 
 
shordi escribió:  
Citar:
Yo partiría de la librería oficial de GridView e intentaría que no se vea el foco de forma visible para que parezca un solo control e incluso la reescribiría para crear un componente nuevo.


No entiendo: Al abrirlo no se ve el foco y hasta donde coligo parece (y es) un control único. Por otra parte ya es un componente...(Menú->Proyecto->propiedades->General)


Hola, shordi

Yo no he visto el código y no he cargado nada en gambas. Perdón si no corresponde con algo o con todo. Yo tenia prisa y ví la imagen y note el problema que te contaba. Lo que ocurre en la imagen es que cuando tiene el foco el Gridview de la izquierda se resalta, fíjate en la imagen que tu aportas y que yo te voy a señalar.

Nuevamente lo normal es opinar viendo el componente si es así y no hablar desde una imagen. Perdón, vale.



 
gambafeliz - Ver perfil del usuario Enviar mensaje privado  
gambafeliz [ Domingo, 18 Agosto 2019, 22:50 ]
Responder citando    Descargar mensaje  
Mensaje Re: Nuevo Control: GvColumnFixer 
 
He modificado el control, de manera que ahora puedes fijar varias columnas y no sólo una.
He actualizado el post para que esto quede reflejado.


Saludos.



 
shordi - Ver perfil del usuario Enviar mensaje privado  
shordi [ Lunes, 19 Agosto 2019, 20:08 ]
Responder citando    Descargar mensaje  
Mensaje Re: Nuevo Control: GvColumnFixer 
 
Gracias Shordi.
Lo descargue y probare a ver que tal va.
Se me ocurre GridViewFix
Saludos.



 
tincho - Ver perfil del usuario Enviar mensaje privado  
tincho [ Martes, 20 Agosto 2019, 21:56 ]
Responder citando    Descargar mensaje  
Mensaje Re: Nuevo Control: GvColumnFixer 
 
Quedó maravilloso, gracias, eres un crak (como dicen ustedes los españoles, o eso creo que dicen jajaja)



 
datobinario - Ver perfil del usuario Enviar mensaje privado  
datobinario [ Jueves, 22 Agosto 2019, 20:09 ]
Responder citando    Descargar mensaje  
Mensaje Re: Nuevo Control: GvColumnFixer 
 
Joder shordi, estás que te sales últimamente!!!

Gran trabajo1



 
jguardon - Ver perfil del usuario Enviar mensaje privado  
jguardon [ Jueves, 22 Agosto 2019, 20:45 ]
Responder citando    Descargar mensaje  
Mensaje Re: Nuevo Control: GvColumnFixer 
 
El canto del cisne, nada más...
     



 
shordi - Ver perfil del usuario Enviar mensaje privado  
shordi [ Jueves, 22 Agosto 2019, 21:38 ]
Responder citando    Descargar mensaje  
Mensaje Re: Nuevo Control: GvColumnFixer 
 
Le he añadido un nuevo evento AfterData(row,column) y dos referencias a ambos gridviews. Mirad el inicio del hilo para más explicaciones.

Saludos.



 
shordi - Ver perfil del usuario Enviar mensaje privado  
shordi [ Jueves, 22 Agosto 2019, 21:57 ]
Mostrar mensajes anteriores:    
 
Ocultar¡Este tema fue útil?

 

Elegir valoración:                       

Media de valoración Valoración mínima Valoración máxima Número de valoraciones
0.00 0 0 0
 
Publicar nuevo tema  Responder al tema  Página 1 de 2
Ir a la página 1, 2  Siguiente
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno