В окне текста программы после раздела implementation введите описание метода Refresh формы.
procedure TForm1.Refresh; var i, j: integer; s: string; Begin Str (capital, s); Form1.Label6.Caption:= s+' долларов'; Str (year, s); Form1.Label5.Caption:= s+' год'; Str (profit, s); Form1.Label7.Caption:= s+' долларов'; Form1.Label8.Caption:='Введите сумму'; Form1.SpeedButton2.Enabled:=False; Form1.SpeedButton1.Enabled:=False; randomize; r:=random(N); {Выбор инвестиционного климата r} for i:=l to 3 do for j:=l to 3 do Begin Str(P[r,j,i],s); Form1.StringGrid1.Cells[i,j]:=s+' центов'; end; for i:=1 to 3 do Begin Str(Prob[r,i],s); Form1.StringGrid3.Cells[i,0]:=s+' %'; Form1.StringGrid2.Cells[0,i]:="; End end;
Строку procedure Refresh; вставьте в произвольном месте раздела type TForm1 = class(TForm)... в окне текста программы.
Запрограммируйте процедуру создания формы FormCreate. Для этого дважды щелкните на форме и полученную заготовку процедуры FormCreate заполните следующим образом:
procedure TForm1.FormCreate(Sender: TObject); Begin capital:=1000; year:=2000; profit:=0; Refresh; StringGrid1.Cells[1,0]:='3pocтe евро'; StringGrid1.Cells[2,0]:='3pocтe йєна'; StringGrid1.Cells[3,0]:='3pocтe доллар'; StringGrid1.Cells[O,1l:='Hundai'; StringGrid1.Cells[0,2]:='Philips'; StringGild1.Cells[0,3]:='Bosh'i StringGrid2.Cells[0,0]:='Инвестиции, $'; StringGrid3.Cells[0,0]:='Вероятности'; End;
Сохраните выполненную на данный момент работу в своей папке.
13. Запрограммируйте событие ввода данных в таблицу StringGrid2 так, чтобы в момент ввода денежных сумм в первую и вторую клеточку в третьей клеточке сразу отображался остаток капитала (поскольку каждый год бизнесмен инвестирует весь имеющийся капитал). Активизируйте объект StringGrid2 и в окне Object Inspector откройте закладку Events этого объекта. На этой закладке вам предлагается выбрать событие объекта, для которой вы хотите описать последовательность действий - реакцию на событие. Выберите событие OnSetEditText (Если текст редактируется) и дважды щелкните в поле справа от нее. Откроется окно программы с заготовкой процедуры StringGrid2SetEditText. Заполните ее следующим образом:
procedure TForm1.StringGrid2SetEditText(Sender:TObject; ACol, ARow:Longint; const Value:string); var i,code:integer; s:string; Begin for i:=0 to 1 do val(StringGrid2.Cells[0,i+1],money[i],code); money[2]:=capital-money[0]-money[1]; {Вычисляем остаток капитала и инвестируем его в третье предприятие} Str(money[2],s); StringGrid2.Cells[0,3]:=s; SpeedButton1.Enabled: =Тruе; End;
Замечание. Заготовки очевидных для каждого объекта событий-процедур можно вызвать, дважды нажимая на объекте, на макете формы, так, как это всегда делалось для кнопок. Для большинства объектов это событие - OnClick (Если нажать), в том числе и для StringGrid. Поэтому мы были вынуждены "вручную" выбрать нужный для нашего случая тип события - OnSetEditText.
Апустите созданную программу и исследуйте ее работу. Введите денежные суммы инвестиций в клеточки для первого и второго предприятий и наблюдайте за изменением третьей суммы. Проверьте, была ли правильно вычислена компьютером третья сумма. Нажмите на кнопке "Биржевые результаты", просмотрите результаты финансового года, нажмите на кнопке "Следующий год". Попробуйте так несколько раз и закончите работу программы, щелкнув на кнопке "Конец".
Продемонстрируйте созданную форму преподавателю. Закончите работу.
Выполните следующие индивидуальные задания, демонстрируя каждый пункт преподавателю. 1. Информационную надпись "Прибыль (убыток) на конец года представляет" измените на "Прибыль на конец года представляет" или "Убыток на конец года представляет" в зависимости от того возрос или уменьшился капитал игрока в конце года в сравнении с начальным.
2. Обеспечьте вывод денежной суммы прибыли зеленым цветом, а убытка - красным.
3. Не дайте возможности игроку ввести отрицательные денежные суммы в таблицу инвестиций.
4. Вычисляйте и отображайте на форме все денежные суммы с точностью до цента.
|