- •Лабораторная работа № 3
- •3.1.1.Глобальные данные
- •3.1.2 Способы передачи параметров
- •3.1.3 Функции
- •3.1.4. Процедуры
- •3.1.5. Передача массивов в качестве параметров
- •3.1.6. Рекурсивные подпрограммы
- •3.2 Модули
- •Implementation {реализация }
- •3.3. Массивы
- •Interface {интерфейс модуля}
- •3.4. Компоненты StringGrid и Memo
- •Ход работы
- •Контрольные вопросы.
3.4. Компоненты StringGrid и Memo
Компоненты StringGrid и Memo прежде всего предназначены для ввода и отображения строк. Однако их можно использовать и для работы с числовой и графической информацией.
3.4.1. Кмпонент StringGrid - таблица строк
Компонент StringGrid представляет собой таблицу, ячейки которой содержат строки. Иконка компонента расположена в закладке Additional Палитры компонентов. Иконка и основные свойства отображения таблицы приведены на рисунке 3.6.
Рисунок
3.6 - Компонент StringGrid
и его свойства
Основное свойство компонента StringGrid - это Cells:
Cells [<номер столбца>, <номер строки>] - ячейки таблицы.
На рисунке 3.8 показано отображение таблицы, свойства которой определены в Инспекторе объектов (рисунок 3.7).
Рисунок 3.7 - Компонент StringGrid и его отображение
Пример инициализации таблицы StrinqGrid
procedure TForm1.OnFormActivate(Sender: TObject); begin
//Свойства таблицы приведены на рисунке 3.7
with StringGrid1 do begin
Cells[0, 1] |
= 'Строка 1'; |
|
Cells[0, 2] |
= 'Строка 2'; |
|
Cells[1, 0] |
= 'Столбец 1'; |
|
Cells[2, 0] |
= 'Столбец 2'; |
|
Cells[3, 0] |
= 'Столбец 3'; |
|
Cells[4, 0] |
= 'Столбец 4'; |
|
Cells[1, 1] |
= '1, 1' |
|
Cells[2, 1] |
= '1, 2' |
|
Cells[3, 1] |
= '1, 3' |
|
Cells[4, 1] |
= '1, 4' |
|
Cells[1, 2] |
= '2, 1' |
|
Cells[2, 2] |
= '2, 2' |
|
Cells[3, 2] |
= '2, 3' |
|
Cells[4, 2] |
= '2, 4' |
|
end;
end;
Результат
выполнения этой процедуры:
Полезными при разработке программ будут следующие свойства компонента StringGrid:
Col - номер столбца
ColCount - количество столбцов Row - номер строки
RowCount - количество строк
Ввод массива. Компонент StringGrid
Используем компонент StringGrid (Massiv: TStringGrid;) для ввода значений элементов массива (A: array[1..N] of integer;).
Ш
аг
1.
Интерфейс Пользователя
В Инспекторе объектов определяем значения следующих свойств
Свойство |
Значение |
Комментарий |
ColCount |
10 |
Количество столбцов |
DefaultColWidth |
40 |
Ширина столбца (по умолчанию) |
FixedCols |
0 |
Количество фиксированных столбцов |
FixedRows |
0 |
Количество фиксированных строк |
RowCount |
1 |
Количество строк |
Шаг 2. Обработка события OnKeyPress компонента StringGrid
procedure TForm1.MassivKeyPress(Sender: TObject; var Key: Char);
begin
case Key of
#8,'0'..'9' : ; ; // можно ввести числа 0..9 и удалить предыдущий
// символ ( #8 - клавиша Backspace)
#13: // клавиша Enter
if Massiv.Col < Massiv.ColCount-1 then
Massiv.Col := Massiv.Col + 1; // курсор устанавливается в
// следующий столбец
else
key := Chr(0); // не обрабатывать нажатие других клавиш
end;
end;
Шаг 3. Формирование массива из строк компонента StringGrid
Поместим этот код в обработчик события (например, OnClick - щелчок по кнопке), которой вызывается после заполнения ячеек компонента StringGrid
for i:= 1 to N do if Length(Massiv.Cells[i-1, 0]) <>0
then // ячейка содержит непустую строку
a[i]:= StrToInt(Massiv.Cells[i-1,0]) // преобразуем строку в число и
// помещаем в массив
else
a[i] := 0; // пустая ячейка - значение элемента массива = 0
Шаг 4. Выполнение приложения
После запуска приложения (вычисляет сумму значений элементов массива, рисунок 3.9) щелкнем мышью в первой ячейке компонента StringGrid, вводим значение и нажимаем клавишу Enter. Повторяем эти действия для ввода остальных значений массива.
Рисунок
3.9 - Компонент StringGrid
и его использование для ввода
значений
элементов массива
Компонент Memo - многострочное окно редактирования
Компонент Memo обладает так же, как компонент Edit, свойствами и функциями редактора текста.
Основное свойство - Lines содержит текст окна редактирования в виде списка строк.
Свойство Strings[Index:Integer] можно использовать для того, чтобы получить текст строки.
Например, Memo1.Strings[0] - это текст первой строки в окне редактирования.
Методы LoadFromFile/SaveToFile свойства Lines позволяют загружать/сохранять текст в/из окна редактирования.
Свойство CaretPos может использоваться для определения положения курсора в окне редактирования, а, следовательно, и получения значения символа (перед которым стоит курсор).
Например, Memo1.CaretPos.Y+1 - номер строки,
Memo1.CaretPos.X+1 - номер символа в строке.
Ввод массива. Компонент Memo
Используем компонент Memo (MassivMemo: TMemo;) для ввода значений элементов массива (A: array[0..N-1] of integer;). На рисунках 3.10, 3.11 приведен код модуля AverageUnit, в котором использован компонент Memo для ввода массива и вычисления среднего арифметического его значений
Рисунок 3.10 - Модуль AverageUnit
Рисунок 3.11 - Модуль AverageUnit
Рисунок 3.12 - Компонент Memo и его использование для ввода значений
элементов массива
