Учись программированию на C++ Builder бесплатно!
Содержание[Скрыть]

Компонент StringGrid – это таблица, которая содержит строки и столбцы, напоминающая таблицы Excel. Данные в ячейках таблицы могут быть использованы как только чтение, так и с возможностью ввода/редактирования. Если таблица компонента StringGrid слишком большая и не помещается в размеры формы, то есть возможность подключить полосы прокрутки по горизонтали, вертикали и совместный режим. При необходимости можно задать фиксированные строки и столбы, причём любое количество, которые не будут прокручиваться. Достаточно полезный функционал, если таблица содержит большое количество данных.

Компонент StringGrid – это отличное решение для отображения структурированных текстовых данных. Но StringGrid позволяет отображать и графические данные.

Основные свойства

Значение Описание
System:: AnsiString Cells
[int ACol][int ARow]
Строка таблицы, которая содержится в ячейке с индексами столбца ACol и строки ARow.
Classes::TStrings* Cols[int Index] Список строк, связанные с объектом, которые содержатся в столбце с индексом Index.
Classes::TStrings* Rows
[int Index]
Список строк, связанные с объектом, которые содержатся в строке с индексом Index.
System::TObject* Objects
[int ACol][int ARow]
Объект, связанный со строкой, который содержится в ячейке с индексами столбца ACol и строки ARow.

Все основные свойства компонента StringGrid доступны во время программирования приложения. Задавать текст в ячейки можно как программно на все сразу, так и по отдельности сразу по строкам и столбцам методов класса TStrings.

Дополнительные свойства

  • ColCount – задаёт количество столбцов.
  • RowCount – задаёт количество строк.
  • FixedCols – задаёт количество фиксированных столбцов.
  • FixedRows – задаёт количество фиксированных строк.
  • FixedColor – задаёт цвет фона фиксированных строк и столбцов.
  • LeftCol – первый видимый столбец при прокручивании таблицы.
  • TopRow – первая видимая строка при прокручивании таблицы.
  • ScrollBars – включает отображение полос прокрутки содержимого таблицы. Если содержимое таблицы умещается в форму приложения, то полосы прокрутки автоматически скрываются.
  • Options – дополнительные настройки взаимодействия с таблицей:
    • goFixedVertLine и goFixedHorzLine – отображает разделительные горизонтальные и вертикальные линий в фиксированных ячейках;
    • goVertLine и goHorzLine отображает разделительные горизонтальные и вертикальные линий в нефиксированных ячейках;
    • goCoISizing и goRowSizing – позволяют изменять размеры строк и столбцов с помощью указателя мыши;
    • goColMoving и goRowMoving – позволяет перемещать строки и столбцы;
    • goEditing – позволяет редактировать содержимое таблицы.

Свойства Row и Col показывают индексы строки и столбца ячейки. Так же есть возможность множественного выделения ячеек, строк и столбцов.

В компоненте StringGrid есть полезное событие OnSelectCell, которое срабатывает в момент активации ячейки (нажатие на неё указателем мыши). В обработчик события передаются несколько параметров:

  • ACol – номер столбца, типа int;
  • ARow – номер строки, типа int;
  • CanSelect – допустимость выбора, типа bool. При указании значения false, запрещает выделять указанную ячейку.

Пример работы с ячейками StringGrid

Для работы с ячейками таблицы StringGrid нужно предварительно заполнить её некоторыми данными:

for(int i = 1; i < StringGrid1->ColCount; i++) //StringGrid1->ColCount – определяет количество столбцов
  StringGrid1->Cells[i][0] = "столбец " + IntToStr(i);
for(int i = 1; i < StringGrid1->RowCount; i++) //StringGrid1->RowCount – определяет количество строк
  {
	StringGrid1->Cells[0][i] = "строка " + IntToStr(i);
	for(int j = 1; j < StringGrid1->ColCount; j++)
	  StringGrid1->Cells[j][i] = "C" + IntToStr(i) + " R" + IntToStr(j);
  }

Для определения номера ячейки и её содержимого по клику мыши на соответствующую ячейку послужит небольшой код, добавленный в событие OnSelectCell компонента StringGrid:

void __fastcall TForm1::StringGrid1SelectCell(TObject *Sender, int ACol, int ARow,
		  bool &CanSelect)
{
Label1->Caption = "Выбрана ячейка " + IntToStr(ARow) + ":" + IntToStr(ACol) + ". Текст ячейки: " + StringGrid1->Cells[ACol][ARow];
}

Пример работы с ячейками StringGrid

Поделиться