⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fincalu.pas

📁 条码控件: 一维条码控件 二维条码控件 PDF417Barcode MaxiCodeBarcode
💻 PAS
📖 第 1 页 / 共 2 页
字号:
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.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -