Jump to content


Photo

como ajustar grid de de registro


  • Please log in to reply
7 replies to this topic

#1 amell2020

amell2020

    Advanced Member

  • Miembros
  • PipPipPip
  • 340 posts
  • LocationEn un solo Lugar

Posted 09 November 2011 - 11:57 PM

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.
  • 0

#2 andres1569

andres1569

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 431 posts

Posted 10 November 2011 - 11:45 AM

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í:



delphi
  1. DBGrid1.ColWidths[0] := 180;



Espero te sea de utilidad,

Saludos
  • 0

#3 amell2020

amell2020

    Advanced Member

  • Miembros
  • PipPipPip
  • 340 posts
  • LocationEn un solo Lugar

Posted 10 November 2011 - 07:30 PM

bueno puede entender lo que dices, me gustaria que me muestre un ejemplo
  • 0

#4 andres1569

andres1569

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 431 posts

Posted 11 November 2011 - 10:31 AM

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:



delphi
  1. procedure TFormPrincipal.Panel1Resize(Sender: TObject);
  2. var
  3.   W : Integer;
  4. begin
  5.   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 
  6.   DBGrid1.Columns[0].Width :=  100;  // la primera columna ocupará 100 pixels
  7.   Dec(W, DBGrid1.Columns[0].Width);  // actualizamos W para saber lo que nos queda de ancho disponible
  8.   DBGrid1.Columns[1].Width :=  W div 3;  // la segunda columna ocupará la tercera parte de lo que nos queda de ancho
  9.   Dec(W, DBGrid1.Columns[1].Width);  // actualizamos W para saber lo que nos queda de ancho disponible
  10.   DBGrid1.Columns[2].Width :=  DBGrid1.Columns[1].Width;  // la tercera columna ocupará lo mismo que la segunda
  11.   Dec(W, DBGrid1.Columns[2].Width);  // actualizamos W para saber lo que nos queda de ancho disponible
  12.   DBGrid1.Columns[3].Width :=  W;  // la última columna ocupará todo el espacio restante
  13. end;



Bueno, es sólo un ejemplo, tú mismo lo puedes adaptar a tus necesidades.

Saludos
  • 0

#5 amell2020

amell2020

    Advanced Member

  • Miembros
  • PipPipPip
  • 340 posts
  • LocationEn un solo Lugar

Posted 13 November 2011 - 09:42 PM

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. 
  • 0

#6 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2092 posts
  • LocationRepública Dominicana

Posted 14 November 2011 - 09:23 AM

Saludos.

¿Puedes subir una imagen para poder visualizar el problema?

Me disculpas, pero realmente no has sido bastante claro con lo que planteas.
  • 0

#7 amell2020

amell2020

    Advanced Member

  • Miembros
  • PipPipPip
  • 340 posts
  • LocationEn un solo Lugar

Posted 14 November 2011 - 12:21 PM

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, 

Attached Files


  • 0

#8 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2137 posts

Posted 14 November 2011 - 01:14 PM

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.
  • 0




IP.Board spam blocked by CleanTalk.