PDA

Ver la Versión Completa : reducir tamaño de columnas en un DBGrid


metroyd
17-04-2008, 21:41:40
Hola, en un DBgrid tengo el resultado de un Query, pero en la base de datos, estos campos estan como Varchar de tamaño grande. Entonces, el DBGrid resulta con un tamaño muy amplio en cada columna. Me gustaria saber si existe una propiedad que pueda modificar el ancho de las columnas, que dejara por ejemplo un tamaño unico para todas. O como puedo reducir las columnas sin hacerlo manualmente.
Otra cosa, no he encontrado la manera de mandar a imprimir lo que se visualiza en un DBGrid, alguien me puedo apoyar tambien con esto???? Gracias

boreg
17-04-2008, 23:20:31
Saludos, prueba con la propiedad width seria algo asi

var a :Integer;
for a := 0 to DBGrid.columns.count - 1;
DBGrid.Columns[a].Width:=100;


por supuesto que podrias indicar a cada columna un ancho diferente pero ya tu sabras como usarlo.
Y si para imprimir creo que tienes que usar el Dataset que tienes vinculado a tu DBGrid, prueba con los componentes para reportes, y si tienes dudas o problemas por aqui estaremos para ayudarte.

rafita
18-04-2008, 10:17:52
Hola, yo te ofrezco una propiedad alternativa.

Los datos del DBGrid provienen de una TQuery o TTable (yo siempre utilizo Querys), pulsa sobre este componente con el botón derecho y, en el menú contextual que te aparece, elige Fields Editor (editor de campos).

Ahí puedes crearte los campos y utilizar el Object Inspector para asignarles valores diferentes: un título, una fuente, un tamaño de visualización (en este caso es SIZE), máscaras de edición, alineaciones,...

A esto se les llama "campos persistentes".


Con respecto a imprimir el contenido de la rejilla, lo habitual es utilizar un informe (QuickReport, RaveReport,...) asignando el origen de datos TQuery o TTable al informe, y así te lo imprime solo.
También puedes exportarlo a Word, Excel,... pero recuerda que tus datos estén en el TQuery/TTable, no en en la rejilla.

Saludos

metroyd
18-04-2008, 17:33:11
Bueno, ya estoy checando eso. Yo creo que me quedaré con la segunda opcion porque puedo asi personalizar el tamaño para cada campo.
Ahora sobre la impresion:
La consulta la tengo en un ADOQuery llamado buscar, este esta asociado a un ADOConnection, que es donde esta la conexion a la base de datos mysql.
Despues de que el usuario elige sus datos a consultar mediante combobox, la consulta sql la mando al query buscar, este muestra el resultado en un dbgrid. Bien, he pensado usar el quickReport, incluso ya se que en un subDetail debo meter QRDBText para cada campo que deseo imprimir. El problema aqui es que son como 19 campos, y creo que la hoja no me alcanzaria, por lo que le di al usuario la opcion de elegir qué campos desea que se visualizen en el grid mediante CHeckBox, y solo oculto la columna que elija. Entonces, como puedo hacer para que me queden todos mis campos en una hoja de quickreport?? O pues no me quedaria de otra que exportar el query a excel y que el usuario se haga bolas.