Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   StringGrid. Ancho de una columna (https://www.clubdelphi.com/foros/showthread.php?t=93395)

jocaro 09-09-2018 17:02:05

StringGrid. Ancho de una columna
 
Hola

Tengo un stringgrid con varias columnas, en una de las cuales cargo un texto bastante largo, pero que no puedo ver completo.

Si uso el scroll, éste se mueve desde el tope de la izquierda al de la derecha rápidamente y el scroll de la informacion es mínimo.

¿Hay un límite en el ancho de columna en este componente?. ¿Hay que configurar alguna propiedad en concreto?. He ajustado la propiedad colwidth a un número elevado, pero no surte efecto a la hora de visualizar.

¿Alguno de vosotros que me pueda orientar?

Gracias por vuestra atención y un saludo

ecfisa 10-09-2018 00:32:52

Hola.

Entiendo que deseas desplazar horizontalmente parte de una columna, cuyo largo total, es mayor al del componente.

El TStringGrid realiza el scroll horizontal por columnas, de modo que si tu columna tiene un ancho mayor que el área de visualización, esta inevitablemente desaparecerá para dar paso a las siguientes al realizar un scroll horizontal .

Una opción, si necesitas mostrar todo el texto, es ser incrementar el alto de la fila y escribir el contenido en mas de un renglón, por ejemplo:
Código Delphi [-]
...
implementation

const
  LONGTEXT = 'Hola' + #10 +'Tengo un stringgrid con varias columnas, ' +
  'en una de las cuales cargo un texto bastante largo, ' +
  'pero que no puedo ver completo. Si uso el scroll, ' +
  'éste se mueve desde el tope de la izquierda al de la ' +
  'derecha rápidamente y el scroll de la informacion es mínimo.' + #10 + '...';

procedure TForm1.FormCreate(Sender: TObject);
var 
  sg: TStringGrid;
  i : Integer;
begin
  sg := StringGrid1;
  sg.DefaultRowHeight := 65;
  sg.ColWidths[0] := 430;
  for i := 0 to sg.RowCount - 1 do
  begin
    sg.Cells[0,i] := LONGTEXT;
    sg.Cells[1,i] := 'Columna 1';
    sg.Cells[2,i] := 'Columna 2';
  end;
end;

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  sg    : TStringGrid;
  Texto : string;
begin
  sg := TStringGrid(Sender);
  sg.Canvas.FillRect(Rect);
  Texto := sg.Cells[ACol,ARow] + ' ';
  DrawText(sg.Canvas.Handle, PChar(Texto), Length(Texto), Rect, DT_WORDBREAK);
end;
...

Resultado:


Saludos :)

jocaro 11-09-2018 13:07:12

Hola y gracias por tu ayuda

Probaré la presentación en varias líneas que propones

Un saludo


La franja horaria es GMT +2. Ahora son las 17:33:23.

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