{ показывает окно диалога } if ShowModal = rorOk then begin { устанавливает переменные, как требуется }

if (rbOnePmt.Checked) then begin WhichButton := eptOne;

FromPayment := StrToInt (edFromPmt.Text); end

else if (rbRangePmts.Checked) then begin WhichButton := eptRange;

FromPayment := StrToInt (edFromPmt.Text); ToPayment := StrToInt (edToPmt.Text); end

else { rbAUPmts . Checked)

WhichButton := eptAll Val (edExtraAmt.Text, ExtraAmount, i); Result := True;

end else

Result := False, end;

Да, это громоздкий код - почти 50 строк. Но это будет значительным шагом вперед, если вы потратите на него некоторое время. Первая часть устанавливает поля окна диалога, основываясь на значениях в переменных WhichButton, FromPayment, ToPayment и ExtraAmount Затем окно диалога выполняется и, если оно возвращает mrOk, переменные устанавливаются из входных полей. Тут имеет место некоторое дублирование кода в тех из функций, которые выполняются функцией Execute, так как они выполняются также - обработчиками события OnClick отдельных переключателей Дублирования кода следует избегать, где это только возможно, и мы уберем его в нашем случае после того, как соединим все вместе.

Прежде, чем мы продолжим, убедитесь, что добавили SysUtils к списку модулей в операторе uses раздела interface.

Применение окна диалога Дополнительный капитал

Как только вы добавите функцию Execute окна диалога Дополнительный капитал, сохраните свою работу и снова переключитесь на форму калькулятора закладных. Затем дважды щелкните на кнопке Дополнительный капитал, чтобы создать обработчик события OnClick, и введите код процедуры, показанный в Листинге 9.6.

ЛИСТИНГ 9.6 Процедура события OnClick окна диалога Дополнительный капитал

procedure TMortgageForm btnExtraClick(Sender TObject) begin ( не отображает окно диалога, если не отображается } { ни одна закладная }

if (not МогtgageGrid.Visible) then Exit; with ExtraPrinDlg do begin if Execute then begin case WhichButton of eptOne :

Mortgage.ApplyExtraPrincipal(FromPayment,ExtraAmount); eptRange :

Mortgage.RangeExtraPrincipal (FromPayment,

ToPayment, ExtraAmount);

eptAll :

Mortgage.MultipleExtraPrincipal (1, ExtraAmount);
end;
{ и отображает результаты } Ini tMor tgageD і spiay;
end end end;

Прежде, чем я поясню работу этого кода, убедитесь в том, что он работает. Добавьте Extra к списку модулей в операторе uses раздела interface, сохраните свою работу и нажмите F9, чтобы проверить программу.

Сперва создайте новую закладную. Если вы щелкните на кнопке Дополнительный капитал, когда никакая закладная не отображается, обработчик события OnClick осуществит возврат, ничего не делая. После того, как вы отобразили новую закладную, щелкните на кнопке Дополнительный капитал, выберите - "один", "диапазон" или "все", и введите другие значения в окно диалога. Когда вы нажмете кнопку ОК, будет применена форма Дополнительный капитал, а закладная пересчитана и повторно отображена.

EXIT И CASE

В TMortgageForm.btnExtraClick имеются две конструкции, которые вы не видели ранее: процедура Exit и оператор case.


⇐ Предыдущая страница| |Следующая страница ⇒

Программирование в среде Delphi



Новости за месяц

  • Декабрь
    2021
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31