i

{ Когда форма создается при запуске программы, } { все это происходит: }

procedure TForml.FormCreate(Sender: TObject);
var I : Integer;
TempPayment : TPayment;
TempPayNum,TempPayPrin,TempPaylnt,TempPrinSoFar,TempIntSoFar, TempExtraPrin,TempBalance : Stringl5 begin
{ До того, как мы сделаем что-то, мы создаем закладную } { и заполняем ее: } Mortgage := TMortgage.Create;

Mortgage.Init(100000.00, { Начальный основной капитал }

0.07, { Процентная ставка в десятичном }

{ виде, а НЕ в %' } 360, { Периоды в заеме )

12); { Периоды в году }

{ Здесь мы загружаем заголовки колонок в } { заголовок StringGrid: } WITH MortgageGrid DO begin
( Нам необходимо по одной строхе для каждого платежа } { плюс строка заголовка вверху: } RowCount := Mortgage.Payments.Count + 1;
{Заполнение строки заголовка строхами заголовков колонок) Cells[0,0] := 'Payment #'; Cells[l,0] := 'Principal'; Cells [2,0] := 'Interests-Cells [3,0] := 'Prin. So Far'; Cells [4,0] := 'Int. So Far'; Cells[5,0] := 'Extra Prin.'; Cells[6,0] := 'Balance';
end;

{Следующим шагом мы переносим данные из объекта платежа в}

{ строчную сетку на форме: }

FOR I := 1 ТО Mortgage.Periods DO

{ Один раз для каждого периода }

begin { Вспомните здесь, что Payments.Items } { индексируется начиная с *0* } TempPayment := Mortgage.Payments.Items[1-1]; TempPayment.GetStringForm(TempPayNum,

TempPayPrin,

TempPaylnt,

TempPrinSoFar,

TempIntSoFar,

TempExtraPrin,

TempBalance);
WITH MortgageGrid DO begin
Cells[0,1] := TempPayNum Cells[1,1] := TempPayPrin; Cells [2,1] := TempPayCnt Cells[3,1] := TempPrinSoFar; Cells [4,1] := TempIntSoFar; Cells[5,1] := TempExtraPrin Cells[6,I] := TempBalance;
end;
END;
end;
end;

Все, представляющее здесь интерес, происходит в обработчике событий OnCrcate формы. Когда форма создается, мы создаем объект TMortgage и заполняем его специальными параметрами для каждого конкретного заема по закладной. Как только заем создается и инициализуется посредством метода Inil, мы снова читаем значения из массива TList.Itcms для загрузки в StringGrid:

TempPayment := Mortgage.Payments Items[I 1]

Свойство Items для Payments TList индексируется так же, как индексировался бы любой одномерный массив.

ОПЫТ РАБОТЫ С ОБЪЕКТАМИ

Не обязательно знать все о Delphi, чтобы использовать большую часть его возможностей. Аналогично, вы можете использовать объекты в простых программах без знания о них чего-либо большего, чем я смог представить в этой главе. Это не означает, что здесь имеется все. Наследование и полиморфизм являются исключительно мощными возможностями в идее объектов, и если вы поймете их до конца, то сможете работать абсолютно со всем, что Delphi может вам предложить.

Я вернусь к теории объектов в Главе 10, специально, чтобы дать "развернутую картину" объектов и кратко объяснить - как они работают. Вообще говоря, я должен был бы дать вам это пояснение перед материалом этой главы. Но у меня было предчувствие, что развернутая картина объектов будет гораздо более проста для понимания, если вы сперва увидите объекты за работой, в своих собственных руках, в программе, выполняющей что-то реальное и, возможно, даже полезное вам.


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

Программирование в среде 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