hola amigos como puedo ajustar el tamaño de espacio que tienen las celda de componente de mi grid.
los que pasa es que los campos de mi tablas soy de tamaño por ejemplo 80 y hasta 255 y por tal razones mi formulario con el grid se ve desajustado y me gustaria saber si existe una manera de como adjustarlo, porque tengo datos que tiene algunos menos espacios que otros.

como ajustar grid de de registro
Comenzado por
amell2020
, nov 09 2011 11:57
7 respuestas en este tema
#1
Escrito 09 noviembre 2011 - 11:57
#2
Escrito 10 noviembre 2011 - 11:45
Hola amell2020,
no sé si he entendido bien la pregunta, supongo que sabes que en los TDBGrid puedes crear columnas (objetos TColumn, basta con hacer doble click sobre el grid y te aparece el editor de columnas), cada columna tiene una propiedad Width donde especificas el ancho que quieres que tenga. Este ancho viene dado en pixels de pantalla (no en caracteres). Si lo que quieres es que al redimensionar el formulario, las columnas se ajusten a él para mostrarse todas ocupando el máximo espacio disponible, intercepta el evento OnResize del formulario (o del control que contenga la rejilla) y ahí recorres las columnas del Grid para ajustar el ancho que desees alterando dicha propìedad.
Y en caso de que no tengas definidas columnas para dicha rejilla, aún puedes realizar cambios por código durante la ejecución del programa, accediendo a la propiedad ColWidths, común a cualquier descendiente de TCustomGrid. Por ejemplo, para cambiar el ancho de la primera columna haría algo así:
Espero te sea de utilidad,
Saludos
no sé si he entendido bien la pregunta, supongo que sabes que en los TDBGrid puedes crear columnas (objetos TColumn, basta con hacer doble click sobre el grid y te aparece el editor de columnas), cada columna tiene una propiedad Width donde especificas el ancho que quieres que tenga. Este ancho viene dado en pixels de pantalla (no en caracteres). Si lo que quieres es que al redimensionar el formulario, las columnas se ajusten a él para mostrarse todas ocupando el máximo espacio disponible, intercepta el evento OnResize del formulario (o del control que contenga la rejilla) y ahí recorres las columnas del Grid para ajustar el ancho que desees alterando dicha propìedad.
Y en caso de que no tengas definidas columnas para dicha rejilla, aún puedes realizar cambios por código durante la ejecución del programa, accediendo a la propiedad ColWidths, común a cualquier descendiente de TCustomGrid. Por ejemplo, para cambiar el ancho de la primera columna haría algo así:
delphi
DBGrid1.ColWidths[0] := 180;
Espero te sea de utilidad,
Saludos
#3
Escrito 10 noviembre 2011 - 07:30
bueno puede entender lo que dices, me gustaria que me muestre un ejemplo
#4
Escrito 11 noviembre 2011 - 10:31
Hola amell2020, te pongo un ejemplo encantado, pero necesitaría saber exactamente qué es lo que quieres corregir
.
Supongamos que tienes un Grid con 4 columnas, y quieres que al maximizar el formulario se aproveche el espacio disponible y que el ancho de cada columna se agrande de forma proporcional. Supongamos que dicho Grid está insertado sobre un Panel, en ese caso el evento OnResize del Panel nos indica que éste ha cambiado de tamaño, ahí ajustamos el ancho de cada columna (objeto TColumn) accediendo a la propiedad Width de cada una, esto suponiendo que hayas definido columnas para cada campo que muestras en el Grid:
Bueno, es sólo un ejemplo, tú mismo lo puedes adaptar a tus necesidades.
Saludos

Supongamos que tienes un Grid con 4 columnas, y quieres que al maximizar el formulario se aproveche el espacio disponible y que el ancho de cada columna se agrande de forma proporcional. Supongamos que dicho Grid está insertado sobre un Panel, en ese caso el evento OnResize del Panel nos indica que éste ha cambiado de tamaño, ahí ajustamos el ancho de cada columna (objeto TColumn) accediendo a la propiedad Width de cada una, esto suponiendo que hayas definido columnas para cada campo que muestras en el Grid:
delphi
procedure TFormPrincipal.Panel1Resize(Sender: TObject); var W : Integer; begin W := DBGrid1.Width - 20; // memorizamos en W el ancho del Grid y le restamos 20 que es lo que aprox. ocupa la barra de desplazamiento vertical DBGrid1.Columns[0].Width := 100; // la primera columna ocupará 100 pixels Dec(W, DBGrid1.Columns[0].Width); // actualizamos W para saber lo que nos queda de ancho disponible DBGrid1.Columns[1].Width := W div 3; // la segunda columna ocupará la tercera parte de lo que nos queda de ancho Dec(W, DBGrid1.Columns[1].Width); // actualizamos W para saber lo que nos queda de ancho disponible DBGrid1.Columns[2].Width := DBGrid1.Columns[1].Width; // la tercera columna ocupará lo mismo que la segunda Dec(W, DBGrid1.Columns[2].Width); // actualizamos W para saber lo que nos queda de ancho disponible DBGrid1.Columns[3].Width := W; // la última columna ocupará todo el espacio restante end;
Bueno, es sólo un ejemplo, tú mismo lo puedes adaptar a tus necesidades.
Saludos
#5
Escrito 13 noviembre 2011 - 09:42
Bueno lo que yo quiero coregir es, es que tengo un grid que esta conectado a datasorch de una tabla, lo que pasa en tiempo de ejecucion los nombres de los campos se ponen muy grande que solo muestra un campo y los otros lo lleva atras.
#6
Escrito 14 noviembre 2011 - 09:23
Saludos.
¿Puedes subir una imagen para poder visualizar el problema?
Me disculpas, pero realmente no has sido bastante claro con lo que planteas.
¿Puedes subir una imagen para poder visualizar el problema?
Me disculpas, pero realmente no has sido bastante claro con lo que planteas.
#7
Escrito 14 noviembre 2011 - 12:21
Bueno ahy le deje una imagen, si ven en ejecución la tabla lista tiene 4 campo y solo me muestra un solo campo y para yo ver los otros campos tengo que mover la barra scrobar. porque en el grid los campo tienen un espacio muy amplio,
Archivos adjuntos
#8
Escrito 14 noviembre 2011 - 01:14
Amigo, creo que lo que necesitas es crear consultas y campos persistentes, me explico: Arrastrar hasta un módulo de datos un Query (que variará de acuerdo a los componentes de conexión que estés usando, TAdoQuery, TSqlQuery, TIBQuery, Tquery,etc), una vez allí, escribir la consulta en su propiedad SQL o equivalente según corresponda, una vez digitada la consulta haces dobleclick sobre el T??Query para invocar el editor de campos, entonces aprecerá los campos involucrados en la consulta, una vez allí puede seleccionar cada campo y darle su ancho correspondiente cambiando su propiedad DisplayWidth al ancho deseado. (Lo mismo es para una TTable o similar, solo que allí no digitarías consulta).
Después de estos pasos, también podrías crear columnas persistentes en el DBGrid, haciendo dobleClick sobre este y luego agregando las columnas para los campos deseados y si se quiere retocar la propiedad width de cada columna.
Saludos.
Después de estos pasos, también podrías crear columnas persistentes en el DBGrid, haciendo dobleClick sobre este y luego agregando las columnas para los campos deseados y si se quiere retocar la propiedad width de cada columna.
Saludos.