Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Р6_Влож_Циклы_печать.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
330.75 Кб
Скачать

2. Нумерация строк и столбцов фиксированной зоны таблицы

Нумерация строк и столбцов должна появляться после загрузки формы. Для этого можно использовать событие OnEnter, возникающее после вывода таблицы при загрузке.

 Object TreeViewStringGrid1 Object 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;

3. Контроль ввода данных в таблицу

Контроль ввода в таблицу свяжем с событием ввода в ячейки таблицы KeyPress. Убедитесь, что свойство goEditing  True, в противном случае редактирование невозможно.

procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);

begin

If not (Key in ['0'..'9', '-']) then Key := #0 ; // Алфавит целых чисел

end;

4. Формирование массива по данным таблицы, вывод массива

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

  1. Вывод двумерного массива в таблицу

Установим кнопку Button2.

Строковый массив М[i, j] будем выводить в StringGrid2 так, что бы строка массива соответствовала строке таблицы.

procedure TForm1.Button2Click(Sender: TObject);

var i, j : Integer; // Счётчики циклов

M : Array [1..3, 1..3] of String; // Массив

begin

With StringGrid2 do // для StringGrid2 выполнять

For i :=1 to 3 do

for j := 1 to 3 do

Cells[j, i] := M[i, j]; //индексы не совпадают

end // With

end;

6.4Содержание отчета

  1. Задание.

  2. Листинг модуля с подробными комментариями.

6.5 Контрольные вопросы

  1. Какими комбинациями операторов можно реализовать конструкции с вложенными циклами?

  2. Сколько раз будет выполнен оператор, находящийся во внутреннем цикле?

  3. Каков синтаксис описания двумерных массивов?

  4. Каков порядок следования элементов в двумерном массиве?

  5. Как указать адрес элемента двумерного массива?

  6. Как преобразовать двумерный массив в одномерный?

  7. Как задать размеры двумерного динамического массива?

  8. Как сгенерировать случайное число?

  9. Каково назначение оператора With… do… ?

  10. Каково назначение компонента TStringGrid?

  11. Каков порядок следования ячеек в таблице?

  12. Как задать адрес ячейки таблицы?

  13. Как пронумеровать ячейки фиксированной зоны таблицы?

83

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]