Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конструирование программ.doc
Скачиваний:
12
Добавлен:
05.05.2019
Размер:
12.37 Mб
Скачать

5.3.1 Ввод массива. Компонент StringGrid

Используем компонент StringGrid (Massiv: TStringGrid;) для ввода значений элементов массива (A: array[1..N] of integer;).

Шаг 1. Интерфейс Пользователя

Р азмещаем компонент StringGrid на форме.

В Инспекторе объектов определяем значения следующих свойств

Свойство

Значение

Комментарий

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. Выполнение приложения

После запуска приложения (вычисляет сумму значений элементов массива, рисунок 5.12) щелкнем мышью в первой ячейке компонента StringGrid, вводим значение и нажимаем клавишу Enter. Повторяем эти действия для ввода остальных значений массива.

Для примера введем значения 1, 2, …, 10. Щелкнем по кнопке Сумма. Вызывается обработчик, который формирует массив из строк ячеек StringGrid (смотри Шаг 3) и вычисляет сумму.

Рисунок 5.12 – Компонент StringGrid и его использование для ввода значений элементов массива

5.3.3 Компонент Memo – многострочное окно редактирования

Компонент Memo обладает так же, как компонент Edit, свойствами и функциями редактора текста.

Основное свойство – Lines содержит текст окна редактирования в виде списка строк.

Свойство Strings[Index:Integer] можно использовать для того, чтобы получить текст строки.

Например, Memo1.Strings[0] – это текст первой строки в окне редактирования.

Методы LoadFromFile/SaveToFile свойства Lines позволяют загружать/сохранять текст в/из окна редактирования.

Свойство CaretPos может использоваться для определения положения курсора в окне редактирования, а, следовательно, и получения значения символа (перед которым стоит курсор).

Например, Memo1.CaretPos.Y+1 – номер строки,

Memo1.CaretPos.X+1 – номер символа в строке.