unit Festgeldanlage;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, StdCtrls, Buttons, ExtCtrls, Menus, Shellapi, jpeg;
type
TForm1 =
class(TForm)
Image1: TImage;
MainMenu1: TMainMenu;
N1: TMenuItem;
Dokumentation1: TMenuItem;
N2: TMenuItem;
Info1: TMenuItem;
Panel1: TPanel;
Panel2: TPanel;
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
Label6: TLabel;
Label1: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Edit7: TEdit;
Label2: TLabel;
Label7: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn4: TBitBtn;
StringGrid1: TStringGrid;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
BitBtn5: TBitBtn;
BitBtn6: TBitBtn;
StringGrid2: TStringGrid;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
Datei1: TMenuItem;
Datei2: TMenuItem;
N3: TMenuItem;
DateiSpeichern1: TMenuItem;
DateiSpeichernunter1: TMenuItem;
N4: TMenuItem;
Drucken1: TMenuItem;
BitBtn7: TBitBtn;
Dateiffnen1: TMenuItem;
DateiSpeichern2: TMenuItem;
DateiSpeichernunter2: TMenuItem;
DruckenKreditrckzahlung1: TMenuItem;
Diagrammespeichern1: TMenuItem;
DiagrammspeichernKreditrckzahlung1: TMenuItem;
AllesSpeichern1: TMenuItem;
AllesSpeichernKreditrckzahlung1: TMenuItem;
N5: TMenuItem;
Beenden1: TMenuItem;
SaveDialog2: TSaveDialog;
SaveDialog3: TSaveDialog;
OpenDialog2: TOpenDialog;
SaveDialog4: TSaveDialog;
SaveDialog5: TSaveDialog;
SaveDialog6: TSaveDialog;
Edit8: TEdit;
Label8: TLabel;
procedure FormCreate(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure Info1Click(Sender: TObject);
procedure Dokumentation1Click(Sender: TObject);
procedure BitBtn5Click(Sender: TObject);
procedure BitBtn6Click(Sender: TObject);
procedure Edit4Click(Sender: TObject);
procedure Edit5Click(Sender: TObject);
procedure Edit6Click(Sender: TObject);
procedure Edit1Click(Sender: TObject);
procedure Edit2Click(Sender: TObject);
procedure Edit3Click(Sender: TObject);
procedure BitBtn7Click(Sender: TObject);
procedure StringGrid2DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
procedure Datei2Click(Sender: TObject);
procedure DateiSpeichern1Click(Sender: TObject);
procedure DateiSpeichernunter1Click(Sender: TObject);
procedure Beenden1Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
const max=100;
type dstz=record
Jahr:
string[5];
Anfang:
string[20];
Zinsen:
string[20];
Tilgung:
string[20];
Ende:
string[20];
end;
tdateifeld=array[1..max]
of dstz;
tdatei=File
of tdateifeld;
var
Form1: TForm1;
dateifeld:tdateifeld;
datei: tdatei;
implementation
uses Diagramm1, Diagramm2, Diagramm3;
{$R *.DFM}
procedure StringGridAlignment(Grid: TStringGrid; Rect: TRect; ACol, ARow: Integer;
Alignment: TAlignment; LineBreak: Boolean);
var
TextOut:
string;
begin
Grid.Canvas.FillRect(Rect);
TextOut := Grid.Cells[ACol,ARow];
if LineBreak = false
then
begin
if Alignment = taLeftJustify
then
DrawText(Grid.Canvas.Handle, PChar(TextOut), StrLen(PChar(TextOut)), Rect,DT_LEFT);
if Alignment = taCenter
then
DrawText(Grid.Canvas.Handle, PChar(TextOut), StrLen(PChar(TextOut)), Rect,DT_CENTER);
if Alignment = taRightJustify
then
DrawText(Grid.Canvas.Handle, PChar(TextOut), StrLen(PChar(TextOut)), Rect,DT_RIGHT);
end
else
begin
if Alignment = taLeftJustify
then
DrawText(Grid.Canvas.Handle, PChar(TextOut), StrLen(PChar(TextOut)),
Rect,DT_LEFT+DT_WORDBREAK);
if Alignment = taCenter
then
DrawText(Grid.Canvas.Handle, PChar(TextOut), StrLen(PChar(TextOut)), Rect,
DT_CENTER+DT_WORDBREAK);
if Alignment = taRightJustify
then
DrawText(Grid.Canvas.Handle, PChar(TextOut), StrLen(PChar(TextOut)), Rect,
DT_RIGHT+DT_WORDBREAK);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var i : integer;
begin for i:=1
to max
do
with stringgrid2
do
begin cells[0,0]:='
Jahr';
cells[1,0]:='
Anfang';
cells[2,0]:='
Zinsen';
cells[3,0]:='
Tilgung';
cells[4,0]:='
Ende';
dateifeld[i].Jahr:=cells[i,0];
dateifeld[i].Anfang:=cells[1,i];
dateifeld[i].Zinsen:=cells[2,i];
dateifeld[i].Tilgung:=cells[3,i];
dateifeld[i].Ende:=cells[4,i];
begin
with stringgrid2
do
begin
Cells[0,0]:='
Jahr';
Cells[1,0]:='
Anfang';
Cells[2,0]:='
Zinsen';
Cells[3,0]:='
Tilgung';
Cells[4,0]:='
Ende';
stringgrid1.Cells[0,0]:='
Jahr';
stringgrid1.cells[1,0]:='
Guthaben';
stringgrid1.cells[2,0]:='
Zinsen';
edit1.text:='
20000';
edit2.text:='
15';
edit3.text:='
4';
edit4.text:='
20000';
edit5.text:='
7';
edit6.text:='
1700';
edit7.clear;
edit8.clear;
stringgrid1.ColWidths[0] := 40;
stringgrid2.ColWidths[0] := 40;
{SetWindowLong(BitBtn1.Handle, GWL_STYLE,GetWindowLong(BitBtn1.Handle, GWL_STYLE) or BS_MULTILINE);
BitBtn1.Caption := 'Zinsatz und Laufzeit' + #13#10 + 'berechnen'; {Schreibt einen Button zwei zeilig}
end;
end;
end;
end;
procedure dateifeldlesen;
var i:integer;
begin
for i:=1
to max
do
with form1.stringgrid2
do
begin
dateifeld[i].jahr:=cells[0,i];
dateifeld[i].anfang:=cells[1,i];
dateifeld[i].zinsen:=cells[2,i];
dateifeld[i].tilgung:=cells[3,i];
dateifeld[i].ende:=cells[4,i];
end;
end;
procedure zurueck;
var k:integer;
begin
for k:=1
to max
do
with form1.stringgrid2
do
begin
cells[0,k]:= dateifeld[k].Jahr;
cells[1,k]:= dateifeld[k].Anfang;
cells[2,k]:= dateifeld[k].Zinsen;
cells[3,k]:= dateifeld[k].Tilgung;
cells[4,k]:= dateifeld[k].Ende;
end;
end;
procedure TForm1.BitBtn3Click(Sender: TObject);
begin
close;
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
form2.show;
end;
procedure TForm1.BitBtn4Click(Sender: TObject);
begin
form3.show;
end;
procedure TForm1.Info1Click(Sender: TObject);
begin
application.MessageBox('
Zinsrechner v1.0'+chr(13)+'
Computer@ Software Developing'+chr(13)+chr(13)+'
Written by'+chr(13)+'
Niels Grabowski'+chr(13)+'
Rico Guszahn'+chr(13)+chr(13)+'
All rights reserved © 2009','
Über');
end;
procedure TForm1.Dokumentation1Click(Sender: TObject);
begin
ShellExecute(Application.Handle, '
open', PChar('
Dokumentation\Dokumentation.pdf'),
Nil,
Nil, SW_NORMAL);
end;
procedure TForm1.BitBtn5Click(Sender: TObject);
var i : integer;
Kredit,Annuitaet,Ende,Zinsen,Zinssatz : real;
begin
Kredit:=Strtofloat (Edit4.Text);
Zinssatz:=Strtofloat(Edit5.Text)/100;
Annuitaet:=Strtoint(Edit6.Text);
if Annuitaet<Kredit*(Zinssatz+0.01)
then MessageDlg ('
Die jährliche Rückzahlung reicht für eine '+
'
Abzahlung des Kredits nicht aus.', mtInformation,[mbOk],0)
else
begin
i:=1;
with stringgrid2
do
repeat
if i>5
then rowcount :=i+1;
Cells[0,i]:=inttostr(i);
Cells[1,i]:=floattostrf(Kredit,fffixed,10,2);
Zinsen:=Kredit*Zinssatz;
Cells[2,i]:=floattostrf(Zinsen,fffixed,10,2);
Ende:=Kredit+Zinsen-Annuitaet;
Cells[3,i]:=floattostrf(Annuitaet-Zinsen,fffixed,10,2);
Cells[4,i]:=floattostrf(Ende,fffixed,10,2);
Kredit:=Ende;
i:=i+1;
until Kredit*(1+Zinssatz)<Annuitaet;
Edit7.Text:=inttostr(i);
Edit8.Text:=floattostrf(Kredit*(1+Zinssatz),fffixed,10,2);
end;
end;
procedure TForm1.BitBtn6Click(Sender: TObject);
begin
form4.show;
end;
procedure TForm1.Edit4Click(Sender: TObject);
begin
Edit4.selectall;
BitBtn1.
Default := False;
BitBtn5.
Default := True;
end;
procedure TForm1.Edit5Click(Sender: TObject);
begin
Edit5.selectall;
BitBtn1.
Default := False;
BitBtn5.
Default := True;
end;
procedure TForm1.Edit6Click(Sender: TObject);
begin
Edit6.selectall;
BitBtn1.
Default := False;
BitBtn5.
Default := True;
end;
procedure TForm1.Edit1Click(Sender: TObject);
begin
Edit1.selectall;
BitBtn1.
Default := True;
BitBtn5.
Default := False;
end;
procedure TForm1.Edit2Click(Sender: TObject);
begin
Edit2.selectall;
BitBtn1.
Default := True;
BitBtn5.
Default := False;
end;
procedure TForm1.Edit3Click(Sender: TObject);
begin
Edit3.selectall;
BitBtn1.
Default := True;
BitBtn5.
Default := False;
end;
procedure TForm1.BitBtn7Click(Sender: TObject);
var j:integer;
begin
for j:=1
to max
do
with form1.stringgrid2
do
begin cells[0,j]:='
';
cells[1,j]:='
';
cells[2,j]:='
';
cells[3,j]:='
';
cells[4,j]:='
';
end;
for j:=1
to max
do
with form1.stringgrid1
do
begin cells[0,j]:='
';
cells[1,j]:='
';
cells[2,j]:='
';
cells[3,j]:='
';
cells[4,j]:='
';
end;
edit1.clear;
edit2.clear;
edit3.clear;
edit4.clear;
edit5.clear;
edit6.clear;
edit7.clear;
end;
//Methode im OnDrawCell aufrufen
procedure TForm1.StringGrid2DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var j:integer;
begin
{ //Text linksbündig ohne Zeilenumbruch in der ersten Zeile
if ARow = 0 then
StringGridAlignment(StringGrid2, Rect, ACol, ARow, taLeftJustify, False); }
//Text zentriert mit Zeilenumbruch in der zweiten Zeile
if ARow >= 0
then
StringGridAlignment(StringGrid2, Rect, ACol, ARow, taCenter, True);
{//Text rechtsbündig ohne Zeilenumbruch restliche Zeilen
if ARow > 1 then
StringGridAlignment(StringGrid2, Rect, ACol, ARow, taRightJustify, False); }
end;
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var j:integer;
begin
if ARow >= 0
then
StringGridAlignment(StringGrid1, Rect, ACol, ARow, taCenter, True);
end;
procedure TForm1.Datei2Click(Sender: TObject);
begin
if opendialog1.execute
then begin
assignfile(datei,opendialog1.filename);
reset(datei);
read(datei,dateifeld);
closefile(datei);
savedialog1.filename:=opendialog1.filename;
form1.caption:=opendialog1.filename;
zurueck;
end;
end;
procedure TForm1.DateiSpeichern1Click(Sender: TObject);
begin
if savedialog1.filename<>'
'
then begin
dateifeldlesen;
assignfile(datei,savedialog1.filename);
rewrite(datei);
write(datei,dateifeld);
closefile(datei);
end
else DateiSpeichernunter1Click(Sender);
end;
procedure TForm1.DateiSpeichernunter1Click(Sender: TObject);
begin
if savedialog1.Execute
then begin
dateifeldlesen;
assignfile(datei,savedialog1.filename);
rewrite(datei);
write(datei,dateifeld);
closefile(datei);
form1.caption:=savedialog1.filename;
end;
end;
procedure TForm1.Beenden1Click(Sender: TObject);
begin
close;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
var i,Laufzeit:integer;
Anfang, Ende, Zinsen, Zinssatz:Real;
begin
Anfang:=Strtofloat(Edit1.text);
Zinssatz:=Strtofloat(edit3.text)/100;
Laufzeit:=Strtoint(Edit2.text);
{if Edit1.text <> ''
then MessageDlg ('Die jährliche Rückzahlung reicht für eine '+
'Abzahlung des Kredits nicht aus.', mtInformation,[mbOk],0)
else
begin }
Stringgrid1.rowcount:=Laufzeit+1;
for i:=1
to Laufzeit
do
with stringgrid1
do
begin
Cells[0,i]:=inttostr(i);
Cells[1,i]:=floattostrf(Anfang,fffixed,10,2);
Zinsen:=Anfang*Zinssatz;
Cells[2,i]:=floattostrf(Zinsen,fffixed,10,2);
Ende:=Anfang+Zinsen;
Cells[3,i]:=floattostrf(ende,fffixed,10,2);
Anfang:=Ende;
end;
end;
end.
var Value: double;
begin
result:=false;
if (Eingabefeld.Text = '
')
then
begin
ShowMessage('
Das Eingabefeld ist leer.');
exit;
end;
try
Value:=StrtoFloat (Eingabefeld.Text);
except
ShowMessage('
Die Eingabe konnte nicht in eine Zahl konvertiert werden.');
exit;
end;
if (Value<=0.0)
then
begin
ShowMessage('
Wert darf nicht negativ sein.');
exit;
end;
result:=true;
Wert:=Value;
end;