Можно ли сделать так чтобы 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 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 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; |
- Назад
- Вперёд >>
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!