Lazarus IDE
Основы программирования в среде Lazarus для учащихся 10-11 классов
Урок №4 "Калькулятор покупок".
В данном уроке создадим программу "Калькулятор покупок". Данный калькулятор предназначен для составления списка товаров для покупки и для подсчета стоимости всех товаров. Для его реализации нам понадобится компонент StringGrid. StringGrid - компонент для отображения различных данных в табличной форме. Как следует из названия, ячейки компонента StringGrid могут содержать данные, имеющие тип String, а также отображать графику. Нумерация ячеек идет от 0.
Разместим необходимые элементы на форме будущего приложения. Нам понадобятся две кнопки и собственно один элемент StringGrid. Компонент StringGrid находится в закладке Additional палитры компонентов.
Вид формы после добавления элементов:

Теперь изменим значения свойств StringGrid.
Таблица StringGrid состоит из выделенных серым FixedCols и FixedRows - зафиксированных ячеек-заголовков, и обыч ных, белых ячеек. Содержимое Fixed ячеек недоступно редактированию, и меняется только программно. Нам понадобятся заголовки только для столбцов, поэтому заголовки, находящиеся слева, уберем, для этого свойство FixedCols изменим на 0. Теперь таблица имеет вид:

Нужно добавить больше строк, чтобы не ограничивать список покупок. Свойство RowCount изменим на 100. В первом столбце будут записываться названия товаров. Т.к. название может быть длинным и не помещаться в ячейку, то мы добавим возможность ручного изменения ширины колонок: goColSizing установим true. По умолчанию ячейки таблицы нельзя редактировать напрямую, только программно. Чтобы добавить возможность ручного изменения установим свойство goEditing на true.
Кнопка Ввод будет служить для очистки таблицы и для создания заголовков таблицы. Дважды кликаем по кнопке и добавляем код.
Создаем заголовки:
StringGrid1.Cells[0,0]:='Наименование'; //первая цифра в скобках - номер столбца, вторая - номер строки
StringGrid1.Cells[1,0]:='Количество';
StringGrid1.Cells[2,0]:='Цена';
StringGrid1.Cells[3,0]:='Стоимость';
StringGrid1.Cells[4,0]:='Итого';
Обнуляем таблицу:
for i:=1 to 99 do
begin
StringGrid1.Cells[0,i]:='';
StringGrid1.Cells[1,i]:='0';
StringGrid1.Cells[2,i]:='0';
StringGrid1.Cells[3,i]:='0';
end;
StringGrid1.Cells[4,1]:='0';
Осталось добавить код в кнопку Вычислить, которая подсчитывает стоимость всех товаров. Помимо итоговой стоимости сделаем вывод стоимости для каждой категории.
for i:=1 to 99 do
begin
StringGrid1.Cells[3,i]:=FloatToStr(StrToFloat(StringGrid1.Cells[1,i])*StrToFloat(StringGrid1.Cells[2,i]));
StringGrid1.Cells[4,1]:=FloatToStr(StrToFloat(StringGrid1.Cells[4,1])+StrToFloat(StringGrid1.Cells[3,i]));
end;
Первая строка цикла считает стоимость для текущей строки. Вторая строка считает итоговую стоимость.
Запускаем программу и тестируем:

Изменить программу:
При первом запуске программы в таблице должно быть 10 строк. Добавить кнопку, которая при нажатии, добавит одну строку в таблицу.