Cells(NCol, NRow:Integer): String - определяет содержимое ячейки с табличными координатами (NCol, NRow).
Col: Longint - содержит номер колонки с ячейкой, имеющей фокус ввода.
Row: Longint - содержит номер ряда ячейки, имеющей фокус ввода.
ColCount: Longint - содержит количество колонок таблицы.
RowCount: Longint - содержит количество рядов таблицы.
FixedCols: Integer - определяет количество колонок фиксированной зоны.
FixedRow: Integer - определяет количество рядов фиксированной зоны.
+TgridOption = set of TGridOptions - это множество, далее значения элементов множества
goFixedVertLine - колонки фиксированной зоны разделяются вертикальными линиями;
goFixedHorzLine - ряды фиксированной зоны разделяются горизонтальными линиями;
goVertLine - колонки рабочей зоны разделяются вертикальными линиями;
goHorzLine - колонки рабочей зоны разделяются горизонтальными линиями;
goRowSelect - выделяет все ячейки и запрещает их редактирование;
goEditing - разрешено редактирование ячейки, игнорируется, если включён элемент goRowSelect.
Пример 7. Работа с таблицей
В данном примере рассмотрим следующие вопросы.
1. Назначение свойств компоненту TstringGrid
2. Нумерация строк и столбцов фиксированной зоны таблицы
3. Контроль ввода данных в таблицу
4. Формирование массива по данным таблицы, вывод массива
5. Вывод двумерного массива в таблицу
1. Назначение свойств компоненту TstringGrid.
1 Object TreeView®StringGrid1 1Object Inspector ®Ì Properties ®
ColCount ® 4 //кол-во колонок с учётом фиксированных
RowCount ® 4 //кол-во рядов
FixedCols ® 1 //кол=во фиксированных колонок
FixedRows ® 1 //кол=во фиксированных рядов
+TgridOption
goVertLine ® True //вертикальные линии
goHoizLine ® True //горизонтальные линии
goEditing ® True //разрешено редактирование ячейки
Нумерация строк и столбцов фиксированной зоны таблицы
Нумерация строк и столбцов должна появляться после загрузки формы. Для этого можно использовать событие OnEnter, возникающее после вывода таблицы при загрузке.
1 Object TreeView®StringGrid1 1Object Inspector ®ÌEvents ®
OnEnter (двойной щелчок)
· В цикле нумеруются столбцы [i, 0]
· В цикле нумеруются строки [j, 0]
procedure TForm1.StringGrid1Enter(Sender: TObject);
Var I, J: Integer; // счётчики
Begin
With StringGrid1 do // с StringGrid1 выполнить
Begin
For I:=1 To ColCount-1 do // нумерация столбцов
Cells[I,0]:= IntToStr(I);
For J:=1 To RowCount-1 do // нумерация строк
Cells[0,J]:= IntToStr(J);
End;
End;
With
StringGrid1
For
Начало
Конец
For
i=1..ColCount-1
Cells[0, j]:= IntToStr(j)
J =1..RowCount-1
Cells[i,0]:= IntToStr(i)
ColCount – кол-во столбцов
RowCount – кол-во строк
Схема алгоритма. Нумерация фиксированной зоны
procedureTForm1.StringGrid1Enter(Sender: TObject)
Контроль ввода данных в таблицу
Контроль ввода в таблицу свяжем с событием ввода в ячейки таблицы KeyPress. Убедитесь, что свойство goEditing ® True, в противном случае редактирование невозможно.
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
Begin
If not (Key in ['0'..'9', '-']) then Key:= #0; // Алфавит целых чисел
End;
Формирование массива по данным таблицы, вывод массива
Установим кнопку Button1. Элементам строкового массива М[i, j] будем присваивать табличные значения Cells[i, j] при одинаковых индексах i и j. Вывод массива будем производить в метку Label1.
procedure TForm1.Button1Click(Sender: TObject);
var i, j: Integer; // Счётчики циклов
M: Array [1..3, 1..3] of String; // Массив
Begin
With StringGrid1 do // для StringGrid1 выполнять
For i:=1 to 3 do
for j:= 1 to 3 do
M[i, j]:= Cells[i, j];
With Label1 do // для Label1 выполнять
Begin
Caption:= ''; // Очистка метки
For i:=1 to 3 do
Begin
For j:= 1 to 3 do
Caption:= Caption+ M[i, j] + #9;
Caption:= Caption +#13; // Начать новую строку
end; // For i
end // With
End;
На рисунке приведён результат работы. Обратите внимание на различие в последовательности расположения данных таблицы и массива. В массиве последовательность индексов [i, j] определяют [Строка, Столбец], а в таблице – [Столбец, Строка].