Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-06-2011
Avatar de ingabraham
ingabraham ingabraham is offline
Miembro
 
Registrado: ago 2007
Posts: 614
Poder: 17
ingabraham Va por buen camino
Ajustar columnas en dbgrid

Necesito ajustar los datos de las columnas en un dbgrid.

tengo el sgte codigo , pero no me deja desplazarme bien por las celdas , ni dar doble clic algunas celdas.

Código Delphi [-]
Procedure DBGridMostrarDatosDrawColumnCell(Sender: TObject; /...

if length(Column.Field.AsString) > Column.Field.Tag then
begin
  Column.Field.Tag:= length(Column.Field.AsString);
  Column.Field.DisplayWidth:=Column.Field.Tag+2;
end;

quien tiene otro o me pueda ayudar en este problema con el codigo
__________________
Enseñar es la virtud de un sabio.
Responder Con Cita
  #2  
Antiguo 24-06-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

.Ajuste de columnas en un DBGrid
.para las columnas del dbgrid
.AutoAjustar un dbgrid

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 04-07-2012
Avatar de ingabraham
ingabraham ingabraham is offline
Miembro
 
Registrado: ago 2007
Posts: 614
Poder: 17
ingabraham Va por buen camino
Exclamation

ninguno me sirve, no hace lo que quiero

auto ajustar todos los campos a la maxima longitud del mayor dato en cada celda

uno de esto lo hace pero tomando como referencia la longitud del tamanno del nombre del campo
__________________
Enseñar es la virtud de un sabio.
Responder Con Cita
  #4  
Antiguo 04-07-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Hombre, un poco de esfuerzo, ahí tienes la idea de cómo se hace, tampoco te vamos a escribir el código completo a tu programa, ¿no?
Responder Con Cita
  #5  
Antiguo 07-07-2012
Avatar de ingabraham
ingabraham ingabraham is offline
Miembro
 
Registrado: ago 2007
Posts: 614
Poder: 17
ingabraham Va por buen camino
Unhappy

no pues, gracias x la ayuda.
les pregunto por que no tengo idea como podria hacerlo.
__________________
Enseñar es la virtud de un sabio.
Responder Con Cita
  #6  
Antiguo 07-07-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por ingabraham Ver Mensaje
uno de esto lo hace pero tomando como referencia la longitud del tamanno del nombre del campo
Te puede servir ese que comentas, en lugar del nombre del campo debes escoger el dato que se va a presentar. Y repetir el proceso por cada columna.
Puede ser engorroso, pero no hay otra opción, tienes que comprobar por cada columna para encontrar la que tiene más anchura, no te queda otra.
Responder Con Cita
  #7  
Antiguo 13-07-2012
Avatar de juanlaplata
juanlaplata juanlaplata is offline
Miembro
 
Registrado: ene 2007
Ubicación: La Plata, Bs. As. (Argentina)
Posts: 212
Poder: 18
juanlaplata Va por buen camino
este codigo ajusta el ancho de la colunma de un DBGrid a el maximo entre la cantidad de letras del titulo y de la cantidad de letras del dato de la primier fila y columna correspondiente.
Lo q no quita q mas abajo el ancho de columna deba cambiar .
Para eso, deberias calcular 1ro, cual sera el ancho max para cada columna, con el costo q eso trae ..

Código Delphi [-]
for i:= 0 to Grilla.Columns.Count-1 do
    begin
    Grilla.Columns[i].Title.Alignment:= taCenter;
    Grilla.Columns[i].Width :=
          Max((Grilla.Canvas.TextWidth(Grilla.Columns[i].Field.AsString)+20),
              (Grilla.Canvas.TextWidth(Grilla.Columns[i].Title.Caption)+10))
               ;
    end;
Responder Con Cita
  #8  
Antiguo 14-07-2012
Avatar de ingabraham
ingabraham ingabraham is offline
Miembro
 
Registrado: ago 2007
Posts: 614
Poder: 17
ingabraham Va por buen camino
Question

Cita:
Empezado por ingabraham Ver Mensaje
Necesito ajustar los datos de las columnas en un dbgrid.

tengo el sgte codigo , pero no me deja desplazarme bien por las celdas , ni dar doble clic algunas celdas.

Código Delphi [-]
Procedure DBGridMostrarDatosDrawColumnCell(Sender: TObject; /...

if length(Column.Field.AsString) > Column.Field.Tag then
begin
  Column.Field.Tag:= length(Column.Field.AsString);
  Column.Field.DisplayWidth:=Column.Field.Tag+2;
end;

quien tiene otro o me pueda ayudar en este problema con el codigo

Este codigo hace lo que quiero, si no que se me bloquea al recorrer los registros.
__________________
Enseñar es la virtud de un sabio.
Responder Con Cita
  #9  
Antiguo 06-08-2012
mapashhe mapashhe is offline
Registrado
NULL
 
Registrado: ago 2012
Posts: 2
Poder: 0
mapashhe Va por buen camino
Buenas, yo tambien tengo el mismo problema! Me gustaria unicamente darle un tamaño fijo a las columnas, unicamente para que puedan verse todas pero no me las he podido ingeniar! he intentado muchas cosas que lei por este foro pero todas terminan igual: Si me ayudan y las hacen mas chicas, pero no me deja desplazarme por las celdas, se recorre solo hasta la ultima celda en la columna y no me deja visualizar los primeros renglones.. alguien sabe que puedo hacer?

Tambien he intentado instalando otras grids, pero todas me tiran alguna clase de error al momento de instalarlas o si se instalan pero al momento de querer compilar el programa me tira un error de que no existe la libreria de dicho grid ;c AYUDA PLS!

Tengo delphi 7 y uso access 2010 (pero guarde la base como .mdb, de access 2003)

un saludo y gracias de adelantado!
Responder Con Cita
  #10  
Antiguo 06-08-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración
Responder Con Cita
  #11  
Antiguo 06-08-2012
mapashhe mapashhe is offline
Registrado
NULL
 
Registrado: ago 2012
Posts: 2
Poder: 0
mapashhe Va por buen camino
Ok amigo, la he leido, muchas gracias.. ahora alguna ayudita?
Responder Con Cita
  #12  
Antiguo 06-08-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Gracias por tu colaboración, aunque debes de haberla leído muy de pasada

Por cierto, al final de esta página tienes más enlaces que pueden servirte, ya que no te ha servido nada de lo comentado aquí. No sabemos el motivo.
Responder Con Cita
  #13  
Antiguo 06-08-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por mapashhe Ver Mensaje
Ok amigo, la he leido, muchas gracias.. ahora alguna ayudita?
Hola mapashhe.

A ver... probá de este modo:
Código Delphi [-]
procedure SetGridColumnWidths(aDBGrid: TDBgrid);
const
  DEFBORDER = 10;
var
  temp, n: Integer;
  lmax: array [0..30] of Integer;
begin
  with aDBGrid do
  begin
    DataSource.DataSet.DisableControls;
    try
      Canvas.Font := Font;
      for n := 0 to Columns.Count - 1 do
        lmax[n] := Canvas.TextWidth(Fields[n].FieldName) + DEFBORDER;
      DataSource.DataSet.First;
      while not DataSource.DataSet.EOF do
      begin
        for n := 0 to Columns.Count - 1 do
        begin
          temp := Canvas.TextWidth(trim(Columns[n].Field.DisplayText)) + DEFBORDER;
          if temp > lmax[n] then lmax[n] := temp;
        end; {for}
        DataSource.DataSet.Next;
      end;
      DataSource.DataSet.First;
      for n := 0 to Columns.Count - 1 do
        if lmax[n] > 0 then
          Columns[n].Width := lmax[n];
    finally
      DataSource.DataSet.EnableControls;
    end;
  end;
end;
Y tiene razón Casimiro: Hay que usar más la búsqueda.

Estoy seguro de haber puesto este código en otra oportunidad y si mal no recuerdo el amigo Chris puso en el mismo hilo uno no tan exácto pero si mucho mas rápido.

Saludos.

Edito: Y como buscando, al final se encuentra... aquí el enlace: [ Tamaño de fuente en píxeles ]
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 06-08-2012 a las 22:28:08.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
ajustar el header del dbgrid a la pantalla Rofocale Varios 4 18-05-2011 05:50:25
Ajustar ancho de columna en DBGRID Viky Varios 2 15-07-2010 18:39:48
DBGrid: Como redimensionar columnas si se redimensiona el dbGrid? quali OOP 6 08-02-2010 22:00:49
Ajustar Tamaño de Columnas en DBGrid. Essato Varios 1 26-06-2005 00:34:18
Ajustar columnas DBGRID? Coco_jac Varios 1 04-06-2005 01:12:36


La franja horaria es GMT +2. Ahora son las 13:36:07.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi