Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Удаление колонки в TStringGrid

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

Удаление колонки в TStringGrid

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

type
   TStringGridHack = class(TStringGrid)
   public
     procedure DeleteCol(ACol: Longint);
   end;

 var
   Form1: TForm1;

 implementation


 procedure TStringGridHack.DeleteCol(ACol: Longint);
 begin
   if ACol = FixedCols then if ACol = (ColCount - 1) then
     begin
       Cols[ACol].Clear;
       if ColCount(FixedCols + 1) then ColCount := (ColCount - 1);
     end
     else
     begin
       Cols[ACol] := Cols[ACol + 1];
       DeleteCol(ACol + 1);
     end;
 end;

Привет! Вот перевод текста на русский язык:

Неплохой фрагмент кода на Delphi! Предлагаемый код - это класс TStringGridHack, который наследуется от TStringGrid. Цель этого класса - предоставить метод для удаления столбцов в компоненте TStringGrid.

Процедура DeleteCol принимает целочисленный параметр ACol, представляющий индекс столбца, который нужно удалить. Вот что код делает:

  1. Он проверяет, является ли удаляемый столбец одним из фиксированных столбцов (FixedCols). Если это так, и после него нет других столбцов (ColCount - 1), он просто очищает данные столбца (Cols[ACol].Clear) и корректирует свойство ColCount, уменьшая его.
  2. Если удаляемый столбец не является фиксированным, или если после него есть другие столбцы, он смещает все столбцы справа от точки удаления на одну позицию влево. Это делается путем присваивания данных из Cols[ACol + 1] в Cols[ACol], а затем рекурсивным вызовом себя с параметром ACol + 1 для удаления столбца, который был только что смещен.

Преимущества этого подхода:

  • Он сохраняет позиции фиксированных столбцов.
  • Он не оставляет пустых пробелов в таблице при удалении нескольких последовательных столбцов.
  • Он эффективен, поскольку он только один раз (или максимум два раза, в зависимости от сценария удаления) обходит столбцы.

Альтернативное решение могло бы быть использованием цикла, который обходит столбцы от ACol до ColCount - 1, смещая каждый столбец на одну позицию влево. Этот подход требовал бы меньше кода и может быть проще для понимания для некоторых разработчиков. Однако он, вероятно, будет медленнее, чем рекурсивное реализация, предоставленная здесь.

В целом, это хороший пример, как можно расширить функциональность стандартного компонента Delphi (в этом случае, TStringGrid) для предоставления более функций или гибкости.

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


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


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




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



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


реклама



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

Время компиляции файла: 2024-05-19 17:53:24
2024-05-19 19:57:04/0.0067110061645508/2