Содержание материала

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

 

Code:

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

);

     if temp > max then max := temp;

   end;

Grid.ColWidths

:= Max + Grid.GridLineWidth + 3;

end;

 

procedure TForm1.Button1Click(Sender: TObject);

begin

AutoSizeGridColumn(StringGrid1, 1);

end;

 

 

Code:

procedure SetGridColumnWidths(Grid: TStringGrid;

  const Columns: array of Integer);

{

When you double-Click on a Column-Header the Column

autosizes to fit its content

 

Bei Doppelklick auf eine fixierte Spalte passt sich

die Spaltenbreite der Textgrosse an

}

 

  procedure AutoSizeGridColumn(Grid: TStringGrid; column, min, max: Integer);

    { Set for max and min some minimal/maximial Values}

    { Bei max and min kann eine Minimal- resp. Maximalbreite angegeben werden}

  var

    i: Integer;

    temp: Integer;

    tempmax: Integer;

  begin

    tempmax := 0;

    for i := 0 to (Grid.RowCount - 1) do

    begin

      temp := Grid.Canvas.TextWidth(Grid.cells

);

      if temp > tempmax then tempmax := temp;

      if tempmax > max then

      begin

        tempmax := max;

        break;

      end;

    end;

    if tempmax < min then tempmax := min;

    Grid.ColWidths

:= tempmax + Grid.GridLineWidth + 3;

  end;

 

  procedure TForm1.StringGrid1DblClick(Sender: TObject);

  var

    P: TPoint;

    iColumn, iRow: Longint;

  begin

    GetCursorPos(P);

    with StringGrid1 do

    begin

      P := ScreenToClient(P);

      MouseToCell(P.X, P.Y, iColumn, iRow);

      if P.Y < DefaultRowHeight then

        AutoSizeGridColumn(StringGrid1, iColumn, 40, 100);

    end;

  end;

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить