|
Página 1 de 2
|
Problema Con El Evento Data De GridView. DrawingArea Is Being Drawn
Autor |
Mensaje |
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Problema Con El Evento Data De GridView. DrawingArea Is Being Drawn
Hola!.
Parece que he conseguido reproducir el error.
- Si aumento mucho la longitud del texto crea el problema.
- Si aumento el tamaño de la fuente, lo mismo.
- Si aumento mucho el número de las columnas, igual.
Aquí tenéis una pantalla del ejemplo funcionando correctamente, con la versión 3.6.2 de Gambas.
Versión estable.
Aquí tenéis el código fuente para que vayais cambiando:
- 1º El tamaño del texto. Luego dejarlo como estaba antes.
- 2º El tamaño de la fuente.Luego dejarlo como estaba antes.
- 3º El número de columnas.
No mezcléis los problemas, problemas uno a uno.
Public Sub _new()
End
Public Sub Form_Open()
End
Public Sub GridView1_Data(Row As Integer, Column As Integer)
Dim f As New Font
Dim contenido As String
contenido = "gambas es basic." & " " & Row & ", " & Column
'contenido = "gambas es tambien basic." & " " & Row & ", " & Column
f.Name = "Sans"
f.Size = 10
'f.Size = 12
GridView1.Data.Text = contenido
If GridView1.Columns[Column].Width < f.TextWidth(GridView1.Data.Text) Then
GridView1.Columns[Column].Width = f.TextWidth(GridView1.Data.Text)
Endif
End
Public Sub Form_Activate()
GridView1.Rows.Count = 3
GridView1.Columns.Count = 3
'GridView1.Rows.Count = 4
'GridView1.Columns.Count = 4
End
Saludos
Descripción: |
|
Descargar |
Nombre del archivo: |
GridView_evento_Data2.tar.gz |
Tamaño: |
4.99 KB |
Descargado: |
45 veces |
Descripción: |
|
Descargar |
Nombre del archivo: |
GridView_evento_Data2.tar.gz |
Tamaño: |
4.99 KB |
Descargado: |
45 veces |
Descripción: |
|
Descargar |
Nombre del archivo: |
GridView_evento_Data2.tar.gz |
Tamaño: |
4.99 KB |
Descargado: |
45 veces |
=================== Gambas Básico
"No es un bug, es una característica no documentada"
última edición por Shell el Miercoles, 19 Noviembre 2014, 19:45; editado 2 veces
|
#1 Miercoles, 19 Noviembre 2014, 19:17 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Problema Con El Evento Data De GridView. DrawingArea Is Being Drawn
Sin haberlo probado, me temo que es un error cambiar el ancho de la columna a mitad del evento data. Este evento rellena la celda, pero al mismo tiempo le cambias lo parámetros de la misma... lo mismo estoy equivocado, pero me temo que los tiros van por ahí.
|
#2 Jueves, 20 Noviembre 2014, 10:46 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Problema Con El Evento Data De GridView. DrawingArea Is Being Drawn
A ver si podéis confirmar que no os da problemas con la 3.6. Tenía que haber usado el foro de componentes o librerías.
He tenido que bajar a la 3.5 para hacerlo funcionar sin ningún problema. Menos mal que aun estaba en la cache de Apt.
Lo he probado con tres equipos con Linux Mint 17 Mate con la estable 3.6.2 y me da ese problema.
El efecto es como si la barra horizontal del GridView no se mostrase en ese momento.
Ya que si esta apareciera, el área donde se muestra el texto en las columnas sería mayor y tendría mas zona donde dibujar internamente el DrawingArea.
El caso es:
Que por otro lado es normal, los errores se detectan y se arreglan lo antes posible.
En el caso de un profesional que tiene clientes con su software, una cosa así es un palo.
Dejando congelada la versión de gambas, la suya y la de sus clientes.
Vamos que se lo tiene que pensar dos veces para instalar una versión superior a la que tiene.
Saludos
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#3 Jueves, 20 Noviembre 2014, 10:55 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Problema Con El Evento Data De GridView. DrawingArea Is Being Drawn
Sin haberlo probado, me temo que es un error cambiar el ancho de la columna a mitad del evento data. Este evento rellena la celda, pero al mismo tiempo le cambias lo parámetros de la misma... lo mismo estoy equivocado, pero me temo que los tiros van por ahí.
Es como algo infinito ,¿ verdad ?. Como si no acabara nunca y que posiblemente acabe en un desbordamiento.
La cuestión es que en la versión 3.5 haciendo lo mismo, no falla en nada de lo comentado
Otra cosa es que no sea la forma más correcta de hacerlo. Esto puede pasar.
¿ Qué método usarías para cambiar el tamaño de la columna del GridView si quieres mostrar campos de texto de una base de datos que cambian su longitud ?.
Saludos
=================== Gambas Básico
"No es un bug, es una característica no documentada"
última edición por Shell el Jueves, 20 Noviembre 2014, 11:42; editado 1 vez
|
#4 Jueves, 20 Noviembre 2014, 11:41 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Problema Con El Evento Data De GridView. DrawingArea Is Being Drawn
Si le das a la columna un ancho de -1 se adapta al título. Si le activas la propiedad Expand, se adapta al tamaño del Gridview.
Si quieres modificar los tamaños a tu gusto, yo tengo dos funciones siempre una que formatea el aspecto y otra que rellena las celdas (la segunda es el _data, claro)
Saludos.
|
#5 Jueves, 20 Noviembre 2014, 13:03 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
Re: Problema Con El Evento Data De GridView. DrawingArea Is Being Drawn
Shordi:
If GridView1.Columns[Column].Width < f.TextWidth(GridView1.Data.Text) Then
GridView1.Columns[Column].Width = f.TextWidth(GridView1.Data.Text)
Endif
Citar: Si quieres modificar los tamaños a tu gusto....
La idea es que se adapte al contenido que tenga las celdas, que provienen del resultado de una consulta...
|
#6 Jueves, 20 Noviembre 2014, 13:53 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Problema Con El Evento Data De GridView. DrawingArea Is Being Drawn
Citar:
La idea es que se adapte al contenido que tenga las celdas, que provienen del resultado de una consulta...
Sí si eso lo he entendido, lo que pasa es que no me parece muy correcto. Desconozco el gridview a fondo (no he estudiado el código fuente), pero parece como que el cambio del column.width dispara eventos draw en el drawing area y estos como que se le "amontonan"...
Veo mucho más rápido controlar el tamaño con una variable o array y modificar el ancho una vez finalice el data, o algo así.
De todas formas, como tema tangencial, no me parece una buena solución para los Gridviews. Haciendo esto te arriesgas a "descolocar" todas las columnas según avances hacia delante o atrás. Imagina que tienes un gridview con nombres, direcciones y sueldos. La variación entre direcciones puede ser enorme, según eso, si estás siguiendo la columna de sueldos y al pulsar avance página la dirección de un registro es enorme, te encuentras con que el sueldo se te va de la pantalla por la derecha o, cuando menos, se te cambia de sitio...
por ello:
A) Dale un ancho concreto y pon a cierto la porpiedad wrap o
B) Calcula el ancho según el número de caracteres del campo o
C) Dale un ancho proporcional a la ventana (y el wrap o no, claro) o
D) (Lo que yo hago) a la columna que se le de un ancho fijo, que quede fijo y a la que no, que quede proporcional. Si el usuario amplia o disminuye el ancho con el ratón, el ancho queda fijo. Tienes un ejemplo en la clase xGrid de los controles "enganchados" que subí hace unos días. ( http://foro.gambas-es.org/viewtopic.php?f=5&t=4220 )
Pero para gustos lo colores, claro.
última edición por shordi el Jueves, 20 Noviembre 2014, 18:23; editado 2 veces
|
#7 Jueves, 20 Noviembre 2014, 18:21 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Problema Con El Evento Data De GridView. DrawingArea Is Being Drawn
Estuve jugando con el Scrollbar del Gridview y probé a cambiar las propiedades de esta.
- Si no le doy posibilidad de que se muestre la barra horizontal. No existe el problema . ( No vemos los registros).
Mientras no este activa para mostrar la barra si hay un desplazamiento horizontal, no hay problema.
- Si uso el componente gb.gui o gb.gtk la barra se muestra, pero hay errores en la consola.
Citar:
(GridView_evento_Data2:3160): Gtk-CRITICAL **: IA__gtk_widget_get_direction: assertion 'GTK_IS_WIDGET (widget)' failed
Ese error es constante por cada actualización del evento Data. No se produce error del DrawingArea.
- Si uso el componente gb.gtk3. No hay salida de errores por la consola y no se produce el error del DrawingArea.
La idea es usar qt4...
Gracias Jorge, probare tus soluciones.
Saludos
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#8 Jueves, 20 Noviembre 2014, 19:30 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
Re: Problema Con El Evento Data De GridView. DrawingArea Is Being Drawn
Shell:
Citar: La idea es usar qt4...
Yo uso desde hace mucho tiempo (por lo menos 2 años), el componente gb.qt4.
Con gb.gtk he tenido problemas muy extraños que se resolvian "milagrosamente" usando gb.qt4. Por eso en todas mis aplicaciones uso gb.qt4.
Shordi:
Citar: A) Dale un ancho concreto y pon a cierto la porpiedad wrap o
B) Calcula el ancho según el número de caracteres del campo o
C) Dale un ancho proporcional a la ventana (y el wrap o no, claro) o
D) (Lo que yo hago) a la columna que se le de un ancho fijo, que quede fijo y a la que no, que quede proporcional.
Son interesantes las opciones que das.
Incluso se podria crear una método que tenga de parametro estas opciones, y asi el programador, pueda elegir el que mejor se adapte a los campos que tenga que mostar en el gridview.
Saludos
|
#9 Jueves, 20 Noviembre 2014, 20:16 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Problema Con El Evento Data De GridView. DrawingArea Is Being Drawn
¿ Conocías el evento Draw del GridView ?.
Evento Draw de GridView
No soluciona el problema, ¿ es casi como el data pero más ampliado ?.
Saludos
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#10 Jueves, 20 Noviembre 2014, 20:28 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 2
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas No puede adjuntar archivos Puede descargar archivos No puede publicar eventos en el calendario
|
|
|
|
|