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

📄 fincalu.pas

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


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');

⌨️ 快捷键说明

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