На главную
Подписка
Новости


Рейтинг@Mail.ru











Главная / DELPHI / Часто задаваемые вопросы и ответы на них / Компоненты / Можно ли сделать так чтобы TStringGrid автоматически изменял ширину колонок, чтобы вместить самую длинную строчку в колонке? Сделать домашней страницей Добавить в избранное Написать писмо

Можно ли сделать так чтобы TStringGrid автоматически изменял ширину колонок, чтобы вместить самую длинную строчку в колонке?


Пример:

procedure AutoSizeGridColumn(Grid : TStringGrid; column : integer);
var
   i : integer;
   temp : integer;
   max : integer;
begin
   max := 0;
   for i := 0 to (Grid.RowCount - 1) do
   begin
       temp := Grid.Canvas.TextWidth(grid.cells[column, i]);
       if temp > max then max := temp;
   end;
   Grid.ColWidths[column] := Max + Grid.GridLineWidth + 3;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   AutoSizeGridColumn(StringGrid1, 1);
end;

Комментарий от Сергея (right_wrist@mail.ru)
Автосайз колонок и высоты рядов проще сделать так, наверное:

procedure WriteToCell(Sender :TStringGrid; ACol, ARow :integer; Value :variant);
var
 Len: TSize;
begin
with Sender do begin
Cells[ACol, ARow] := value;
Win32Check(GetTextExtentPoint32(Canvas.Handle, Pchar(Cells[ACol, ARow]),
               Length(Cells[ACol, ARow]), Len));
if Len.cx > ColWidths[ACol] then ColWidths[ACol] := Len.cx+6;
if Len.cy > RowHeights[ARow] then RowHeights[ARow] := Len.cy+2;
end;
end;

Copyright ©   "Мастера DELPHI"   E-mail:   delphi@mastak.com  http://www.delphimaster.ru
Источник получения информации: http://www.delphimaster.ru
Hosted by uCoz