Основные свойства компонента 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] определяют [Строка, Столбец], а в таблице – [Столбец, Строка].

Наши рекомендации