top of page

Урок №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 строк. Добавить кнопку, которая при нажатии, добавит одну строку в таблицу.

Задание

bottom of page