home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Best of German Only 1
/
romside_best_of_german_only_1.iso
/
finanzen
/
jz
/
pack8.exe
/
FINTV.PAS
< prev
Wrap
Pascal/Delphi Source File
|
1993-03-08
|
21KB
|
777 lines
program finTV ;
{ Programm mit Turbo Vision 2.0 1.3.93 }
uses Drivers, Objects, Views, Menus,
App, MsgBox, Editors, StdDlg, Dialogs, Validate,
finanzl ;
{ *******************************
J Z - F I N A N Z M A T H E Vers. 1.1 8.3.1993
eine Toolbox für Finanzmathematik in Borland Pascal
Alle Rechte bei: Karl Jenz
7302 Ostfildern 1 Horbstr.7
*** Demoprogramme zur Anwendung der Toolbox
mit Turbo Vision 2.0 von Borland Pascal **
****************************** }
CONST
{ Konstanten für Kommandos und Hilfen: }
cmBildsch = 111 ;
cmDrucker = 112 ;
cmDarl = 1001 ;
cmTilg = 1010 ;
cmRatenKr = 1020 ;
cmEinmal = 2001 ;
cmEinmWinDa = 2002 ;
cmRatenSp = 2010 ;
cmRatenSpWinDa = 2011 ;
cmSonderSp = 2020 ;
cmWertp = 2030 ;
hcHilfen = 5800 ; { Hilfe bei Dialogen }
hcDarl = 6001 ;
hcTilg = 6010 ;
hcRatenKr = 6020 ;
hcEinmal = 7001 ;
hcRatenSp = 7010 ;
hcSonderSp = 7020 ;
hcWertp = 7030 ;
RealCharSet = ['-',',','.','0'..'9'] ;
{ zulässige Eingabezeichen bei Real }
MsgNoHelp = 'Hilfen noch nicht programmiert.' ;
MsgNo = 'Noch nicht programmiert.' ;
MsgFehler = 'Fehlerhafte Eingaben' ;
MsgDemo = '*Demoprogramm JZ-Finanzmathe*' ;
TYPE
str11 = string[11] ;
str15 = string[15] ;
str250 = string[250] ;
TEinm = record { Eingabe der Zahlen }
kap0, zinsPr, monate, kap1 : str11 ;
periode, berechng : Word ;
end ;
TEinm2 = record { Rechenwerte der eingegebenen Zahlen }
kap0, zinsPr, kap1 : real ;
monate, periode : integer ; { Umgewandelte Periode in Rechenwert }
end;
TRaten = record { Eingabe der Zahlen bei Ratensparen }
rate, zinsPr, anzahl : str11 ;
ratenPer, zinsPer : Word ; { Ratenperiode und Zinsperiode }
end;
TRaten2 = record { Rechenwerte aus TRaten }
rate, zinsPr, endkap : real ;
anzahl, ratenPer, zinsPer : integer ;
end;
PRealValidator = ^TRealValidator ;
TRealValidator = object ( TFilterValidator )
{ speziell für Realeingaben abgeleitetes Kontrollinstrument }
constructor Init ( AValidChars : TCharSet );
function IsValidInput ( var S : String ;
NoAutoFill : boolean ) : Boolean ; virtual ;
end ;
TMyDialog = object ( TDialog )
constructor Init ( var Bounds : TRect ; ATitle : TTitleStr );
procedure HandleEvent ( var Event : TEvent ) ; virtual ;
end;
PEinmWindow = ^TEinmWindow ;
TEinmWindow = object ( TMyDialog )
Einm2 : TEinm2 ; { Eingaben als Rechenwerte }
constructor Init ;
function berechnen : boolean ;
{ gibt True zurück, wenn Eingaben ok waren und
Ergebnis berechnet werden konnte. }
procedure HandleEvent ( var Event : TEvent ) ; virtual ;
end;
PRatenWindow = ^TRatenWindow ;
TRatenWindow = object ( TMyDialog )
Raten2 : TRaten2 ; { Eingaben als Rechenwerte }
constructor Init ;
function berechnen : boolean ;
{ gibt True zurück, wenn Eingaben ok waren und
Ergebnis berechnet werden konnte. }
procedure HandleEvent ( var Event : TEvent ) ; virtual ;
end;
TMyApp = object ( TApplication )
EinmWindow : PEinmWindow ;
RatenSpWindow : PRatenWindow ;
constructor Init ;
procedure NochNicht ; { Noch nicht programmiert }
procedure HandleEvent ( var Event : TEvent ) ; virtual ;
procedure InitMenuBar ; virtual ;
procedure InitStatusLine ; virtual ;
procedure DialogEinm ;
procedure DialogRatenSp ;
end ;
{ Globale Variablen: }
VAR ausgabe : str250 ; { Ausgabe Ergebnisse mit MsgBox }
Einm : TEinm ;
EinmFl : PEinmal ; { Finanzmathem. Library }
RatenSp : TRaten ; { Eingabewerte Ratensparen }
RatenSpFl : PRaten ; { Finanzmathem. Object }
function periodenWert ( eingabe : Word ) : integer ;
var ret : integer ;
{ bei Eingabe der Periode mit TV wird ein
Wert von 0-3 zurückgegeben
diese Funktion macht daraus einen Rechenwert }
begin
ret := 12 ;
case eingabe of
0 : ret := 1 ;
1 : ret := 3 ;
2 : ret := 6 ;
3 : ret := 12 ;
end;
periodenWert := ret ;
end;
constructor TRealValidator.Init ( AValidChars : TCharSet ) ;
begin
inherited Init ( AValidChars );
end;
function TRealValidator.IsValidInput ( var S : String ;
NoAutoFill : boolean ) : boolean ;
var ok, komma : boolean ;
l, x : integer ;
begin
ok := inherited IsValidInput ( S, NoAutoFill );
l := length ( S );
komma := false ;
if ok and ( l > 0 ) then begin
for x := 1 to l do begin
if ( S[x] = ',' ) then S[x] := '.' ;
case S[x] of
'-' : if ( x <> 1 ) then ok := false ;
{ minus nur an erster Stelle }
'.' : if komma then ok := false
else komma := true ;
{ nur 1 Komma je ZAHL }
'0'..'9': { das ist ok }
else
ok := false ;
end;
if not ok then break ;
end;
end;
if not ok then write ( #7 );
IsValidInput := ok ;
end;
constructor TMyApp.init ;
begin
inherited Init ;
EinmWindow := nil ;
RatenSpWindow := nil ;
end;
procedure TMyApp.DialogEinm ;
begin
if EinmFl = nil then
EinmFl := New ( PEinmal, Init );
if Message ( Desktop, evBroadcast, cmEinmWinDa, nil ) = nil then begin
EinmWindow := New ( PEinmWindow, Init );
InsertWindow ( EinmWindow );
EinmWindow^.SetData ( Einm );
end
else
if PView ( EinmWindow ) <> Desktop^.TopView then
EinmWindow^.Select ;
EinmWindow^.Show ; { Darstellen }
end;
procedure TMyApp.DialogRatenSp ;
begin
if RatenSpFl = nil then
RatenSpFl := New ( PRaten, Init );
if Message ( Desktop, evBroadcast, cmRatenSpWinDa, nil ) = nil then begin
RatenSpWindow := New ( PRatenWindow, Init );
InsertWindow ( RatenSpWindow );
RatenSpWindow^.SetData ( RatenSp );
end
else
if PView ( RatenSpWindow ) <> Desktop^.TopView then
RatenSpWindow^.Select ;
RatenSpWindow^.Show ; { Darstellen }
end;
procedure TMyApp.InitStatusLine ;
var R : TRect ;
begin
GetExtent ( R );
R.A.Y := R.B.Y - 1 ;
New (StatusLine, Init ( R,
NewStatusDef ( 0, $EFFF, { der "normale" Bereich ohne Dialoge }
NewStatusKey ( '~F10~ Menü', kbF10, cmMenu ,
NewStatusKey ( '~Alt+X~ Ende', kbAltX, cmQuit,
nil )),
NewStatusDef ( $F000, $FFFF , { Bereich der Eingabemasken
bei Dialogen über HelpCtx definiert }
NewStatusKey ( '~F2~ Bildsch.', kbF2, cmBildsch ,
NewStatusKey ( '~F3~ Drucker' , kbF3, cmDrucker ,
NewStatusKey ( '', kbF1, hcHilfen,
nil ))),
nil )))) ;
end ;
procedure TMyApp.InitMenuBar ;
var R : TRect ;
begin
getExtent (R );
R.B.Y := R.A.Y + 1 ;
MenuBar := New ( PMenuBar, Init ( R, NewMenu (
NewSubMenu ( '~S~parvorgänge', hcNoContext, NewMenu (
NewItem ( '~E~inmalbetrag', '', kbNoKey, cmEinmal, hcEinmal ,
NewItem ( '~R~atensparen', '', kbNoKey, cmRatenSp, hcRatenSp,
NewItem ( 'S~o~ndersparen', '', kbNoKey, cmSonderSp, hcSonderSp,
NewItem ( '~W~ertpapiere', '' , kbNoKey, cmWertp, hcWertp ,
NewLine (
NewItem ( '~E~nde ' , 'Alt-X', kbAltX, cmQuit, hcNoContext ,
nil ))))))),
NewSubMenu ( '~K~redite', hcNoContext, NewMenu (
NewItem ( '~D~arlehen', '', kbNoKey, cmDarl, hcDarl ,
NewItem ( '~T~ilgungsplan', '', kbNoKey, cmTilg, hcTilg,
NewItem ( '~R~atenkredit', '', kbNoKey, cmRatenKr, hcRatenKr,
nil )))) ,
nil )))
)) ;
end ;
procedure TMyApp.NochNicht ;
begin
MessageBox ( MsgNo , nil,
mfInformation or mfOKButton );
end;
procedure TMyApp.HandleEvent ( var Event : TEvent );
begin
inherited HandleEvent ( Event );
if Event.What = evCommand then
case Event.Command of
cm