Witam! Programuję w Delphi 7 i chcę zrobić program według polecenia:
Zadanie 3. Zaprojektuj arkusz kalkulacyjny, który umożliwi obliczenie wartości czynszu dla mieszkańców pewnego bloku. Wysokość kwoty za czynsz dla każdego mieszkania jest obliczana według takich samych zasad. Jest to suma opłat za centralne ogrzewanie, eksploatację, ciepłą wodę i użytkowanie windy. Stawki za poszczególne składowe czynszu są następujące:
ˇ centralne ogrzewanie 2,75 zł za metr kwadratowy mieszkania,
ˇ eksploatacja 4,27 zł za metr kwadratowy,
ˇ ciepła woda 15, 07 zł za osobę,
ˇ winda 18,67 zł za osobę.
Opłata za windę jest zróżnicowana, obowiązuje tylko lokatorów mieszkających powyżej pierwszego piętra. Lokatorzy z pięter od drugiego do piątego płacą 3/4 stawki, a począwszy od szóstego piętra obowiązuje cała stawka. Do tabeli głównej arkusza dodaj dwie kolumny wpłata za czynsz oraz uwagi o wpłacie. W kolumnie uwagi powinien być wygenerowany odpowiedni komunikat w zależności od tego, czy nastąpiła nadpłata, niedopłata lub brak wpłaty. Gdy wpłata równa jest wysokości czynszu, komórka pozostaje pusta. Zadbaj o estetyczny wygląd arkusza. Arkusz zapisz na dyskietce w pliku Czynsz.
Adres zadania:
http://www.gimnazjumlipski.neostrada.pl/zadinf.html
Wiem, że to zadanie jest przewidziane na arkusz kalkulacyjny, ale chciałbym wykonać je w Delphi.
Dobrze mi szło, ale gdy chciałem zrobić tak, żeby wyświetlał wiedomość, gdy suma wpisana w Edit1 jest większa lub mniejsza od sumy do zapłacenia, wyskakuje błąd. Oto zdjęcie:
http://img179.imageshack.us/img179/8944/czynszre1.jpg
A oto klucz programu:
Unit1:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Label1: TLabel;
GroupBox1: TGroupBox;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Edit2: TEdit;
Button1: TButton;
Edit3: TEdit;
Label7: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
x, y, z : Real;
co, e, cw, w, r : Real;
begin
x := StrToFloat(Edit1.Text);
y := StrToFloat(Edit2.Text);
z := StrToFloat(Edit3.Text);
co := x * 2.75;
e := x * 4.27;
cw := z * 15.07;
if z <= 1 then begin
w := 0;
end;
if (z = 2) or (z = 3) or (z = 4) or (z = 5) then begin
w := (3/4) * 18.67 * z;
end;
if z >= 6 then begin
w := 18.67 * z;
end;
ceny.Label2.Caption := FloatToStr(co) + ' zł';
ceny.Label4.Caption := FloatToStr(e) + ' zł';
ceny.Label6.Caption := FloatToStr(cw) + ' zł';
ceny.Label8.Caption := FloatToStr(w) + ' zł';
r := StrToFloat(ceny.Label10.Caption);
r := co + e + cw + w;
ceny.Label10.Caption := FloatToStr(r) + ' zł';
ceny.showmodal;
end;
end.
A oto Unit2:
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
Tceny = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Edit1: TEdit;
Label11: TLabel;
Label12: TLabel;
Button1: TButton;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
ceny: Tceny;
implementation
{$R *.dfm}
procedure Tceny.Button1Click(Sender: TObject);
var
e, r, s : Real;
begin
e := StrToFloat(Edit1.Text);
r := StrToFloat(Label10.Caption);
if e = r then begin
Label13.Caption := '';
end;
if e > r then begin
Label13.Caption := 'Wpłacona suma jest zbyt duża.';
s := e - r;
Label15.Caption := FloatToStr(s);
Label14.Caption := 'Nadwyżka wynosi ' + Label15.Caption + ' zł.';
end;
if e < r then begin
Label13.Caption := 'Wpłacona suma nie wystarczy na zapłacenie czynszu.';
s := r - e;
Label15.Caption := FloatToStr(s);
Label14.Caption := 'Należy dopłacic ' + Label15.Caption + ' zł.';
end;
end;
end.
Dla wyjaśnienia:
ceny to nazwa drugiej formatki.
Jeżeli ktoś wie, o co chodzi, niech odpisze. Z góry dziękuję!