Изучим компонент StringGrid. Компонент StringGrid предназначен для отображения и хранения текстовой информации в виде таблицы. Расположен он на вкладке Additional палитры компонентов.
Размер таблицы определяется свойствами ColCount и RowCount. Они задают количество столбцов и строк соответственно. При необходимости эти свойства можно менять и программно. Размеры же ячеек в пикселях задают свойства DefaultColWidth и DefaultRowHeight. Если же надо задать размер некоторого столбца или некоторой строки отдельно, то надо воспользоваться свойствами ColWidths или RowHeights соответственно.
Вот пример, в котором мы задаем для первого столбца ширину в 40 пикселов:
StringGrid1.ColWidths[0]:=40;
Как видно, нумерация идет с нуля.
Свойства FixedCols и FixedRows определяют сколько столбцов и строк будут использоваться для названий столбцов и строк. По умолчанию эти два свойства равны единице. Такие столбцы и строки выделяются серым цветом (это определяет свойство FixedColor) и при прокрутке нашей таблицы остаются зафиксированными. В принципе их можно использовать как угодно, но чаше всего в них помещают названия столбцов и строк.
Для того, чтобы получить доступ к некоторой ячейке, надо использовать свойство Cells.
Вот пример, в котором мы записываем во вторую строчку второго столбца значение abcd:
StringGrid1.Cells[1,1]:='abcd';
При необходимости можно работать и со строками или столбцами целиком. Для работы со строками надо использовать свойство Rows, а со столбцами - Cols.
Скажем, вот так можно целиком скопировать вторую строки в третью (помните, что нумерация идет с нуля):
StringGrid1.Rows[2]:=StringGrid1.Rows[1];
Например, это может понадобиться при удалении некоторой строки из таблицы - в этом случае следующие за ней строки должны "подняться" наверх на один ряд каждая.
Множество важных параметров компонента StringGrid являются подсвойствами свойства Options. Вот некоторые из них. Подсвойство goEditing отвечает за возможность редактирования ячеек таблицы. Если это свойство установить в true, то редактирование возможно (путем двойного щелчка на нужной ячейке). Подсвойство goRowSelect. Если оно установлено в true, то при щелчке на ячейке выделяется весь ряд. Установленное в true подсвойство goTabs позволяет перемещаться между ячейками посредством клавиши TAB. Если вы хотите позволить пользователю изменять размеры столбцов путем перетаскивания границ у заголовков, то установите значение подсвойства goColSizing в true.
Одна из частых задач - это получение информации, в какую из ячеек пользователь внес изменения.
Для определения этого надо воспользоваться обработчиком события OnSetEditText для StringGrid:
procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol,
ARow: Integer; const Value: String);
begin
Form1.Caption:=IntToStr(ACol) + ' ' + IntToStr(ARow);
end;
Как видно, номера строки и столбца измененной ячейки передаются в параметрах ACol и ARow.
Всё на этом урок закончен.