Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #4  
Antiguo 09-04-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
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.

La propiedad ListField, de tipo string, contiene el valor o valores de el/los campos que van a ser mostrados, quizá haya otro modo de hacerlo pero lo único que se me ocurre ahora, es recurrir a la propiedad DisplayWidth del TField relacionado.

Veo dos opciones, la primera ajustando arbitrariamente la longitud de los campos a mostrar, ejemplo:
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
  ...
  DataSet.FieldByName('Campo1').DisplayWidth:= 15;
  DataSet.FieldByName('Campo2').DisplayWidth:= 10;
end;
Esto es simple y rápido pero truncará los valores si estos exceden el valor que se designo a la propiedad DisplayWidth.

La segunda es hacer un recorrido previo del TDataSet para calcular el valor máximo de cada campo a mostrar y luego ajustar la propiedad DisplayWidth a ese valor:
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
var
  Max, Len: TPoint;
begin
  with DataSet do
  begin
    ...
    Max.X:= 0;
    Max.Y:= 0;
    First;
    while not Eof do
    begin
      Len.X:= Length(FieldByName('Campo1').AsString);
      Len.Y:= Length(FieldByName('Campo2').AsString);
      if Len.X > Max.X then Max.X:= Len.X;
      if Len.Y > Max.Y then Max.Y:= Len.Y;
      Next;
    end;
    FieldByName('Campo1').DisplayWidth:= Max.X;
    FieldByName('Campo2').DisplayWidth:= Max.Y;
    First;
  end;
end;
A esta última forma le veo dos inconvenientes, el primero que si existe algún campo con un valor de longitud igual al declarado en el campo es inútil. El segundo es que es ineficiente ya que recorre todo el dataset para hallar los máximos.
También está la posibilidad de reducir el tamaño de la fuente pero, lógicamente tiene un límite y pienso que ya lo debes haber intentado...

Por otro lado tomá en cuenta, que esto esta pensado para tratar con TStringField y también salvar los valores originales de las propiedades DisplayWidth de los campos modificados para restaurarlos al salir.


Saludos.
__________________
Daniel Didriksen

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



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
como pasar datos de un DBLookupComboBox a otro DBLookupComboBox francodelphi Conexión con bases de datos 3 30-11-2011 22:02:34
dblookupcombobox josi SQL 1 29-03-2008 16:37:45
DBLookupComboBox ChristianP Varios 3 16-03-2007 00:12:28
Dblookupcombobox desplegar todos los valores euss Conexión con bases de datos 2 12-04-2006 21:30:55


La franja horaria es GMT +2. Ahora son las 14:47:39.


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