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