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 25-06-2015
wilcg wilcg is offline
Miembro
 
Registrado: abr 2014
Posts: 107
Poder: 11
wilcg Va por buen camino
Ajustar texto en campo TDBGridEh

Un saludo amigos del foro, lo que quiero es ajustar un texto largo en un campo DBGrid visualmente bonito.

suponemos que el texto se ve asi en el DBGrid

pero si el tamaño del campo es menor que el texto, quiero que muestre parte del texto seguido de 3 puntitos, tal como se.

como puedo lograr esto?.
Responder Con Cita
  #2  
Antiguo 25-06-2015
Avatar de Caminante
Caminante Caminante is offline
Miembro
 
Registrado: oct 2010
Ubicación: Lima - Peru
Posts: 338
Poder: 14
Caminante Va camino a la fama
Hola

Prueba asi:

Código Delphi [-]
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
  Field: TField; State: TGridDrawState);
var
  R:TRect;
begin
  r:=rect;
  DBGrid1.Canvas.FillRect(r);
  drawtext(dbgrid1.Canvas.Handle,pchar(field.asstring),-1,r,dt_singleline or DT_WORD_ELLIPSIS)
end;

Saludos
__________________
Caminante, son tus huellas el camino y nada más; Caminante, no hay camino, se hace camino al andar.
Antonio Machado
Responder Con Cita
  #3  
Antiguo 26-06-2015
ralf8727 ralf8727 is offline
Miembro
 
Registrado: may 2015
Posts: 22
Poder: 0
ralf8727 Va por buen camino
o asi

Código Delphi [-]
procedure TCONSULTACLIENTE.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);

  begin
  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;
Responder Con Cita
  #4  
Antiguo 26-06-2015
wilcg wilcg is offline
Miembro
 
Registrado: abr 2014
Posts: 107
Poder: 11
wilcg Va por buen camino
Gracias por aportar, en realidad estoy usando el componente TDBGridEh de EhLib y en este el codigo propocionado no esta resultando no hace nada. alguna sugerencia o aporte mas .
Responder Con Cita
  #5  
Antiguo 26-06-2015
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 wilcg.
Cita:
Empezado por wilcg Ver Mensaje
Gracias por aportar, en realidad estoy usando el componente TDBGridEh de EhLib...
Ese no es un detalle menor...

Por estas situaciones es que insistimos en que sean mas explícitos en las consultas: Por un lado obtendrás respuestas adecuadas a tu necesidad y por el otro tus compañeros no trabajarán de gusto...

Saludos y gracias por tu colaboración.

Nota: Cambié el nombre del componente en el título del hilo
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 26-06-2015
wilcg wilcg is offline
Miembro
 
Registrado: abr 2014
Posts: 107
Poder: 11
wilcg Va por buen camino
Tienes toda la razón ecfisa, es por eso que muchas veces no se obtiene la ayuda correcta mil disculpas a mis amigos ralf8727 y caminante por permitirse ayudar. y hay que decir que auque no sea un experto entre el DBGrid y DBGridEh son componentes muy parecidos hasta cierto punto y muchos codigos de un dbgrid funcionan perfectamente, quizas me deje llevar por la popularidad del DBGrid.
Responder Con Cita
  #7  
Antiguo 26-06-2015
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 wilcg.

La respuesta de Caminante es la misma que te hubiera dado para un TDBGrid y en teoría tendría que funcionar. Tal vez el evento OnDrawDataCell no sea el adecuado para ese componente, podrías probar en evento OnDrawColumnCell(si lo tiene) con mínimos cambios:
Código Delphi [-]
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
  R: TRect;
begin
  with TDBGridEh(Sender) do
  begin
    R := Rect;
    Canvas.FillRect(R);
    DrawText(Canvas.Handle, @Column.Field.AsString[1], -1, R, DT_SINGLELINE + DT_END_ELLIPSIS);
  end;
end;
Sucede que no conozco el componente ni sus eventos habría que probar...

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #8  
Antiguo 27-06-2015
wilcg wilcg is offline
Miembro
 
Registrado: abr 2014
Posts: 107
Poder: 11
wilcg Va por buen camino
Bueno agradecer por sus aportes el código va quedando así:

Código Delphi [-]
procedure TFrCarpClientes.GridClientesDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumnEh;
  State: TGridDrawState);
var
  R: TRect;
begin
  with TDBGridEh(Sender) do
  begin
    R := Rect;
    Canvas.FillRect(R);
    DrawText(Canvas.Handle, @Column.Field.AsString[1], -1, R, DT_SINGLELINE + DT_VCENTER + DT_END_ELLIPSIS);
  end;
end;
Y está funcionando bien, en principio el texto verticalmente quedaba aliniado en la parte superior del campo. he agregado DT_VCENTER y el texto ya está queda centrado. Ahora un detalle más ahora todos los campos Horizontalmente están aliniados a la izquierda del campo. como hago para dejarlo por defecto como estaba?.
Responder Con Cita
  #9  
Antiguo 27-06-2015
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 wilcg.

En el evento OnDrawColumnCell estas tomando el control de la salida del texto y por ese motivo ya no dispones de las alineaciones por defecto de las columnas.

Pero podes evaluar la alineación de la columna y actuar en consecuencia vg.:
Código Delphi [-]
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
  R      : TRect;
  uFormat: LongWord;
begin
  uFormat := DT_SINGLELINE or DT_VCENTER or DT_END_ELLIPSIS;

  case Column.Alignment of
    taLeftJustify : uFormat := uFormat or DT_LEFT;
    taRightJustify: uFormat := uFormat or DT_RIGHT;
    taCenter      : uFormat := uFormat or DT_CENTER;
  end;

  with TDBGridEh(Sender) do
  begin
    R := Rect;
    Canvas.FillRect(R);
    DrawText(Canvas.Handle, @Column.Field.AsString[1], -1, R, uFormat);
  end;
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #10  
Antiguo 27-06-2015
wilcg wilcg is offline
Miembro
 
Registrado: abr 2014
Posts: 107
Poder: 11
wilcg Va por buen camino
ecfisa este código quedo justo y completo como quería, creo yo que tienes una bola de cristal que te da todas las repuestas jeje... Gracias Maestro.
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 texto dentro de un boton kagua77 C++ Builder 3 27-03-2015 20:08:27
Ajustar texto en una celda de un DBGrid rubio OOP 15 19-10-2011 21:50:19
Ajustar DetailBand al texto salvanano Impresión 2 26-07-2007 19:04:01
Ajustar la posición al tamaño del texto Carmelo Cash Impresión 2 12-07-2006 22:40:24
Ajustar un Form al ancho de un texto salvica Varios 10 01-05-2004 04:11:02


La franja horaria es GMT +2. Ahora son las 00:46:52.


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