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

Получить содержимое TStringGrid или TDrawGrid в виде строки

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

Получить содержимое TStringGrid или TDrawGrid в виде строки

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

{ 
 This copies the contents of a TstringGrid/TDrawGrid (only Text!!) into a string. 
 Tabs are inserted between the columns, CR+LF between rows. 
}

 use
   Grids;

 {...}

 { we need this Cracker Class because the Col/RowCount property 
  is not public in TCustomGrid }
 type
   TGridHack = class(TCustomGrid);

 function GetstringGridText(_Grid: TCustomGrid): string;
 var
   Grid: TGridHack;
   Row, Col: Integer;
   s: string;
 begin
   // Cast the paramter to a TGridHack, so we can access protected properties 
  Grid   := TGridHack(_Grid);
   Result := '';
   // for all rows, then for all columns 
  for Row := 0 to Grid.RowCount - 1 do
   begin
     for Col := 0 to Grid.ColCount - 1 do
     begin
       // the first column does not need the tab 
      if Col > 0 then
         Result := Result + #9;
       Result := Result + Grid.GetEditText(Col, Row);
     end;
     Result := Result + #13#10;
 end;
 end;

Программный код функции GetstringGridText, которая принимает объект TCustomGrid в качестве входного параметра и возвращает его содержимое в виде строки. Текстовая информация грида (кроме изображений или других графических элементов) форматируется в строку с использованием символов табуляции (#9) для разделения столбцов и символами возврата каретки (#13) и перевода строки (#10) для разделения строк.

Вот шаг за шагом, что код делает:

  1. Он кастует входной объект TCustomGrid в класс TGridHack, который наследуется от TCustomGrid. Это позволяет получить доступ к защищенным свойствам TCustomGrid.
  2. Функция инициализирует пустую строковую переменную Result, которая будет хранить форматированную текстовую информацию.
  3. Затем она проходит по каждой строке и столбцу грида с помощью двух вложенных циклов for. Для каждого ячейки она проверяет, если это не первый столбец (чтобы не вставлять табуляцию перед первым столбцом). Если это не первый столбец, она добавляет символ табуляции к Result. Затем она добавляет текст из этой ячейки к Result.
  4. После обработки всех столбцов для строки она добавляет символ возврата каретки и перевода строки (#13#10) к Result, чтобы перейти на следующую строку.
  5. Наконец, после обработки всех строк функция возвращает форматированную строку.

Альтернативное решение может быть использование класса TStringStream для хранения данных и затем конвертации его в строку:

function GetstringGridText(_Grid: TCustomGrid): string;
var
  Grid: TGridHack;
  Row, Col: Integer;
  Stream: TStringStream;
begin
  Grid := TGridHack(_Grid);
  Stream := TStringStream.Create('');
  for Row := 0 to Grid.RowCount - 1 do
  begin
    for Col := 0 to Grid.ColCount - 1 do
    begin
      if Col > 0 then
        Stream.Write(#9, 1);
      Stream.WriteString(Grid.Cells[Col, Row]);
    end;
    Stream.WriteLine('');
  end;
  Result := Stream.DataString;
  Stream.Free;
end;

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

В статье описывается функция GetstringGridText для получения содержимого TStringGrid или TDrawGrid в виде строки, которая включает табуляцию между столбцами и переходы строк на новую строку.


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

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




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


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


реклама


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

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 13:22:08/0.0056710243225098/1