Ход работы. Загрузите среду визуального программирования Delphi.Загрузите среду визуального программирования Delphi.
2. Измените заголовок (Caption) формы с "Form1" на "Биржа ценных бумаг" (без кавычек) и увеличьте размеры формы.
Откажитесь от возможности изменять размеры окна программы, установить свойство формы BorderStyle в значение bsDialog.
Сохраните выполненную на данный момент форму в папке для работы 5.
Расположите в нижней части формы две пиктографические кнопки типа SpeedButton и кнопку окончания работы программы BitBtn (см. макет на рис. 15 и окно рабочей программы на рис. 14).
Для этого используйте компоненты SpeedButton и BitBtn на закладке Additional палитры компонентов Delphi. На кнопках SpeedButton можно расположить пиктограмму из специального набора пиктограмм - графических файлов формата bmp. У кнопки типа BitBtn имеется свойство Kind (стандартное действие) с возможными значениями bkClose (Закрыть), bkCancel (Отказаться), bkYes (Так), bkNo (Hi), bkHelp (Помощь) и другими. На них также могут быть расположены пиктограммы. Задание стандартного действия дает возможность не программировать данную кнопку. Задайте следующие значения свойств вставленных объектов:
Замечание. Символ & в заголовке кнопки указывает на то, что эту кнопку можно нажать также и с помощью "горячей" комбинации клавиш Alt + буква заголовка, перед которой стоит этот символ.
Вставьте в форму три таблицы текстовых строк StringGrid (см. рис. 15). Воспользуйтесь компонентой StringGrid на закладке Additional палитры компонентов. Задайте следующие значения свойств этих объектов:
* Замечание. Чтобы открыть список свойства Options (Параметры) объекта StringGrid2, надо дважды нажать на этом слове в окне Object Inspector данного объекта.
7. Разместите на форме текстовые поля так, как показано на рис.15. Задайте следующие значения свойств этих объектов:
Все другие поля – видимые, значение их свойств Caption показаны на рис. 13.
8. В окне текста программы перед разделом implementation введите описание констант и переменных программы: const N=5; Р: array [0..N-1,1..3,1..3] of integer = {Массив прогноза прибыли} (((40,-40,30), (-20, 10, 10), (-10,40,-30)), { r = (0-1) } ((50,-70,40), (-30, 70,-30), (-50,20, 30)), { r = (1-2) } ((30,-70,70), (-30, 70,-30), (20,10,-50)), {r = (2-3) } ((-50,-30,70), (50,-50, 70), (30,50,-70)), { r = (3-4) } ((30,-70,70), (-30, 70,-30), (40, 0,-50))); { r = (4-5) } Prob: array [0..N, 1..3] of integer = {Массив вероятностей} ((22,41,37), (27,34,39), (47,33,20), (10,53,37), (41,34,25)); var Form1: TForm1; {Эта запись уже есть в заготовке модуля} capital, year, profit, r: integer; money: array [0..2] of integer; {Инвестированные суммы}
9. Запрограммируйте кнопки SpeedButton1 и SpeedButton2 так: procedure TForm1.SpeedButton1Click(Sender: TObject); {Кнопка результатов года} var first, second, variant, и, code: integer; s: string; begin randomize; variant:= random(100); {Случайный выбор варианта состояния рынка} first:= Prob[r,1]; {Первый и второй разделители} second:= first + Prob[r,2]; {отрезка вероятностей} profit:= 0; {Начальное значение прибыли перед печалям} for i:=0 to 2 do val(StringGrid2.Cells[0,i+1],money[i],code); {Получаем числовые значения для инвестиций и заполняем ими массив money} if variant<first then {Вычисления прибыли для первого варианта} Begin for i:=0 to 2 do profit:=profit + money[i]*P[r,i+l,l]; {Печаль по предприятиям} Label9.Visible:=True; {Подчеркивание выбранного варианта} Label8.Сарtіоn:='3росло евро' {Информационная строка} End; if (variant>=first) and (variant<second) then {Вычисление прибыли для второго варианта состояния рынка} Begin for и:=0 to 2 do profit:=profit+money[i]*P[r,i+1,2]; {Печаль по предприятиям} Label10.Visible:=True; {Подчеркивание выбранного варианта} Label8.Сарtion:='3рослая йєна' {Информационная строка} End; if variant>=second then {Вычисление прибыли для третьего варианта} Begin for i:=0 to 2 do profit:=profit+money[i]*P[r,i+1,3]; {Печаль по предприятиям} Label11.Visible:=True; {Подчеркивание выбранного варианта} Label8.Caption:='3pic доллар' {Информационная строка} End; profit:=Round(profit/100); {Закругление прибыли к доллару} Str(profit, s); Label7.Caption:= s+' долларов'; {Печать прибыли} Label7.Visible:=True; {Засвитка прибыли} Label8.Visible:=True; {Засвитка информационной строки} SpeedButton1.Enabled:=False; {Кнопка биржевых результатов недоступная} SpeedButton2.Enabled:=True; {Кнопка перехода на следующий год доступная} End;
procedure TForm1.SpeedButton2Click(Sender: TObject); {кнопка перехода на следующий год} Begin уеаr:=уеаr+1; {Следующий год} capital:=capital+profit; {Обновляем капитал} profit:=0; {Прибыль к началу года равняется нулю} Refresh; {Описанная ниже процедура ежегодного обновления формы} Label9.Visible:=False; {Выключаем подчеркивание варианта состояния рынка} Label1O.Visible:=False; Label11. Visible: =False; Label7.Visible:=False; {Гасим информацию о прибыли} End;
|