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

Обмен строк TStringGrid

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



Автор: MBo
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Обмен строк StringGrid

Обмен содержимого указанных строк StringGrid.
Варианты без копирования связанных с ячейками объектов и вместе с ними.

Зависимости: Grids
Автор:       Борис Новгородов (MBo), mbo@mail.ru, Новосибирск
Copyright:   MBo
Дата:        27 апреля 2002 г.
***************************************************** }

procedure SGExchangeRows(SG: TStringGrid; Row1, Row2: Integer);
var
  TempString: string;
begin
  if (Row1 in [0..SG.RowCount - 1]) and (Row2 in [0..SG.RowCount - 1]) then
  begin
    TempString := SG.Rows[Row1].Text;
    SG.Rows[Row1].Assign(SG.Rows[Row2]);
    SG.Rows[Row2].Text := TempString;
  end;
end;

procedure SGExchRowsWithObj(SG: TStringGrid; Row1, Row2: Integer);
var
  TempList: TStringList;
begin
  with SG do
    if (Row1 in [0..RowCount - 1]) and (Row2 in [0..RowCount - 1]) then
    begin
      TempList := TStringList.Create;
      TempList.Assign(Rows[Row1]);
      Rows[Row1].Assign(Rows[Row2]);
      Rows[Row2].Assign(TempList);
      TempList.Free;
    end;
end;

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

  1. SGExchangeRows: Procedure exchanges the contents of two specified rows without copying any associated objects with the cells.
  2. SGExchRowsWithObj: Procedure exchanges the contents of two specified rows while copying any associated objects with the cells.

Вот подробное описание каждой процедуры:

SGExchangeRows

  • Проверяет, являются ли оба номера строк валидными для грида (0 до RowCount - 1)
  • Если это так, присваивает содержимое строки Row2 временной строковой переменной (TempString)
  • Присваивает содержимое строки Row1 строке Row2
  • Устанавливает свойство Text строки Row1 в значение временной строки (TempString)

SGExchRowsWithObj

  • Проверяет, являются ли оба номера строк валидными для грида (0 до RowCount - 1)
  • Если это так, создает новый объект TStringList (TempList) и присваивает ему содержимое строки Row1
  • Присваивает содержимое строки Row2 строке Row1
  • Присваивает временный список (TempList) строке Row2

В обеих процедурах используется метод Assign для передачи содержимого между строками. Обратите внимание, что Assign не копирует связанные объекты с ячейками; он только копирует текстовое или строковое содержимое.

Некоторые предложения по улучшению кода:

  1. Рекомендуется добавить обработку ошибок для обеспечения валидности номеров строк и их диапазона.
  2. Может быть полезно добавить проверку на равенство строк Row1 и Row2 перед обменом их содержимого, чтобы избежать ненужных операций при уже равном содержимом.
  3. Если планируется использовать эти процедуры в многопоточной среде, рекомендуется использовать механизмы синхронизации (например, TThread.Synchronize) для обеспечения безопасности потоков.

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

В статье описана процедура обмена строками в 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:49:29/0.0057752132415771/0