Na gut...dann Start ich mal die Meckerrunde
Zuerstmal UI (Oberfläche):
- Edit-Felder sollten für die Eingabe verwendet werden..nicht für reine Ausgaben (dafür gibts StaticText/Label...)
- Die Checkboxen für die einzelnen Ränge sind an und für sich Überflüssig. Wenn der User für
eine Preiskategorie eine Anzahl erfasst, will er sie auch berechet haben
Zur Umsetzung:
- Das Abfangen der Tasten in den Edit-Feldern ist löblich. Aber a) fehlen einige Tasten (10'er-Tastatur usw.). b) gehts einfacher mit MaskEdit
- Statt Anz1, Anz2, Anz3 : integer und R1,R2,R3 : real würd ich Array's verwenden. Damit lässt sich das ganze einfacher erweitern (Das nächste Kino hat 5 Preiskategorien, ein anderes 2...)
- Fixe Werte im Quelltext sollte man vermeiden. Entweder über Konstanten oder, wenn eventuell später Erweiterungen geplant sind, über Config-/Inidateien.
Anmerkung zur Code-Lesbarkeit:
Schwer Lesbar:
Delphi-Quellcode:
try
Anz1:=strtoint(Edit2.Text);
if checkbox1.Checked then R1:=Anz1*15.00
else R1:=0.0;
if not checkbox1.Checked then
Anz1:=(0);
Anz2:=strtoint(Edit3.Text);
if checkbox2.Checked then R2:=Anz2*13.00
else R2:=0.0;
if not checkbox2.Checked then
Anz2:=0;
Anz3:=strtoint(Edit4.Text);
if checkbox3.Checked then R3:=Anz3*10.00
else R3:=0.0;
if not checkbox3.Checked then
Anz3:=0;
ZwSu:=ZwSu+R1+R2+R3;
Steuer:=ZwSu*0.19;
Endpreis:=ZwSu+Steuer;
Edit5.Text:=floattostrF(Endpreis, ffCurrency, 8,2);
showMessage('Der Preis '+floattostrF(Endpreis,ffCurrency, 8,2)+' setzt sich zusammen aus '+floattostrF(zwSu,ffCurrency, 8,2)+' Netto plus '#10#13+floattostrF(Steuer, ffCurrency, 8,2)+' MWSt');
Gesamt:= Anz1+Anz2+Anz3;
Kinopl:=Kinopl-Gesamt;
Edit1.Text:=inttostr(Gesamt);
edit6.Text:=inttostr(Kinopl);
zwSu:=0.0;
Steuer:=0.0;
Endpreis:=0.0;
except
on EConvertError do showMessage(Fehler);
end;
Besser:
Delphi-Quellcode:
try
Anz1:=strtoint(Edit2.Text);
if checkbox1.Checked then
R1:=Anz1*15.00
else
R1:=0.0;
if not checkbox1.Checked then
Anz1:=(0);
Anz2:=strtoint(Edit3.Text);
if checkbox2.Checked then
R2:=Anz2*13.00
else
R2:=0.0;
if not checkbox2.Checked then
Anz2:=0;
Anz3:=strtoint(Edit4.Text);
if checkbox3.Checked then
R3:=Anz3*10.00
else
R3:=0.0;
if not checkbox3.Checked then
Anz3:=0;
ZwSu:=ZwSu+R1+R2+R3;
Steuer:=ZwSu*0.19;
Endpreis:=ZwSu+Steuer;
Edit5.Text:=floattostrF(Endpreis, ffCurrency, 8,2);
showMessage('Der Preis '+floattostrF(Endpreis,ffCurrency, 8,2)+' setzt sich zusammen aus '+floattostrF(zwSu,ffCurrency, 8,2)+' Netto plus '#10#13+floattostrF(Steuer, ffCurrency, 8,2)+' MWSt');
Gesamt:= Anz1+Anz2+Anz3;
Kinopl:=Kinopl-Gesamt;
Edit1.Text:=inttostr(Gesamt);
edit6.Text:=inttostr(Kinopl);
zwSu:=0.0;
Steuer:=0.0;
Endpreis:=0.0;
except
on EConvertError do showMessage(Fehler);
end;