PDA

Ver la Versión Completa : StringGrid. Ancho de una columna


jocaro
09-09-2018, 17:02:05
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:

...
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:
https://s15.postimg.cc/d72rg4wwr/jocaro.png

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