Основные свойства компонента TstringGrid
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]
procedureTForm1.StringGrid1Enter(Sender: TObject);
VarI, 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, в противном случае редактирование невозможно.
procedureTForm1.StringGrid1KeyPress(Sender: TObject;varKey: 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]ofString; // Массив
Begin
With StringGrid1 do // для StringGrid1 выполнять
For i :=1 to 3 do
for j := 1 to 3 do
M[i, j] := Cells[i, j] ;
WithLabel1do// для Label1 выполнять
Begin
Caption := ''; // Очистка метки
Fori :=1 to3 do
Begin
Forj := 1to3do
Caption := Caption+ M[i, j] + #9;
Caption := Caption +#13; // Начать новую строку
end;// For i
end// With
End;
На рисунке приведён результат работы. Обратите внимание на различие в последовательности расположения данных таблицы и массива. В массиве последовательность индексов [i, j] определяют [Строка, Столбец], а в таблице – [Столбец, Строка].