Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-02-2005
Avatar de Enan0
Enan0 Enan0 is offline
Miembro
 
Registrado: may 2004
Ubicación: Argentina
Posts: 565
Poder: 20
Enan0 Va por buen camino
Unhappy longitud de Celdas en DBGRID

Hola amigos estoy utilizando DELPHI 6 y tengo una dbgrid al cual quiero modificarle la longitud de las celdas, de forma automatica claro. (por codigo) alguien sabe como hacerlo?

gracias
Responder Con Cita
  #2  
Antiguo 13-02-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Hay que afinarlo, pero algo como esto, recorriendo toda la colección de campos:
Código Delphi [-]
 procedure TForm1.Button1Click(Sender: TObject);
 begin
 DbGrid1.Columns.Items[2].Width:=Query1.Fields[2].Size * Dbgrid1.Font.Size ;
 end;
Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 13-02-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
el ancho de cada columna se ajusta segun la propiedad DisplayWith del campo asociado a cada columna. Modificando esa propiedad, y reabriendo el dataset, consigues que el texto se ajuste.

Código Delphi [-]
procedure AjustaDisplayWidth(D:TDataSet;const MaxAncho:Integer = 150);
var i, nIdx:Integer;
begin
if D.Active then
begin
  try
  D.DisableControls;
  D.First;
  nIdx:=0;
  while not D.Eof do
  begin
     for i:=0 to pred(D.FieldCount) do
     begin
          // en la 1ª vuelta reseteo el displayWidth existente
          if (nIdx = 0) then
            D.Fields[i].DisplayWidth  := 1;
          D.Fields[i].DisplayWidth  :=EnsureRange(
                                                  Max(  D.Fields[i].DisplayWidth,
                                                        Length(D.Fields[i].AsString)+
 IfThen(D.Fields[i].DataType = ftFloat, 3,0) 
// añadimos espacios para ,00
                                                      ),
                                                  0,MaxAncho);
     end;
     D.Next;
     Inc(nIdx);
  end;
  finally
    D.EnableControls;
  end;
end; // D.active
end;
Despues de hacer esto quizás tengas que hacer un DBgrid1.rebuildcolumns.


Saludos
Responder Con Cita
  #4  
Antiguo 13-02-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Se me adelantó marcos teniendo en cuenta el tipo de fuente usada, yo simplemente pongo la courier jeje.

saludos de nuevo
Responder Con Cita
  #5  
Antiguo 15-02-2005
Avatar de Enan0
Enan0 Enan0 is offline
Miembro
 
Registrado: may 2004
Ubicación: Argentina
Posts: 565
Poder: 20
Enan0 Va por buen camino
Talking

Chicos Un millon de gracias a cada uno.. Porque la verdad no sabia como hacerlo..
Ultra agradesido!!!
Responder Con Cita
  #6  
Antiguo 30-05-2005
Avatar de sakuragi
sakuragi sakuragi is offline
Miembro
 
Registrado: feb 2004
Ubicación: root
Posts: 1.435
Poder: 22
sakuragi Va por buen camino
hola que tal

disculpen la pregunta

donde encuentro la propiedad DisplayWith

que no la encuentro por ninguna parte


gracias
__________________
OpenSuse OpenOffice.org icomputo
Responder Con Cita
  #7  
Antiguo 31-05-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
DisplayWidth es una propiedad de los TField asociados a cualquier dataset. Si creas campos persistentes, lo podes establecer en tiempo de diseño, si no, solo en ejecución.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #8  
Antiguo 31-05-2005
Avatar de sakuragi
sakuragi sakuragi is offline
Miembro
 
Registrado: feb 2004
Ubicación: root
Posts: 1.435
Poder: 22
sakuragi Va por buen camino
hola que tal, gracias por responder

ya localise donde esta el tfield lo que en tiendo es como le hago para empesar el procedure:

Cita:
procedure AjustaDisplayWidth(D:TDataSet;const MaxAncho:Integer = 150);
como accedo a el?

saludos
__________________
OpenSuse OpenOffice.org icomputo
Responder Con Cita
  #9  
Antiguo 31-05-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
¿al procedure?

Pues simplemente:

Código Delphi [-]
begin
  AjustaDisplayWidth(MiTabla);
  // o bien
  AjustaDisplayWidth(MiTabla, 200);
end;

hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
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


La franja horaria es GMT +2. Ahora son las 19:59:30.


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