Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пояснительная Записка.doc
Скачиваний:
15
Добавлен:
08.03.2015
Размер:
1.53 Mб
Скачать

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.

52