Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Автоматический подбор ширины колонок для TStringGrid 2

Delphi , Компоненты и Классы , TStringGrid и TDrawGrid

Автоматический подбор ширины колонок для TStringGrid 2

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

   procedure TForm1.Button1Click(Sender: TObject);
   { by P. Below }
   const
     DEFBORDER = 8;
   var
     max, temp, i, n: Integer;
   begin
     with Grid do
     begin
       Canvas.Font := Font;
       for n := Low(Columns) to High(Columns) do
       begin
         max := 0;
         for i := 0 to RowCount - 1 do
         begin
           temp := Canvas.TextWidth(Cells[Columns[n], i]) + DEFBORDER;
           if temp > max then
             max := temp;
         end; { For }
         if max > 0 then
           ColWidths[Columns[n]] := max;
       end; { For }
     end; { With }
   end; {SetGridColumnWidths  }

Программный код на Delphi для автоматического определения ширины столбцов в компоненте TStringGrid:

Переменные и константы

  • DEFBORDER - константа, равная 8, которая представляет ширину границы вокруг каждой ячейки.
  • max, temp, i, n - целочисленные переменные.

Процедура Процедура вызывается при событии нажатия кнопки Button1. Она проходит по каждому столбцу в таблице с помощью цикла от Low(Columns) до High(Columns). Для каждого столбца она рассчитывает максимальную ширину текстового содержимого, проходя по каждой строке и измеряя ширину текста с помощью метода Canvas.TextWidth.

Цикл по строкам Для каждой строки код измеряет ширину текста в текущей ячейке с помощью:

temp  := Canvas.TextWidth(Cells[Columns[n], i]) + DEFBORDER;

Если это значение больше максимальной ширины (max), то обновляет max новым значением.

Обновление ширин столбцов После расчета максимальной ширины для каждой строки код проверяет, является ли максимальная ширина больше 0. Если это так, то устанавливает ширину столбца с помощью:

ColWidths[Columns[n]] := max;

Таким образом, каждый столбец становится широким enough для его наибольшего текстового содержимого.

Альтернативное решение Хотя это подход работает, он может не быть самым эффективным или точным способом определения идеальных ширин столбцов. Вот альтернативное решение с использованием TStringList для накопления длин текста и затем расчета максимальной ширины:

procedure TForm1.SetGridColumnWidths;
var
  max: Integer;
  i, n: Integer;
  textList: TStringList;
begin
  textList := TStringList.Create;
  try
    for n := Low(Columns) to High(Columns) do
    begin
      textList.Clear;
      for i := 0 to Grid.RowCount - 1 do
        textList.Add(Grid.Cells[Grid.Columns[n], i]);
      max := Max(textList.TextLength);
      if max > 0 then
        ColWidths[Grid.Columns[n]] := max * TextWidth + DEFBORDER;
    end;
  finally
    textList.Free;
  end;
end;

В этом альтернативном решении мы создаем TStringList для накопления текстовых содержимых ячеек столбца. Затем мы рассчитываем максимальную ширину, найдя максимальную длину текста в списке с помощью функции Max и умножив ее на ширину шрифта (TextWidth). Наконец, мы устанавливаем ширину столбца соответствующим образом.

Обратите внимание, что это подход может быть более эффективным для больших таблиц или сложного текстового содержимого, но также требует больше памяти для хранения накопленных длин текста.

В статье описывается процедура автоматического подбора ширины колонок для TStringGrid, которая использует алгоритм поиска максимальной длины текста в каждой ячейке и присваивает эту ширину соответствующей колонке.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: TStringGrid и TDrawGrid ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 03:58:28/0.0060780048370361/0