You've already forked lazarus-ccr
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@6140 8e941d3f-bd1b-0410-a28a-d453659cc2b4
770 lines
19 KiB
ObjectPascal
770 lines
19 KiB
ObjectPascal
(* ***** BEGIN LICENSE BLOCK *****
|
|
* Version: MPL 1.1
|
|
*
|
|
* The contents of this file are subject to the Mozilla Public License Version
|
|
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
* the License. You may obtain a copy of the License at
|
|
* http://www.mozilla.org/MPL/
|
|
*
|
|
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
* for the specific language governing rights and limitations under the
|
|
* License.
|
|
*
|
|
* The Original Code is TurboPower SysTools
|
|
*
|
|
* The Initial Developer of the Original Code is
|
|
* TurboPower Software
|
|
*
|
|
* Portions created by the Initial Developer are Copyright (C) 1996-2002
|
|
* the Initial Developer. All Rights Reserved.
|
|
*
|
|
* Contributor(s):
|
|
*
|
|
* ***** END LICENSE BLOCK ***** *)
|
|
|
|
unit Fincalu;
|
|
|
|
interface
|
|
|
|
uses
|
|
{$IFDEF FPC}
|
|
{$ELSE}
|
|
Windows, Messages,
|
|
{$ENDIF}
|
|
SysUtils, Controls, Classes, Forms, StdCtrls, Buttons,
|
|
ExtCtrls, Grids, Graphics,
|
|
|
|
StFin, StDate, StDateSt;
|
|
|
|
type
|
|
TFinCalForm = class(TForm)
|
|
Functions: TRadioGroup;
|
|
GroupBox1: TGroupBox;
|
|
Label2: TLabel;
|
|
Label4: TLabel;
|
|
Label5: TLabel;
|
|
Label6: TLabel;
|
|
Label7: TLabel;
|
|
Label3: TLabel;
|
|
Label1: TLabel;
|
|
Label20: TLabel;
|
|
Arrays: TGroupBox;
|
|
Label8: TLabel;
|
|
Label9: TLabel;
|
|
StrEdit: TEdit;
|
|
Panel1: TPanel;
|
|
GoBtn: TButton;
|
|
SResult: TEdit;
|
|
BitBtn1: TBitBtn;
|
|
E1Edit: TEdit;
|
|
E2Edit: TEdit;
|
|
E3Edit: TEdit;
|
|
E4Edit: TEdit;
|
|
I1Edit: TEdit;
|
|
I2Edit: TEdit;
|
|
I3Edit: TEdit;
|
|
I4Edit: TEdit;
|
|
FResult: TEdit;
|
|
VAEdit: TStringGrid;
|
|
DAEdit: TStringGrid;
|
|
D1Edit: TEdit;
|
|
D2Edit: TEdit;
|
|
D3Edit: TEdit;
|
|
D4Edit: TEdit;
|
|
Label10: TLabel;
|
|
FreqEdit: TComboBox;
|
|
BasEdit: TComboBox;
|
|
TimEdit: TComboBox;
|
|
E5Edit: TEdit;
|
|
I5Edit: TEdit;
|
|
D5Edit: TEdit;
|
|
Label13: TLabel;
|
|
BoolEdit: TCheckBox;
|
|
|
|
procedure SetupAccruedInterestPeriodic;
|
|
procedure SetupAccruedInterestMaturity;
|
|
procedure SetupCumulativeInterest;
|
|
procedure SetupCumulativePrincipal;
|
|
procedure SetupDiscountRate;
|
|
procedure SetupEffectiveInterestRate;
|
|
procedure SetupNominalInterestRate;
|
|
procedure SetupInterestRate;
|
|
procedure SetupReceivedAtMaturity;
|
|
procedure SetupYieldPeriodic;
|
|
procedure SetupYieldDiscounted;
|
|
procedure SetupYieldMaturity;
|
|
procedure SetupTBillEquivYield;
|
|
procedure SetupTBillPrice;
|
|
procedure SetupTBillYield;
|
|
procedure SetupBondDuration;
|
|
procedure SetupModifiedDuration;
|
|
procedure SetupFutureValueSCHEDULE;
|
|
procedure SetupModifiedIRR;
|
|
procedure SetupNonperiodicIRR;
|
|
procedure SetupNonperiodicNPV;
|
|
procedure SetupDecliningBalance;
|
|
procedure SetupVariableDecliningBalance;
|
|
procedure SetupDollarToDecimal;
|
|
procedure SetupDollarToFraction;
|
|
procedure SetupDollarToDecimalText;
|
|
procedure SetupDollarToFractionStr;
|
|
procedure SetupRoundToDecimal;
|
|
procedure SetupIsCardValid;
|
|
procedure SetupNetPresentValue;
|
|
procedure SetupFutureValue;
|
|
procedure SetupPresentValue;
|
|
procedure SetupBondPrice;
|
|
procedure SetupPayment;
|
|
procedure SetupInternalRateOfReturn;
|
|
procedure ExtEditExit(Sender: TObject);
|
|
procedure IntEditExit(Sender: TObject);
|
|
procedure DisableFields;
|
|
procedure FunctionsClick(Sender: TObject);
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure GoBtnClick(Sender: TObject);
|
|
procedure FT(F : TWinControl; T: Integer; S: string);
|
|
procedure DateEditExit(Sender: TObject);
|
|
procedure VAEditExit(Sender: TObject);
|
|
procedure DAEditExit(Sender: TObject);
|
|
procedure FreqEditExit(Sender: TObject);
|
|
procedure BasEditExit(Sender: TObject);
|
|
procedure TimEditExit(Sender: TObject);
|
|
procedure StrEditExit(Sender: TObject);
|
|
procedure VAEditEnter(Sender: TObject);
|
|
procedure DAEditEnter(Sender: TObject);
|
|
procedure BoolEditExit(Sender: TObject);
|
|
procedure BitBtn1Click(Sender: TObject);
|
|
private
|
|
{ Private declarations }
|
|
public
|
|
{ Public declarations }
|
|
end;
|
|
|
|
var
|
|
FinCalForm: TFinCalForm;
|
|
|
|
implementation
|
|
|
|
{$R *.lfm}
|
|
|
|
var
|
|
ExtVar : array[1..5] of Extended;
|
|
IntVar : array[1..5] of Integer;
|
|
DateVar : array[1..5] of TStDate;
|
|
FreqVar : TStFrequency;
|
|
BasVar : TStBasis;
|
|
TimVar : TStPaymentTime;
|
|
StrVar : String;
|
|
BoolVar : Boolean;
|
|
DateArray : array[0..29] of TStDate;
|
|
ValArray : array[0..29] of Double;
|
|
|
|
|
|
{------ Function parameters ------}
|
|
|
|
procedure TFinCalForm.FT(F : TWinControl; T: Integer; S: string);
|
|
begin
|
|
F.Enabled := true;
|
|
TEdit(F).Color := clYellow;
|
|
F.TabOrder := T;
|
|
F.Hint := S;
|
|
F.ShowHint := true;
|
|
end;
|
|
|
|
procedure TFinCalForm.SetupAccruedInterestPeriodic;
|
|
begin
|
|
FT(D1Edit, 1, 'Issue');
|
|
FT(D2Edit, 2, 'Settlement');
|
|
FT(D3Edit, 3, 'Maturity');
|
|
FT(E1Edit, 4, 'Rate');
|
|
FT(E2Edit, 5, 'Par');
|
|
FT(FreqEdit, 6, 'Frequency');
|
|
FT(BasEdit, 7, 'Basis');
|
|
end;
|
|
|
|
procedure TFinCalForm.SetupAccruedInterestMaturity;
|
|
begin
|
|
FT(D1Edit, 1, 'Issue');
|
|
FT(D2Edit, 2, 'Maturity');
|
|
FT(E1Edit, 3, 'Rate');
|
|
FT(E2Edit, 4, 'Par');
|
|
FT(BasEdit, 5, 'Basis');
|
|
end;
|
|
|
|
procedure TFinCalForm.SetupCumulativeInterest;
|
|
begin
|
|
FT(E1Edit, 1, 'Rate');
|
|
FT(I1Edit, 2, 'NPeriods');
|
|
FT(E2Edit, 3, 'Present Value');
|
|
FT(I2Edit, 4, 'Start Period');
|
|
FT(I3Edit, 5, 'End Period');
|
|
FT(FreqEdit, 6, 'Frequency');
|
|
FT(TimEdit, 7, 'Timing');
|
|
end;
|
|
|
|
procedure TFinCalForm.SetupCumulativePrincipal;
|
|
begin
|
|
SetupCumulativeInterest;
|
|
end;
|
|
|
|
procedure TFinCalForm.SetupDiscountRate;
|
|
begin
|
|
FT(D1Edit, 1, 'Settlement');
|
|
FT(D2Edit, 2, 'Maturity');
|
|
FT(E1Edit, 3, 'Price');
|
|
FT(E2Edit, 4, 'Redemption');
|
|
FT(BasEdit, 5, 'Basis');
|
|
end;
|
|
|
|
procedure TFinCalForm.SetupEffectiveInterestRate;
|
|
begin
|
|
FT(E1Edit, 1, 'Nominal Rate');
|
|
FT(FreqEdit, 2, 'Frequency');
|
|
end;
|
|
|
|
procedure TFinCalForm.SetupNominalInterestRate;
|
|
begin
|
|
FT(E1Edit, 1, 'Effective Rate');
|
|
FT(FreqEdit, 2, 'Frequency');
|
|
end;
|
|
|
|
procedure TFinCalForm.SetupInterestRate;
|
|
begin
|
|
FT(I1Edit, 1, 'NPeriods');
|
|
FT(E1Edit, 2, 'Payment');
|
|
FT(E2Edit, 3, 'Present Value');
|
|
FT(E3Edit, 4, 'Future Value');
|
|
FT(FreqEdit, 5, 'Frequency');
|
|
FT(TimEdit, 6, 'Timing');
|
|
FT(E4Edit, 7, 'Guess');
|
|
end;
|
|
|
|
procedure TFinCalForm.SetupReceivedAtMaturity;
|
|
begin
|
|
FT(D1Edit, 1, 'Settlement');
|
|
FT(D2Edit, 2, 'Maturity');
|
|
FT(E1Edit, 3, 'Investment');
|
|
FT(E2Edit, 4, 'Discount');
|
|
FT(BasEdit, 5, 'Basis');
|
|
end;
|
|
|
|
procedure TFinCalForm.SetupYieldPeriodic;
|
|
begin
|
|
FT(D1Edit, 1, 'Settlement');
|
|
FT(D2Edit, 2, 'Maturity');
|
|
FT(E1Edit, 3, 'Rate');
|
|
FT(E2Edit, 4, 'Price');
|
|
FT(E3Edit, 5, 'Redemption');
|
|
FT(FreqEdit, 6, 'Frequency');
|
|
FT(BasEdit, 7, 'Basis');
|
|
end;
|
|
|
|
procedure TFinCalForm.SetupYieldDiscounted;
|
|
begin
|
|
FT(D1Edit, 1, 'Settlement');
|
|
FT(D2Edit, 2, 'Maturity');
|
|
FT(E1Edit, 3, 'Price');
|
|
FT(E2Edit, 4, 'Redemption');
|
|
FT(BasEdit, 5, 'Basis');
|
|
end;
|
|
|
|
procedure TFinCalForm.SetupYieldMaturity;
|
|
begin
|
|
FT(D1Edit, 1, 'Issue');
|
|
FT(D2Edit, 2, 'Settlement');
|
|
FT(D3Edit, 3, 'Maturity');
|
|
FT(E1Edit, 4, 'Rate');
|
|
FT(E2Edit, 5, 'Price');
|
|
FT(BasEdit, 6, 'Basis');
|
|
end;
|
|
|
|
procedure TFinCalForm.SetupTBillEquivYield;
|
|
begin
|
|
FT(D1Edit, 1, 'Settlement');
|
|
FT(D2Edit, 2, 'Maturity');
|
|
FT(E1Edit, 3, 'Discount');
|
|
end;
|
|
|
|
procedure TFinCalForm.SetupTBillPrice;
|
|
begin
|
|
SetupTBillEquivYield;
|
|
end;
|
|
|
|
procedure TFinCalForm.SetupTBillYield;
|
|
begin
|
|
FT(D1Edit, 1, 'Settlement');
|
|
FT(D2Edit, 2, 'Maturity');
|
|
FT(E1Edit, 3, 'Price');
|
|
end;
|
|
|
|
procedure TFinCalForm.SetupBondDuration;
|
|
begin
|
|
FT(D1Edit, 1, 'Settlement');
|
|
FT(D2Edit, 2, 'Maturity');
|
|
FT(E1Edit, 3, 'Rate');
|
|
FT(E2Edit, 4, 'Yield');
|
|
FT(FreqEdit, 5, 'Frequency');
|
|
FT(BasEdit, 6, 'Basis');
|
|
end;
|
|
|
|
procedure TFinCalForm.SetupModifiedDuration;
|
|
begin
|
|
SetupBondDuration;
|
|
end;
|
|
|
|
procedure TFinCalForm.SetupFutureValueSCHEDULE;
|
|
begin
|
|
FT(E1Edit, 1, 'Principal');
|
|
FT(VAEdit, 2, 'Schedule');
|
|
FT(I1Edit, 3, 'NRates');
|
|
end;
|
|
|
|
procedure TFinCalForm.SetupModifiedIRR;
|
|
begin
|
|
FT(VAEdit, 1, 'Values');
|
|
FT(I1Edit, 2, 'NValues');
|
|
FT(E1Edit, 3, 'Finance Rate');
|
|
FT(E2Edit, 4, 'Reinvest Rate');
|
|
end;
|
|
|
|
procedure TFinCalForm.SetupNonperiodicIRR;
|
|
begin
|
|
FT(I1Edit, 1, 'NValues');
|
|
FT(VAEdit, 2, 'Values');
|
|
FT(DAEdit, 3, 'Dates');
|
|
FT(E1Edit, 4, 'Guess');
|
|
end;
|
|
|
|
procedure TFinCalForm.SetupNonperiodicNPV;
|
|
begin
|
|
FT(I1Edit, 1, 'NValues');
|
|
FT(E1Edit, 2, 'Rate');
|
|
FT(VAEdit, 3, 'Values');
|
|
FT(DAEdit, 4, 'Dates');
|
|
end;
|
|
|
|
procedure TFinCalForm.SetupDecliningBalance;
|
|
begin
|
|
FT(E1Edit, 1, 'Cost');
|
|
FT(E2Edit, 2, 'Salvage');
|
|
FT(I1Edit, 3, 'Life');
|
|
FT(I2Edit, 4, 'Period');
|
|
FT(I3Edit, 5, 'Month');
|
|
end;
|
|
|
|
procedure TFinCalForm.SetupVariableDecliningBalance;
|
|
begin
|
|
FT(E1Edit, 1, 'Cost');
|
|
FT(E2Edit, 2, 'Salvage');
|
|
FT(I1Edit, 3, 'Life');
|
|
FT(E3Edit, 4, 'Start');
|
|
FT(E4Edit, 5, 'End');
|
|
FT(E5Edit, 6, 'Factor');
|
|
FT(BoolEdit, 7, 'No Switch');
|
|
end;
|
|
|
|
procedure TFinCalForm.SetupDollarToDecimal;
|
|
begin
|
|
FT(E1Edit, 1, 'Fractional Dollar');
|
|
FT(I1Edit, 2, 'Fraction');
|
|
end;
|
|
|
|
procedure TFinCalForm.SetupDollarToFraction;
|
|
begin
|
|
FT(E1Edit, 1, 'Decimal Dollar');
|
|
FT(I1Edit, 2, 'Fraction');
|
|
end;
|
|
|
|
procedure TFinCalForm.SetupDollarToDecimalText;
|
|
begin
|
|
FT(E1Edit, 1, 'Decimal Dollar');
|
|
end;
|
|
|
|
procedure TFinCalForm.SetupDollarToFractionStr;
|
|
begin
|
|
FT(E1Edit, 1, 'Fractional Dollar');
|
|
FT(I1Edit, 2, 'Fraction');
|
|
end;
|
|
|
|
procedure TFinCalForm.SetupRoundToDecimal;
|
|
begin
|
|
FT(E1Edit, 1, 'Value');
|
|
FT(I1Edit, 2, 'Places');
|
|
FT(BoolEdit, 3, 'Bankers');
|
|
end;
|
|
|
|
procedure TFinCalForm.SetupIsCardValid;
|
|
begin
|
|
FT(StrEdit, 1, 'Card Number');
|
|
end;
|
|
|
|
procedure TFinCalForm.SetupNetPresentValue;
|
|
begin
|
|
FT(E1Edit, 1, 'Rate');
|
|
FT(I1Edit, 2, 'NValues');
|
|
FT(VAEdit, 3, 'Values');
|
|
end;
|
|
|
|
procedure TFinCalForm.SetupFutureValue;
|
|
begin
|
|
FT(E1Edit, 1, 'Rate');
|
|
FT(I1Edit, 2, 'NPeriods');
|
|
FT(E2Edit, 3, 'Payment');
|
|
FT(E3Edit, 4, 'Present Value');
|
|
FT(FreqEdit, 5, 'Frequency');
|
|
FT(TimEdit, 6, 'Timing');
|
|
end;
|
|
|
|
procedure TFinCalForm.SetupPresentValue;
|
|
begin
|
|
FT(E1Edit, 1, 'Rate');
|
|
FT(I1Edit, 2, 'NPeriods');
|
|
FT(E2Edit, 3, 'Payment');
|
|
FT(E3Edit, 4, 'Future Value');
|
|
FT(FreqEdit, 5, 'Frequency');
|
|
FT(TimEdit, 6, 'Timing');
|
|
end;
|
|
|
|
procedure TFinCalForm.SetupBondPrice;
|
|
begin
|
|
FT(D1Edit, 1, 'Settlement');
|
|
FT(D2Edit, 2, 'Maturity');
|
|
FT(E1Edit, 3, 'Rate');
|
|
FT(E2Edit, 4, 'Yield');
|
|
FT(E3Edit, 5, 'Redemption');
|
|
FT(FreqEdit, 6, 'Frequency');
|
|
FT(BasEdit, 7, 'Basis');
|
|
end;
|
|
|
|
procedure TFinCalForm.SetupPayment;
|
|
begin
|
|
FT(E1Edit, 1, 'Rate');
|
|
FT(I1Edit, 2, 'NPeriods');
|
|
FT(E2Edit, 3, 'Present Value');
|
|
FT(E3Edit, 4, 'Future Value');
|
|
FT(FreqEdit, 5, 'Frequency');
|
|
FT(TimEdit, 6, 'Timing');
|
|
end;
|
|
|
|
procedure TFinCalForm.SetupInternalRateOfReturn;
|
|
begin
|
|
FT(I1Edit, 1, 'NValues');
|
|
FT(VAEdit, 2, 'Values');
|
|
FT(E1Edit, 3, 'Guess');
|
|
end;
|
|
|
|
|
|
|
|
{------- Function selection -------}
|
|
|
|
procedure TFinCalForm.GoBtnClick(Sender: TObject);
|
|
var
|
|
FR : Extended;
|
|
SR : String;
|
|
begin
|
|
FR := 0;
|
|
SR := '';
|
|
case Functions.ItemIndex of
|
|
0 : FR := AccruedInterestMaturity(DateVar[1], DateVar[2], ExtVar[1],
|
|
ExtVar[2], BasVar);
|
|
1 : FR := AccruedInterestPeriodic(DateVar[1], DateVar[2], DateVar[3],
|
|
ExtVar[1], ExtVar[2], FreqVar, BasVar);
|
|
2 : FR := BondDuration(DateVar[1], DateVar[2], ExtVar[1], ExtVar[2],
|
|
FreqVar, BasVar);
|
|
3 : FR := BondPrice(DateVar[1], DateVar[2], ExtVar[1], ExtVar[2],
|
|
ExtVar[3], FreqVar, BasVar);
|
|
4 : FR := CumulativeInterest(ExtVar[1], IntVar[1], ExtVar[2], IntVar[2],
|
|
IntVar[3], FreqVar, TimVar);
|
|
5 : FR := CumulativePrincipal(ExtVar[1], IntVar[1], ExtVar[2], IntVar[2],
|
|
IntVar[3], FreqVar, TimVar);
|
|
6 : FR := DecliningBalance(ExtVar[1], ExtVar[2], IntVar[1], IntVar[2],
|
|
IntVar[3]);
|
|
7 : FR := DiscountRate(DateVar[1], DateVar[2], ExtVar[1], ExtVar[2],
|
|
BasVar);
|
|
8 : FR := DollarToDecimal(ExtVar[1], IntVar[1]);
|
|
|
|
9 : SR := DollarToDecimalText(ExtVar[1]);
|
|
|
|
10 : FR := DollarToFraction(ExtVar[1], IntVar[1]);
|
|
|
|
11 : SR := DollarToFractionStr(ExtVar[1], IntVar[1]);
|
|
|
|
12 : FR := EffectiveInterestRate(ExtVar[1], FreqVar);
|
|
|
|
13 : FR := FutureValue(ExtVar[1], IntVar[1], ExtVar[2], ExtVar[3],
|
|
FreqVar, TimVar);
|
|
14 : FR := FutureValueSchedule16(ExtVar[1], ValArray, IntVar[1]);
|
|
|
|
15 : FR := InterestRate(IntVar[1], ExtVar[1], ExtVar[2], ExtVar[3],
|
|
FreqVar, TimVar, ExtVar[4]);
|
|
16 : FR := InternalRateOfReturn16(ValArray, IntVar[1], ExtVar[1]);
|
|
|
|
17 : if IsCardValid(StrVar) then
|
|
SR := 'Valid card number'
|
|
else
|
|
SR := 'Invalid card number';
|
|
18 : FR := ModifiedDuration(DateVar[1], DateVar[2], ExtVar[1],
|
|
ExtVar[2], FreqVar, BasVar);
|
|
19 : FR := ModifiedIRR16(ValArray, IntVar[1], ExtVar[1], ExtVar[2]);
|
|
|
|
20 : FR := NetPresentValue16(ExtVar[1], ValArray, IntVar[1]);
|
|
|
|
21 : FR := NominalInterestRate(ExtVar[1], FreqVar);
|
|
|
|
22 : FR := NonPeriodicIRR16(ValArray, DateArray, IntVar[1], ExtVar[1]);
|
|
|
|
23 : FR := NonPeriodicNPV16(ExtVar[1], ValArray, DateArray, IntVar[1]);
|
|
|
|
24 : FR := Payment(ExtVar[1], IntVar[1], ExtVar[2], ExtVar[3],
|
|
FreqVar, TimVar);
|
|
25 : FR := PresentValue(ExtVar[1], IntVar[1], ExtVar[2], ExtVar[3],
|
|
FreqVar, TimVar);
|
|
26 : FR := ReceivedAtMaturity(DateVar[1], DateVar[2], ExtVar[1],
|
|
ExtVar[2], BasVar);
|
|
27 : FR := RoundToDecimal(ExtVar[1], IntVar[1], BoolVar);
|
|
|
|
28 : FR := TBillEquivYield(DateVar[1], DateVar[2], ExtVar[1]);
|
|
|
|
29 : FR := TBillPrice(DateVar[1], DateVar[2], ExtVar[1]);
|
|
|
|
30 : FR := TBillYield(DateVar[1], DateVar[2], ExtVar[1]);
|
|
|
|
31 : FR := VariableDecliningBalance(ExtVar[1], ExtVar[2], IntVar[1],
|
|
ExtVar[3], ExtVar[4], ExtVar[5], BoolVar);
|
|
32 : FR := YieldPeriodic(DateVar[1], DateVar[2], ExtVar[1], ExtVar[2],
|
|
ExtVar[3], FreqVar, BasVar);
|
|
33 : FR := YieldDiscounted(DateVar[1], DateVar[2], ExtVar[1],
|
|
ExtVar[2], BasVar);
|
|
34 : FR := YieldMaturity(DateVar[1], DateVar[2], DateVar[3], ExtVar[1],
|
|
ExtVar[2], BasVar);
|
|
end;
|
|
FResult.Text := FloatToStr(FR);
|
|
SResult.Text := SR;
|
|
end;
|
|
|
|
procedure TFinCalForm.FunctionsClick(Sender: TObject);
|
|
begin
|
|
DisableFields;
|
|
case Functions.ItemIndex of
|
|
0 : SetupAccruedInterestMaturity;
|
|
1 : SetupAccruedInterestPeriodic;
|
|
2 : SetupBondDuration;
|
|
3 : SetupBondPrice;
|
|
4 : SetupCumulativeInterest;
|
|
5 : SetupCumulativePrincipal;
|
|
6 : SetupDecliningBalance;
|
|
7 : SetupDiscountRate;
|
|
8 : SetupDollarToDecimal;
|
|
9 : SetupDollarToDecimalText;
|
|
10 : SetupDollarToFraction;
|
|
11 : SetupDollarToFractionStr;
|
|
12 : SetupEffectiveInterestRate;
|
|
13 : SetupFutureValue;
|
|
14 : SetupFutureValueSchedule;
|
|
15 : SetupInterestRate;
|
|
16 : SetupInternalRateOfReturn;
|
|
17 : SetupIsCardValid;
|
|
18 : SetupModifiedDuration;
|
|
19 : SetupModifiedIRR;
|
|
20 : SetupNetPresentValue;
|
|
21 : SetupNominalInterestRate;
|
|
22 : SetupNonperiodicIRR;
|
|
23 : SetupNonperiodicNPV;
|
|
24 : SetupPayment;
|
|
25 : SetupPresentValue;
|
|
26 : SetupReceivedAtMaturity;
|
|
27 : SetupRoundToDecimal;
|
|
28 : SetupTBillEquivYield;
|
|
29 : SetupTBillPrice;
|
|
30 : SetupTBillYield;
|
|
31 : SetupVariableDecliningBalance;
|
|
32 : SetupYieldPeriodic;
|
|
33 : SetupYieldDiscounted;
|
|
34 : SetupYieldMaturity;
|
|
end;
|
|
end;
|
|
|
|
{------- Misc utilities and set up -------}
|
|
|
|
procedure TFinCalForm.DisableFields;
|
|
begin
|
|
E1Edit.Enabled := false;
|
|
E1Edit.Color := clwhite;
|
|
E2Edit.Enabled := false;
|
|
E2Edit.Color := clwhite;
|
|
E3Edit.Enabled := false;
|
|
E3Edit.Color := clwhite;
|
|
E4Edit.Enabled := false;
|
|
E4Edit.Color := clwhite;
|
|
E5Edit.Enabled := false;
|
|
E5Edit.Color := clwhite;
|
|
I1Edit.Enabled := false;
|
|
I1Edit.Color := clwhite;
|
|
I2Edit.Enabled := false;
|
|
I2Edit.Color := clwhite;
|
|
I3Edit.Enabled := false;
|
|
I3Edit.Color := clwhite;
|
|
I4Edit.Enabled := false;
|
|
I4Edit.Color := clwhite;
|
|
I5Edit.Enabled := false;
|
|
I5Edit.Color := clwhite;
|
|
D1Edit.Enabled := false;
|
|
D1Edit.Color := clwhite;
|
|
D2Edit.Enabled := false;
|
|
D2Edit.Color := clwhite;
|
|
D3Edit.Enabled := false;
|
|
D3Edit.Color := clwhite;
|
|
D4Edit.Enabled := false;
|
|
D4Edit.Color := clwhite;
|
|
D5Edit.Enabled := false;
|
|
D5Edit.Color := clwhite;
|
|
DAEdit.Enabled := false;
|
|
DAEdit.Color := clwhite;
|
|
VAEdit.Enabled := false;
|
|
VAEdit.Color := clwhite;
|
|
StrEdit.Enabled := false;
|
|
StrEdit.Color := clwhite;
|
|
TimEdit.Enabled := False;
|
|
TimEdit.Color := clWhite;
|
|
BasEdit.Enabled := False;
|
|
BasEdit.Color := clWhite;
|
|
FreqEdit.Enabled := False;
|
|
FreqEdit.Color := clWhite;
|
|
BoolEdit.Enabled := false;
|
|
BoolEdit.Color := clWhite;
|
|
end;
|
|
|
|
procedure TFinCalForm.ExtEditExit(Sender: TObject);
|
|
begin
|
|
with (Sender as TEdit) do
|
|
ExtVar[Tag] := StrToFloat(Text);
|
|
end;
|
|
|
|
procedure TFinCalForm.IntEditExit(Sender: TObject);
|
|
begin
|
|
with (Sender as TEdit) do
|
|
IntVar[Tag] := StrToInt(Text);
|
|
end;
|
|
|
|
procedure TFinCalForm.DateEditExit(Sender: TObject);
|
|
begin
|
|
with (Sender as TEdit) do
|
|
DateVar[Tag] := DateStringToStDate('mm/dd/yy', Text, 1920);
|
|
end;
|
|
|
|
procedure TFinCalForm.StrEditExit(Sender: TObject);
|
|
begin
|
|
StrVar := TEdit(Sender).Text;
|
|
end;
|
|
|
|
procedure TFinCalForm.DAEditEnter(Sender: TObject);
|
|
begin
|
|
DAEdit.Row := 0;
|
|
DAEdit.Col := 0;
|
|
end;
|
|
|
|
procedure TFinCalForm.DAEditExit(Sender: TObject);
|
|
var
|
|
I : Integer;
|
|
begin
|
|
for I := 0 to IntVar[1] - 1 do
|
|
DateArray[I] := DateStringToStDate('mm/dd/yy', DAEdit.Cells[0,I], 1950);
|
|
end;
|
|
|
|
procedure TFinCalForm.VAEditEnter(Sender: TObject);
|
|
begin
|
|
VAEdit.Row := 0;
|
|
VAEdit.Col := 0;
|
|
end;
|
|
|
|
procedure TFinCalForm.VAEditExit(Sender: TObject);
|
|
var
|
|
I : Integer;
|
|
begin
|
|
for I := 0 to IntVar[1] - 1 do
|
|
ValArray[I] := StrToFloat(VAEdit.Cells[0,I]);
|
|
end;
|
|
|
|
procedure TFinCalForm.FreqEditExit(Sender: TObject);
|
|
begin
|
|
case FreqEdit.ItemIndex of
|
|
0: FreqVar := fqAnnual;
|
|
1: FreqVar := fqSemiAnnual;
|
|
2: FreqVar := fqQuarterly;
|
|
3: FreqVar := fqMonthly;
|
|
end;
|
|
end;
|
|
|
|
procedure TFinCalForm.BasEditExit(Sender: TObject);
|
|
begin
|
|
case BasEdit.ItemIndex of
|
|
0: BasVar := BasisNASD;
|
|
1: BasVar := BasisActAct;
|
|
2: BasVar := BasisAct360;
|
|
3: BasVar := BasisAct365;
|
|
4: BasVar := BasisEur30360;
|
|
end;
|
|
end;
|
|
|
|
procedure TFinCalForm.TimEditExit(Sender: TObject);
|
|
begin
|
|
case TimEdit.ItemIndex of
|
|
0: TimVar := ptEndOfPeriod;
|
|
1: TimVar := ptStartOfPeriod;
|
|
end;
|
|
end;
|
|
|
|
procedure TFinCalForm.BoolEditExit(Sender: TObject);
|
|
begin
|
|
BoolVar := BoolEdit.Checked;
|
|
end;
|
|
|
|
procedure TFinCalForm.FormCreate(Sender: TObject);
|
|
var
|
|
I : Integer;
|
|
begin
|
|
for I := 1 to 5 do begin
|
|
ExtVar[I] := 0;
|
|
DateVar[I] := CurrentDate;
|
|
IntVar[I] := 0;
|
|
end;
|
|
E1Edit.Text := FloatToStr(ExtVar[1]);
|
|
E2Edit.Text := FloatToStr(ExtVar[2]);
|
|
E3Edit.Text := FloatToStr(ExtVar[3]);
|
|
E4Edit.Text := FloatToStr(ExtVar[4]);
|
|
E5Edit.Text := FloatToStr(ExtVar[5]);
|
|
I1Edit.Text := IntToStr(IntVar[1]);
|
|
I2Edit.Text := IntToStr(IntVar[2]);
|
|
I3Edit.Text := IntToStr(IntVar[3]);
|
|
I4Edit.Text := IntToStr(IntVar[4]);
|
|
I5Edit.Text := IntToStr(IntVar[5]);
|
|
D1Edit.Text := DateToStr(DateVar[1]);
|
|
D2Edit.Text := DateToStr(DateVar[2]);
|
|
D3Edit.Text := DateToStr(DateVar[3]);
|
|
D4Edit.Text := DateToStr(DateVar[4]);
|
|
D5Edit.Text := DateToStr(DateVar[5]);
|
|
DisableFields;
|
|
for I := 0 to 29 do begin
|
|
ValArray[I] := 0;
|
|
DateArray[I] := CurrentDate;
|
|
end;
|
|
TimEdit.ItemIndex := 0;
|
|
TimVar := ptEndOfPeriod;
|
|
BasEdit.ItemIndex := 0;
|
|
BasVar := BasisNASD;
|
|
FreqEdit.ItemIndex := 0;
|
|
FreqVar := fqAnnual;
|
|
BoolEdit.Checked := false;
|
|
BoolVar := false;
|
|
Application.HintPause := 250;
|
|
Application.HintColor := clAqua;
|
|
end;
|
|
|
|
procedure TFinCalForm.BitBtn1Click(Sender: TObject);
|
|
begin
|
|
Close;
|
|
end;
|
|
|
|
end.
|