PDA

Ver la Versión Completa : Una más de lo DBGrid y su barra de desplazamiento


Gabo
14-09-2007, 18:27:55
He visto en las búsquedas que varios de ustedes han tenido problemas con los DBGrid y sus barras de desplazamiento. A mi me ha estado pasando que desaparece la barra de desplazamiento vertical, y sin ser DBGrid en maestro-detalle.

gluglu comentó en un hilo que al parecer es un bug... ¿Alguno ya ha encontrado la solución para ese problema? A mi me lleva de cabeza...

gluglu
14-09-2007, 18:47:41
Sin ser Maestro-Detalle ?

Cuando te desaparece la barra, en simple ejecución del programa, o cuando haces alguna operación especial tal como cerrar y abrir el DataSet asociado ?

Gabriel
14-09-2007, 21:40:25
A mi tambien me ocurria

Me da verguenza, pero busque una solucion super chapuza, pero siempre fuciona

encima o debajo del DBGrid, pongo un panel y despues de mostrar datos, siempre hago, panel1.Heigth := panel1.Heigth + 1 ; panel1.Heigth := panel1.Heigth - 1.

Con lo cual obligo a redibujar el DBGrid.

Intente con paint i apis i demas y la verdad, no me acabo de funcionar.

Y finalmente, lo solucione de esta forma tan chapuzilla.

Si alguien sabe alguna mejor ??
Me la apunto

Saludos

Gabo
17-09-2007, 10:59:19
Sin ser Maestro-Detalle ?

Efectivamente, sin ser Maestro-Detalle. Aunque reconozco que me pasa en forms con más de un DBGrid, no así en los que hay uno sólamente.


Cuando te desaparece la barra, en simple ejecución del programa, o cuando haces alguna operación especial tal como cerrar y abrir el DataSet asociado ?


Cierro y abro el Dataset en el evento OnShow y desde allí en adelante no me parecen las barras de desplazamiento. Bueno, aclaro, a veces sí aparecen y a veces no aparecen. Puedo haber terminado de ejecutar el programa y volverlo a ejecutar y ya me aparecen o viceversa. :confused:

A mi tambien me ocurria

Me da verguenza, pero busque una solucion super chapuza, pero siempre fuciona

encima o debajo del DBGrid, pongo un panel y despues de mostrar datos, siempre hago, panel1.Heigth := panel1.Heigth + 1 ; panel1.Heigth := panel1.Heigth - 1.

Con lo cual obligo a redibujar el DBGrid.

Intente con paint i apis i demas y la verdad, no me acabo de funcionar.

Y finalmente, lo solucione de esta forma tan chapuzilla.

Si alguien sabe alguna mejor ??
Me la apunto

Saludos

Chapuza será, pero si funciona... :rolleyes:

Pero, ¿como es eso de poner el panel encima del DBGrid? Te taparía el componente...

Gabriel
18-09-2007, 08:52:18
Bueno encima encima del componente no.

Pongo el Form, un panel, pequeño, o del tamaño que quieras en Aling al Top o AlBottom.

el Grid, por ejemplo Al Client, i al cambiar el panel de tamaño, el grid no me cambiaría, porque ja lo tengo AlClient,

Obligo a redibujar el Grid, y la barra sale de nuevo.

Piensa que si no, es un poco engorro, el echo de que tengas mas registros que mostrar y no este la barra del Grid, para poder navegar por ellos.

A mi me funciona siempre, desde hace años.
Antes busque alguna solución mas elegante, pero no obtuve respuestas.

Gabo
18-09-2007, 09:34:11
Bueno encima encima del componente no.

Pongo el Form, un panel, pequeño, o del tamaño que quieras en Aling al Top o AlBottom.

el Grid, por ejemplo Al Client, i al cambiar el panel de tamaño, el grid no me cambiaría, porque ja lo tengo AlClient,

Obligo a redibujar el Grid, y la barra sale de nuevo.

Piensa que si no, es un poco engorro, el echo de que tengas mas registros que mostrar y no este la barra del Grid, para poder navegar por ellos.

A mi me funciona siempre, desde hace años.
Antes busque alguna solución mas elegante, pero no obtuve respuestas.

Pues nada, lo dicho, si funciona... adelante!!! Lo probaré, muchas gracias :)

gluglu
18-09-2007, 10:02:03
No había intervenido hasta ahora porque suponía que Gabo tenía conocimiento de este hilo (http://www.clubdelphi.com/foros/showthread.php?p=197838&highlight=DBGrid1#post197838) en el cual participé en su momento.

Entiendo que no hace falta ningún Panel ni nada. Basta con redimensionar el propio DBGrid para que vuelvan a aparecer la barra de Scroll vertical.

procedure DataSource1DataChange(Sender: TObject; Field: TField);
begin
DBGrid1.Height := DBGrid1.Height + 1;
DBGrid1.Height := DBGrid1.Height - 1;
end;

Saludos ;)

Gabo
18-09-2007, 10:10:40
No había intervenido hasta ahora porque suponía que Gabo tenía conocimiento de este hilo (http://www.clubdelphi.com/foros/showthread.php?p=197838&highlight=DBGrid1#post197838) en el cual participé en su momento.

Entiendo que no hace falta ningún Panel ni nada. Basta con redimensionar el propio DBGrid para que vuelvan a aparecer la barra de Scroll vertical.


Código Delphi [-] (http://www.clubdelphi.com/foros/#)procedure DataSource1DataChange(Sender: TObject; Field: TField);
begin
DBGrid1.Height := DBGrid1.Height + 1;
DBGrid1.Height := DBGrid1.Height - 1;
end;




Saludos ;)

:eek: :eek: :eek: Sí, ya lo había leído, supongo que en ese momento no estaría muy lúcido de mente ya que pasé por alto la solución al problema... ¡Qué vergüenza! :o :p :o

Por lo que veo, la solución pasa por redibujar el DBGrid..

gluglu
18-09-2007, 10:13:49
gluglu comentó en un hilo que al parecer es un bug ...

Es que al leer esto por parte tuya dí por supuesto que habías leido el hilo y buscabas información adicional. ;)

Gabriel
18-09-2007, 23:42:47
Pregunto ?

Si el DBGrid esta en Aling AlClient, también se redibuja ?

El panel al estar en AlTop, si que realmente se hace mas grande o mas pequeño.
Panel1.Heigth := Panel1.Heigth + 1
Panel1.Heigth := Panel1.Heigth - 1

Pero bueno, todo es cuestión de probar, que probar eso no es mucha faena.

Ya os contare

Saludos