📄 fincalu.cpp
字号:
void __fastcall TFinCalForm::GoBtnClick(TObject *Sender)
{
long double FR = 0;
String SR = "";
switch (Functions->ItemIndex) {
case 0 : FR = AccruedInterestMaturity(DateVar[0], DateVar[1], ExtVar[0],
ExtVar[1], BasVar);
break;
case 1 : FR = AccruedInterestPeriodic(DateVar[0], DateVar[1], DateVar[2],
ExtVar[0], ExtVar[1], FreqVar, BasVar);
break;
case 2 : FR = BondDuration(DateVar[0], DateVar[1], ExtVar[0], ExtVar[1],
FreqVar, BasVar);
break;
case 3 : FR = BondPrice(DateVar[0], DateVar[1], ExtVar[0], ExtVar[1],
ExtVar[2], FreqVar, BasVar);
break;
case 4 : FR = CumulativeInterest(ExtVar[0], IntVar[0], ExtVar[1], IntVar[1],
IntVar[2], FreqVar, TimVar);
break;
case 5 : FR = CumulativePrincipal(ExtVar[0], IntVar[0], ExtVar[1], IntVar[1],
IntVar[2], FreqVar, TimVar);
break;
case 6 : FR = DecliningBalance(ExtVar[0], ExtVar[1], IntVar[0], IntVar[1],
IntVar[2]);
break;
case 7 : FR = DiscountRate(DateVar[0], DateVar[1], ExtVar[0], ExtVar[1],
BasVar);
break;
case 8 : FR = DollarToDecimal(ExtVar[0], IntVar[0]);
break;
case 9 : SR = DollarToDecimalText(ExtVar[0]);
break;
case 10 : FR = DollarToFraction(ExtVar[0], IntVar[0]);
break;
case 11 : SR = DollarToFractionStr(ExtVar[0], IntVar[0]);
break;
case 12 : FR = EffectiveInterestRate(ExtVar[0], FreqVar);
break;
case 13 : FR = FutureValue(ExtVar[0], IntVar[0], ExtVar[1], ExtVar[2],
FreqVar, TimVar);
break;
case 14 : FR = FutureValueSchedule16(ExtVar[0], ValArray, IntVar[0]);
break;
case 15 : FR = InterestRate(IntVar[0], ExtVar[0], ExtVar[1], ExtVar[2],
FreqVar, TimVar, ExtVar[3]);
break;
case 16 : FR = InternalRateOfReturn16(ValArray, IntVar[0], ExtVar[0]);
break;
case 17 : if (IsCardValid(StrVar))
SR = "Valid card number";
else
SR = "Invalid card number";
break;
case 18 : FR = ModifiedDuration(DateVar[0], DateVar[1], ExtVar[2],
ExtVar[1], FreqVar, BasVar);
break;
case 19 : FR = ModifiedIRR16(ValArray, IntVar[0], ExtVar[0], ExtVar[1]);
break;
case 20 : FR = NetPresentValue16(ExtVar[0], ValArray, IntVar[0]);
break;
case 21 : FR = NominalInterestRate(ExtVar[0], FreqVar);
break;
case 22 : FR = NonperiodicIRR16(ValArray, DateArray, IntVar[0], ExtVar[0]);
break;
case 23 : FR = NonperiodicNPV16(ExtVar[0], ValArray, DateArray, IntVar[0]);
break;
case 24 : FR = Payment(ExtVar[0], IntVar[0], ExtVar[1], ExtVar[2],
FreqVar, TimVar);
break;
case 25 : FR = PresentValue(ExtVar[0], IntVar[0], ExtVar[1], ExtVar[2],
FreqVar, TimVar);
break;
case 26 : FR = ReceivedAtMaturity(DateVar[0], DateVar[1], ExtVar[0],
ExtVar[1], BasVar);
break;
case 27 : FR = RoundToDecimal(ExtVar[0], IntVar[0], BoolVar);
break;
case 28 : FR = TBillEquivYield(DateVar[0], DateVar[1], ExtVar[0]);
break;
case 29 : FR = TBillPrice(DateVar[0], DateVar[1], ExtVar[0]);
break;
case 30 : FR = TBillYield(DateVar[0], DateVar[1], ExtVar[0]);
break;
case 31 : FR = VariableDecliningBalance(ExtVar[0], ExtVar[1], IntVar[0],
ExtVar[2], ExtVar[3], ExtVar[4], BoolVar);
break;
case 32 : FR = YieldPeriodic(DateVar[0], DateVar[1], ExtVar[0], ExtVar[1],
ExtVar[2], FreqVar, BasVar);
break;
case 33 : FR = YieldDiscounted(DateVar[0], DateVar[1], ExtVar[0],
ExtVar[1], BasVar);
break;
case 34 : FR = YieldMaturity(DateVar[0], DateVar[1], DateVar[2], ExtVar[0],
ExtVar[1], BasVar);
break;
}
FResult->Text = FloatToStr(FR);
SResult->Text = SR;
}
//---------------------------------------------------------------------------
void __fastcall TFinCalForm::FunctionsClick(TObject *Sender)
{
DisableFields();
switch (Functions->ItemIndex) {
case 0 : SetupAccruedInterestMaturity(); break;
case 1 : SetupAccruedInterestPeriodic(); break;
case 2 : SetupBondDuration(); break;
case 3 : SetupBondPrice(); break;
case 4 : SetupCumulativeInterest(); break;
case 5 : SetupCumulativePrincipal(); break;
case 6 : SetupDecliningBalance(); break;
case 7 : SetupDiscountRate(); break;
case 8 : SetupDollarToDecimal(); break;
case 9 : SetupDollarToDecimalText(); break;
case 10 : SetupDollarToFraction(); break;
case 11 : SetupDollarToFractionStr(); break;
case 12 : SetupEffectiveInterestRate(); break;
case 13 : SetupFutureValue(); break;
case 14 : SetupFutureValueSchedule(); break;
case 15 : SetupInterestRate(); break;
case 16 : SetupInternalRateOfReturn(); break;
case 17 : SetupIsCardValid(); break;
case 18 : SetupModifiedDuration(); break;
case 19 : SetupModifiedIRR(); break;
case 20 : SetupNetPresentValue(); break;
case 21 : SetupNominalInterestRate(); break;
case 22 : SetupNonperiodicIRR(); break;
case 23 : SetupNonperiodicNPV(); break;
case 24 : SetupPayment(); break;
case 25 : SetupPresentValue(); break;
case 26 : SetupReceivedAtMaturity(); break;
case 27 : SetupRoundToDecimal(); break;
case 28 : SetupTBillEquivYield(); break;
case 29 : SetupTBillPrice(); break;
case 30 : SetupTBillYield(); break;
case 31 : SetupVariableDecliningBalance(); break;
case 32 : SetupYieldPeriodic(); break;
case 33 : SetupYieldDiscounted(); break;
case 34 : SetupYieldMaturity(); break;
}
}
//---------------------------------------------------------------------------
void __fastcall TFinCalForm::DisableFields()
{
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;
}
//---------------------------------------------------------------------------
void __fastcall TFinCalForm::ExtEditExit(TObject *Sender)
{
TEdit* edit = (TEdit*) Sender;
ExtVar[edit->Tag] = edit->Text.ToDouble();
}
//---------------------------------------------------------------------------
void __fastcall TFinCalForm::IntEditExit(TObject *Sender)
{
TEdit* edit = (TEdit*) Sender;
IntVar[edit->Tag] = edit->Text.ToInt();
}
//---------------------------------------------------------------------------
void __fastcall TFinCalForm::DateEditExit(TObject *Sender)
{
TEdit* edit = (TEdit*) Sender;
DateVar[edit->Tag] = DateStringToStDate("mm/dd/yy", edit->Text, 1920);
}
//---------------------------------------------------------------------------
void __fastcall TFinCalForm::StrEditExit(TObject *Sender)
{
TEdit* edit = (TEdit*) Sender;
StrVar = edit->Text;
}
//---------------------------------------------------------------------------
void __fastcall TFinCalForm::DAEditExit(TObject *Sender)
{
for (int i=0; i<IntVar[0]; i++)
DateArray[i] = DateStringToStDate("mm/dd/yy", DAEdit->Cells[0][i], 1950);
}
//---------------------------------------------------------------------------
void __fastcall TFinCalForm::DAEditEnter(TObject *Sender)
{
DAEdit->Row = 0;
DAEdit->Col = 0;
}
//---------------------------------------------------------------------------
void __fastcall TFinCalForm::VAEditEnter(TObject *Sender)
{
VAEdit->Row = 0;
VAEdit->Col = 0;
}
//---------------------------------------------------------------------------
void __fastcall TFinCalForm::VAEditExit(TObject *Sender)
{
for (int i=0; i<IntVar[0]; i++)
ValArray[i] = VAEdit->Cells[0][i].ToDouble();
}
//---------------------------------------------------------------------------
void __fastcall TFinCalForm::FreqEditExit(TObject *Sender)
{
switch (FreqEdit->ItemIndex) {
case 0: FreqVar = fqAnnual; break;
case 1: FreqVar = fqSemiAnnual; break;
case 2: FreqVar = fqQuarterly; break;
case 3: FreqVar = fqMonthly; break;
}
}
//---------------------------------------------------------------------------
void __fastcall TFinCalForm::BasEditExit(TObject *Sender)
{
switch(BasEdit->ItemIndex) {
case 0: BasVar = BasisNASD; break;
case 1: BasVar = BasisActAct; break;
case 2: BasVar = BasisAct360; break;
case 3: BasVar = BasisAct365; break;
case 4: BasVar = BasisEur30360; break;
}
}
//---------------------------------------------------------------------------
void __fastcall TFinCalForm::TimEditExit(TObject *Sender)
{
switch (TimEdit->ItemIndex) {
case 0: TimVar = ptEndOfPeriod; break;
case 1: TimVar = ptStartOfPeriod; break;
}
}
//---------------------------------------------------------------------------
void __fastcall TFinCalForm::BoolEditExit(TObject *Sender)
{
BoolVar = BoolEdit->Checked;
}
//---------------------------------------------------------------------------
void __fastcall TFinCalForm::FormCreate(TObject *Sender)
{
for (int i=0; i<5; i++) {
ExtVar[i] = 0;
DateVar[i] = CurrentDate();
IntVar[i] = 0;
}
E1Edit->Text = FloatToStr(ExtVar[0]);
E2Edit->Text = FloatToStr(ExtVar[1]);
E3Edit->Text = FloatToStr(ExtVar[2]);
E4Edit->Text = FloatToStr(ExtVar[3]);
E5Edit->Text = FloatToStr(ExtVar[4]);
I1Edit->Text = IntToStr(IntVar[0]);
I2Edit->Text = IntToStr(IntVar[1]);
I3Edit->Text = IntToStr(IntVar[2]);
I4Edit->Text = IntToStr(IntVar[3]);
I5Edit->Text = IntToStr(IntVar[4]);
D1Edit->Text = StDateToDateString("mm/dd/yy", DateVar[0], true);
D2Edit->Text = StDateToDateString("mm/dd/yy", DateVar[1], true);
D3Edit->Text = StDateToDateString("mm/dd/yy", DateVar[2], true);
D4Edit->Text = StDateToDateString("mm/dd/yy", DateVar[3], true);
D5Edit->Text = StDateToDateString("mm/dd/yy", DateVar[4], true);
DisableFields();
for (int i=0; i<30; i++) {
ValArray[i] = 0;
DateArray[i] = CurrentDate();
}
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;
}
//---------------------------------------------------------------------------
void __fastcall TFinCalForm::BitBtn1Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -