- •Курсовая работа
- •Пояснительная записка
- •Введение 2
- •1 Постановка задачи
- •2 Анализ технического задания
- •3 Кодирование программы
- •4 Разработка алгоритма
- •5 Контрольный пример
- •6 Руководство пользователя
- •Для запуска программы в появившемся окне в меню Run выбираем пункт Run. Данное действие так же можно выполнить нажав клавишу f9 (Рисунок 6.3)
5 Контрольный пример
В данном пункте будут предоставлены примеры поведения программы при введении тех или иных данных.
На рисунке 5.1 представлено окно ввода тарифов на различные услуги.
Рисунок 5.1 – Тарифы на услуги
На рисунке 5.2 представлен основное окно программы, в котором производится ввод значений, необходимых для расчета квартплаты.
Рисунок 5.2 - Окно программы
На рисунке 5.3 показано меню программы, с помощью которого можно посмотреть статистику, установить нужные тарифы и настроить пути сохранения и загрузки файлов.
Рисунок 5.3 – меню программы
На рисунке 5.4 изображено окно с настройками программы. Здесь можно определить путь к текстовому файлу, в который можно загрузить введенные данные и в дальнейшем их открыть. Так же можно определить путь к файлу статистики для построения диаграммы.
Рисунок 5.4 – Настройки программы
На рисунке 5.5 изображена статистика, которая отображает количество затраченных денег в различное время
Рисунок 5.5 – Диаграмма
На рисунке 5.6 изображено выпадающее меню с выбором периода для расчета квартплаты.
Рисунок 5.6 – Выбор периода
6 Руководство пользователя
Для того что бы запустить программу нужно использовать Borland Delphi 7
Borland Delphi 7 – это среда разработки программного обеспечения. После установки, запустите Borland Delphi 7. Появится начальная страница, изображенная на рисунке 6.1
Рисунок 6. Вид плавающ
Рисунок 6.1 – Начальная страница Borland Delphi 7
В меню File выберите пункт Open Project или нажмите CTRL+F11.
Далее в диалоговом окне выбираем файл:
Мой компьютер/DVDдиск/Rent/FlatPro.dpr (Рисунок 6.2)
Рисунок 6.2 — Открытие программы в Borland Delphi 7
Для запуска программы в появившемся окне в меню Run выбираем пункт Run. Данное действие так же можно выполнить нажав клавишу f9 (Рисунок 6.3)
Рисунок 6.2 – Открытие файла
На рисунке 6.3 изображен открытый проект с программой расчета квартплаты.
Рисунок 6.3 — запуск программы Delphi 7
Рисунок 6.3 – Открытый проект
7 Тестирование программы
Тестирование программного обеспечения – процесс исследования программного обеспечения с целью получения информации о качестве продукта. На рисунке 7.1 изображена ситуация, когда не все поля для расчета заполнены.
Рисунок 7.1 – Незаполненные поля
На рисунке 7.2 изображена ситуация, когда в настройках загрузки указан путь к несуществующему файлу.
Рисунок 7.2 – Неправильный путь
Заключение
В ходе выполнения курсовой работы была разработана программа «Расчет квартплаты», созданная в среде Borland Delphi 7, где происходит расчет квартплаты для различных данных, при различных тарифах, льготах и в различные периоды. При создании программы были рассмотрены различные управляющие структуры программирования, разные компоненты и возможности Delphi 7.
Список использованных источников
1 Рубанцев В.Н. "Delphi в примерах, играх и программах", издательство "Наука и техника", Москва, 2011
2 Михаил Голованов, Евгений Веселов: Создание компонентов в среде Delphi.
3 Евгений Марков, Петр Дарахвелидзе Delphi 2005 для Win32
4 А. Я. Архангельский. - Программирование в Delphi для Windows. Версии 2006, 2007, Turbo Delphi
5 Дмитрий Осипов. Delphi. Профессиональное программирование
Приложение A
Листинг программы
Uflat.pas
//---------------------------------------------------------------------------
unit UFlat;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ComCtrls, XPMan, UMonth, UOptions, UStat, URate, UHelp, Grids,
ExtCtrls, jpeg, Math;
type
TForm1 = class(TForm)
XPManifest1: TXPManifest;
StatusBar1: TStatusBar;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
Image1: TImage;
Panel1: TPanel;
Image2: TImage;
Image3: TImage;
Image4: TImage;
procedure N4Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure Image1Click(Sender: TObject);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Image2Click(Sender: TObject);
procedure Image3Click(Sender: TObject);
procedure Image4Click(Sender: TObject);
procedure Panel1Click(Sender: TObject);
private
public
end;
TRate = class(TObject) // класс тариф
private
status: TStatusBar; // строка состояния
ttex: double; // техобслуживание
theating: double; // отопление
twater: double; // вода
thotwater: double; // подогрев воды
tup: double; // лифт
trebuild: double; // ремонт
ttv:double; // телевидение
tradio:double; // радио
procedure setRateTex(p:double); // изменить значение
procedure setRateHeating(p:double);
procedure setRateWater(p:double);
procedure setRateHotwater(p:double);
procedure setRateUp(p:double);
procedure setRateRebuild(p:double);
procedure setRateTv(p:double);
procedure setRateRadio(p:double);
function getRateTex:double; // получить значение
function getRateHeating:double;
function getRateWater:double;
function getRateHotwater:double;
function getRateUp:double;
function getRateRebuild:double;
function getRateTv:double;
function getRateRadio:double;
public
property ratetex:double read getRateTex write setRateTex; // свойства для работы со значениями
property rateheating:double read getRateHeating write setRateHeating;
property ratewater:double read getRateWater write setRateWater;
property ratehotwater:double read getRateHotwater write setRateHotwater;
property rateup:double read getRateUp write setRateUp;
property raterebuild:double read getRateRebuild write setRateRebuild;
property ratetv:double read getRateTv write setRateTv;
property rateradio:double read getRateRadio write setRateRadio;
constructor Create(var s:TStatusbar);
destructor Destroy; override;
end;
TFlat=class(TRate) // класс Квартира, потомок класса Тариф
private
ptex: double; // тех обслуживание
pheating: double; // отопление
pwater: double; // вода
photwater: double; // подогрев воды
pup: double; // лифт
prebuild: double; // ремонт
ptv:double; // телевидение
pradio:double; // радио
pexemption: double; // скидка
procedure setExemption(p:double); // установка значений
procedure setTex(p:double);
procedure setHeating(p:double);
procedure setWater(p:double);
procedure setHotwater(p:double);
procedure setUp(p:double);
procedure setRebuild(p:double);
procedure setTv(p:double);
procedure setRadio(p:double);
function getTex:double; // получение значений
function getHeating:double;
function getWater:double;
function getHotwater:double;
function getUp:double;
function getRebuild:double;
function getTv:double;
function getRadio:double;
function getExemption:double;
public
property exemption:double read getExemption write setExemption; // свойства для работы со значениями
property tex:double read getTex write setTex;
property heating:double read getHeating write setHeating;
property water:double read getWater write setWater;
property hotwater:double read getHotwater write setHotwater;
property up:double read getUp write setUp;
property rebuild:double read getRebuild write setRebuild;
property tv:double read getTv write setTv;
property radio:double read getRadio write setRadio;
procedure showRate(S:TStringGrid); // показать тариф в таблице
procedure savetofile(ind:integer; year:integer); // сохранить данные за месяц в файл
procedure loadfromfile(var ind:integer; var year:integer); // загрузить данные за месяц в файл
function getTotal():string; // найти итоговую сумму
constructor Create(var s:TStatusBar); // конструктор
destructor Destroy; override; // деструктор
end;
var
Form1: TForm1;
flat: TFlat; // объект класса TFlat
isTv:boolean; // выбран ли канал для перемещения на панель Ваши TV каналы
tv:integer; // тип выбранного канала
implementation
{$R *.dfm}
procedure TFlat.loadfromfile(var ind:integer; var year:integer);
var f:textfile;
begin
assignfile(f,Form3.Edit1.Text);
reset(f); // открываем для чтения файл
readln(f,ind);
readln(f,year);
readln(f,ptex);
readln(f,pheating);
readln(f,pwater);
readln(f,photwater);
readln(f,pup);
readln(f,pradio);
readln(f,ptv);
readln(f,prebuild);
close(f);
end;
procedure TFlat.savetofile(ind:integer; year:integer);
var f:textfile;
begin
assignfile(f,Form3.Edit1.Text);
rewrite(f);
writeln(f,ind);
writeln(f,year);
writeln(f,FloatToStr(ptex));
writeln(f,FloatToStr(pheating));
writeln(f,FloatToStr(pwater));
writeln(f,FloatToStr(photwater));
writeln(f,FloatToStr(pup));
writeln(f,FloatToStr(pradio));
writeln(f,FloatToStr(ptv));
writeln(f,FloatToStr(prebuild));
close(f);
end;
function TFlat.getTotal():string;
var total:double;
begin total:=ptex*ttex+pheating*theating+pup*tup+pwater*twater+photwater*thotwater;
total:=total+prebuild*trebuild+pradio*tradio+ptv*ttv;
total:=total*(100-exemption)/100;
status.SimpleText:='Получена итоговая сумма';
result:=FloatToStr(total);
end;
procedure TFlat.showRate(S:TStringGrid);
begin
S.Cells[0,1]:=FloatToStr(ttex);
S.Cells[0,2]:=FloatToStr(theating);
S.Cells[0,3]:=FloatToStr(twater);
S.Cells[0,4]:=FloatToStr(thotwater);
S.Cells[0,5]:=FloatToStr(tup);
S.Cells[0,6]:=FloatToStr(trebuild);
S.Cells[0,7]:=FloatToStr(tradio);
S.Cells[0,8]:=FloatToStr(ttv);
end;
constructor TFlat.Create(var s:TStatusBar);
begin
inherited Create(s); // вызов конструктора родителя
ptex:=0;
pheating:=0;
pwater:=0;
photwater:=0;
pup:=0;
prebuild:=0;
ptv:=0;
pradio:=0;
pexemption:=0;
end;
destructor TFlat.Destroy;
begin
inherited;
end;
function TFlat.getTex: double;
begin
result:=ptex;
end;
function TFlat.getExemption: double;
begin
result:=pexemption;
end;
function TFlat.getHeating: double;
begin
result:=pheating;
end;
function TFlat.getWater: double;
begin
result:=pwater;
end;
function TFlat.getHotwater: double;
begin
result:=photwater;
end;
function TFlat.getUp: double;
begin
result:=pup;
end;
function TFlat.getRebuild: double;
begin
result:=prebuild;
end;
function TFlat.getTv: double;
begin
result:=ptv;
end;
function TFlat.getRadio: double;
begin
result:=pradio;
end;
procedure TFlat.setTex(p:double);
begin
if (p<0) then
p:=0;
ptex:=p;
end;
procedure TFlat.setExemption(p:double);
begin
if (p<0) or (p>100) then
p:=0;
pexemption:=p;
end;
procedure TFlat.setHeating(p:double);
begin
if (p<0) then
p:=0;
pheating:=p;
end;
procedure TFlat.setWater(p:double);
begin
if (p<0) then
p:=0;
pwater:=p;
end;
procedure TFlat.setHotwater(p:double);
begin
if (p<0) then
p:=0;
photwater:=p;
end;
procedure TFlat.setUp(p:double);
begin
if (p<0) then
p:=0;
pup:=p;
end;
procedure TFlat.setRebuild(p:double);
begin
if (p<0) then
p:=0;
prebuild:=p;
end;
procedure TFlat.setTv(p:double);
begin
if (p<0) then
p:=0;
ptv:=p;
end;
procedure TFlat.setRadio(p:double);
begin
if (p<0) then
p:=0;
pradio:=p;
end;
function TRate.getRateTex: double;
begin
result:=ttex;
end;
function TRate.getRateHeating: double;
begin
result:=theating;
end;
function TRate.getRateWater: double;
begin
result:=twater;
end;
function TRate.getRateHotwater: double;
begin
result:=thotwater;
end;
function TRate.getRateUp: double;
begin
result:=tup;
end;
function TRate.getRateRebuild: double;
begin
result:=trebuild;
end;
function TRate.getRateTv: double;
begin
result:=ttv;
end;
function TRate.getRateRadio: double;
begin
result:=tradio;
end;
procedure TRate.setRateTex(p:double);
begin
if (p<0) then
p:=0;
ttex:=p;
end;
procedure TRate.setRateHeating(p:double);
begin
if (p<0) then
p:=0;
theating:=p;
end;
procedure TRate.setRateWater(p:double);
begin
if (p<0) then
p:=0;
twater:=p;
end;
procedure TRate.setRateHotwater(p:double);
begin
if (p<0) then
p:=0;
thotwater:=p;
end;
procedure TRate.setRateUp(p:double);
begin
if (p<0) then
p:=0;
tup:=p;
end;
procedure TRate.setRateRebuild(p:double);
begin
if (p<0) then
p:=0;
trebuild:=p;
end;
procedure TRate.setRateTv(p:double);
begin
if (p<0) then
p:=0;
ttv:=p;
end;
procedure TRate.setRateRadio(p:double);
begin
if (p<0) then
p:=0;
tradio:=p;
end;
constructor TRate.Create(var s:TStatusBar);
begin
ttex:=50;
theating:=150;
twater:=145;
thotwater:=70;
tup:=200;
trebuild:=10;
ttv:=40;
tradio:=80;
status:=s;
end;
destructor TRate.Destroy;
begin
inherited;
end;
procedure TForm1.N4Click(Sender: TObject);
begin
Close();
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.DoubleBuffered:=true;
flat:=TFlat.Create(StatusBar1);
StatusBar1.SimpleText:='Заполните данные за месяц';
isTv:=false;
end;
procedure TForm1.N7Click(Sender: TObject);
begin
Form3.ShowModal();
end;
procedure TForm1.N2Click(Sender: TObject); // выбор в меню Статистика
var f:textfile;
c:double;
begin
if (trim(Form3.Edit2.Text)='') then // проверка
begin
ShowMessage('Не указано имя файла статистики в настройках');
Form1.StatusBar1.SimpleText:='Не указано имя файла статистики в настройках';
exit;
end;
if (not FileExists( Form3.Edit2.Text )) then // проверка
begin
ShowMessage('Файл, указанный в настройках, не найден');
Form1.StatusBar1.SimpleText:='Файл, указанный в настройках, не найден';
exit;
end;
Form4.Chart1.Series[0].Clear; // чистим график
assignfile(f,Form3.Edit2.Text);
reset(f);
while not eof(f) do // пока не конец файла
begin
readln(f,c); // читаем данные из файла
readln(f,c);
readln(f,c);
Form4.Chart1.Series[0].Add(c); // данные на график
end;
closefile(f);
Form4.ShowModal; // показываем форму с графиком
end;
procedure TForm1.N6Click(Sender: TObject); // выбор в меню Помощь
begin
Form5.ShowModal; // показать форму Помощь
end;
procedure TForm1.N5Click(Sender: TObject); // выбор в меню Тариф
begin
Form6.Edit1.Text:=FloatToStr(flat.ratetex); // обновляем поля на форме Тариф
Form6.Edit2.Text:=FloatToStr(flat.rateheating);
Form6.Edit3.Text:=FloatToStr(flat.ratewater);
Form6.Edit4.Text:=FloatToStr(flat.ratehotwater);
Form6.Edit5.Text:=FloatToStr(flat.rateup);
Form6.Edit6.Text:=FloatToStr(flat.raterebuild);
Form6.ShowModal; // показываем форму Тариф
end;
procedure TForm1.Image1Click(Sender: TObject); // клик по картинке канала
begin
if (isTv=false) then // если еще не выбран
begin
isTv:=true;
tv:=1;
end;
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, // движение мышкой по форме
Y: Integer);
begin
if (isTv) then // если выбран канал, то таскаем фото за мышкой
begin
if (tv=1) then
begin
image1.Top:=y;
image1.Left:=x;
end;
if (tv=2) then
begin
image2.Top:=y;
image2.Left:=x;
end;
if (tv=3) then
begin
image3.Top:=y;
image3.Left:=x;
end;
if (tv=4) then
begin
image4.Top:=y;
image4.Left:=x;
end;
end;
end;
procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer); // наведение мышкой на панель Ваши TV каналы
begin
if (isTv) then // если выбран канал, то отмечаем в таблице и скрываем фото канала
begin
isTv:=false;
Form2.SG2.Cells[0,8]:=FloatToStr(StrToFloat(Form2.SG2.Cells[0,8])+tv);
if (tv=1) then
begin
image1.Visible:=false;
end;
if (tv=2) then
image2.Visible:=false;
if (tv=3) then
image3.Visible:=false;
if (tv=4) then
image4.Visible:=false;
Form2.Edit2.Text:='';
form1.StatusBar1.SimpleText:='Добавлен новый канал';
end;
end;
procedure TForm1.Image2Click(Sender: TObject); // клик по картинке канала
begin
if (isTv=false) then // если еще не выбран
begin
isTv:=true;
tv:=2;
end;
end;
procedure TForm1.Image3Click(Sender: TObject); // клик по картинке канала
begin
if (isTv=false) then // если еще не выбран
begin
isTv:=true;
tv:=3;
end;
end;
procedure TForm1.Image4Click(Sender: TObject); // клик по картинке канала
begin
if (isTv=false) then // если еще не выбран
begin
isTv:=true;
tv:=4;
end;
end;
procedure TForm1.Panel1Click(Sender: TObject); // клик по панели Ваши TV каналы
begin
isTv:=false; // обновляем каналы по умолчанию
image1.Visible:=true;
image2.Visible:=true;
image3.Visible:=true;
image4.Visible:=true;
image1.Top:=96;
image1.Left:=472;
image2.Top:=160;
image2.Left:=472;
image3.Top:=224;
image3.Left:=472;
image4.Top:=288;
image4.Left:=472;
end;
end.
UMonth.pas
//---------------------------------------------------------------------------
unit Umonth;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, Buttons, ComCtrls;
type
TForm2 = class(TForm)
Label1: TLabel;
ComboBox1: TComboBox;
Edit1: TEdit;
SG: TStringGrid;
SG2: TStringGrid;
SG3: TStringGrid;
SpeedButton1: TSpeedButton;
Edit2: TEdit;
UpDown1: TUpDown;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
procedure FormCreate(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure SG2KeyPress(Sender: TObject; var Key: Char);
procedure SpeedButton1Click(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
private
public
end;
var
Form2: TForm2;
implementation
uses UFlat, UOptions;
{$R *.dfm}
procedure TForm2.FormCreate(Sender: TObject); // при создании формы
var i:integer;
begin
SG.Cells[0,0]:='№'; // заполняем шапку таблиц
SG.Cells[1,0]:='Вид услуги';
SG.Cells[2,0]:='ед.изм.';
SG2.Cells[0,0]:='Кол-во';
SG3.Cells[0,0]:='Тариф';
SG3.Cells[1,0]:='Сумма';
for i:=1 to 8 do
begin
SG.Cells[0,i]:=IntToStr(i);
SG2.Cells[0,i]:='0';
SG3.Cells[1,i]:='0';
end;
SG.Cells[1,1]:='Тех. обслуживание (кв.м)';
SG.Cells[1,2]:='Отопление (Гкал)';
SG.Cells[1,3]:='Вода (куб.м)';
SG.Cells[1,4]:='Подогрев воды (Гкал)';
SG.Cells[1,5]:='Пользование лифтом (чел)';
SG.Cells[1,6]:='Отчисление на кап. ремонт';
SG.Cells[1,7]:='Радио (каналы)';
SG.Cells[1,8]:='Телевидение (каналы)';
flat.showRate(Form2.SG3);
end;
procedure TForm2.FormKeyPress(Sender: TObject; var Key: Char); // обработка нажатия клавиш
var k,p,i:integer;
f:textfile;
begin
if (Key='S') or (Key='s') or (Key='ы') Or (Key='Ы') then // если выбрано Сохранить в файл статистики
begin
if (trim(Form3.Edit2.Text)='') then
begin
ShowMessage('Не указано имя файла статистики в настройках');
Form1.StatusBar1.SimpleText:='Не указано имя файла статистики в настройках';
exit;
end;
//
for i:=1 to 8 do
if (trim(SG2.Cells[0,i])='') then
begin
ShowMessage('Заполнены не все поля');
Edit2.Text:='';
exit;
end;
try
flat.tex:=StrToFloat(SG2.Cells[0,1]);
flat.heating:=StrToFloat(SG2.Cells[0,2]);
flat.water:=StrToFloat(SG2.Cells[0,3]);
flat.hotwater:=StrToFloat(SG2.Cells[0,4]);
flat.up:=StrToFloat(SG2.Cells[0,5]);
flat.rebuild:=StrToFloat(SG2.Cells[0,6]);
flat.radio:=StrToFloat(SG2.Cells[0,7]);
flat.tv:=StrToFloat(SG2.Cells[0,8]);
Edit2.Text:=flat.getTotal();
except
ShowMessage('Указано недопустимое значение');
Edit2.Text:='';
exit;
end;
assignfile(f,Form3.Edit2.Text);
if not FileExists(Form3.Edit2.Text) then // если не существует
rewrite(f) // создаем новый
else
append(f);
writeln(f,IntToStr(ComboBox1.ItemIndex));
writeln(f,IntToStr(UpDown1.Position));
writeln(f,Edit2.Text);
closefile(f);
Form1.StatusBar1.SimpleText:='Итоговая сумма сохранена';
//
end;
if (Key='А') or (Key='а') or (Key='F') Or (Key='f') then // сохранение данных за месяц в файл
begin
if (trim(Form3.Edit1.Text)='') then
begin
ShowMessage('Не указано имя файла в настройках');
Form1.StatusBar1.SimpleText:='Не указано имя файла в настройках';
exit;
end;
for i:=1 to 8 do
if (trim(SG2.Cells[0,i])='') then
begin
ShowMessage('Заполнены не все поля');
Form1.StatusBar1.SimpleText:='Заполнены не все поля';
Edit2.Text:='';
exit;
end;
try
flat.tex:=StrToFloat(SG2.Cells[0,1]);
flat.heating:=StrToFloat(SG2.Cells[0,2]);
flat.water:=StrToFloat(SG2.Cells[0,3]);
flat.hotwater:=StrToFloat(SG2.Cells[0,4]);
flat.up:=StrToFloat(SG2.Cells[0,5]);
flat.rebuild:=StrToFloat(SG2.Cells[0,6]);
flat.radio:=StrToFloat(SG2.Cells[0,7]);
flat.tv:=StrToFloat(SG2.Cells[0,8]);
except
ShowMessage('Указано недопустимое значение');
Form1.StatusBar1.SimpleText:='Указано недопустимое значение';
Edit2.Text:='';
exit;
end;
flat.savetofile(ComboBox1.ItemIndex,UpDown1.Position);
Form1.StatusBar1.SimpleText:='Данные сохранены';
end;
if (Key='L') or (Key='l') or (Key='Д') Or (Key='д') then // загрузка данных за месяц из файла
begin
if (trim(Form3.Edit1.Text)='') then
begin
ShowMessage('Не указано имя файла в настройках');
Form1.StatusBar1.SimpleText:='Не указано имя файла в настройках';
exit;
end;
if (not FileExists( Form3.Edit1.Text )) then
begin
ShowMessage('Файл, указанный в настройках, не найден');
Form1.StatusBar1.SimpleText:='Файл, указанный в настройках, не найден';
exit;
end;
flat.loadfromfile(p,k);
ComboBox1.ItemIndex:=p;
UpDown1.Position:=k;
SG2.Cells[0,1]:=FloatToStr(flat.tex);
SG2.Cells[0,2]:=FloatToStr(flat.heating);
SG2.Cells[0,3]:=FloatToStr(flat.water);
SG2.Cells[0,4]:=FloatToStr(flat.hotwater);
SG2.Cells[0,5]:=FloatToStr(flat.up);
SG2.Cells[0,6]:=FloatToStr(flat.rebuild);
SG2.Cells[0,7]:=FloatToStr(flat.radio);
SG2.Cells[0,8]:=FloatToStr(flat.tv);
Form1.StatusBar1.SimpleText:='Данные загружены';
end;
end;
procedure TForm2.Edit1KeyPress(Sender: TObject; var Key: Char); // запрет ввода не цифр
begin
if not(Key in ['0'..'9', #13, #8]) then
Key := #0;
end;
procedure TForm2.SG2KeyPress(Sender: TObject; var Key: Char); // запрет ввода не цифр в таблицу
begin
if not(Key in ['0'..'9', '.', ',', #13, #8]) then
Key := #0;
end;
procedure TForm2.SpeedButton1Click(Sender: TObject); // клик по кнопке Итого
var i:integer;
begin
for i:=1 to 8 do
if (trim(SG2.Cells[0,i])='') then
begin
ShowMessage('Заполнены не все поля');
Edit2.Text:='';
exit;
end;
try
flat.tex:=StrToFloat(SG2.Cells[0,1]);
flat.heating:=StrToFloat(SG2.Cells[0,2]);
flat.water:=StrToFloat(SG2.Cells[0,3]);
flat.hotwater:=StrToFloat(SG2.Cells[0,4]);
flat.up:=StrToFloat(SG2.Cells[0,5]);
flat.rebuild:=StrToFloat(SG2.Cells[0,6]);
flat.radio:=StrToFloat(SG2.Cells[0,7]);
flat.tv:=StrToFloat(SG2.Cells[0,8]);
Edit2.Text:=flat.getTotal();
for i:=1 to 8 do
SG3.Cells[1,i]:=FloatToStr(StrToFloat(SG3.Cells[0,i])*StrToFloat(SG2.Cells[0,i]));
except
ShowMessage('Указано недопустимое значение');
Edit2.Text:='';
exit;
end;
end;
procedure TForm2.ComboBox1Change(Sender: TObject);
begin
SG2.SetFocus;
end;
end.