Procedure TForm1.ReCalculation;

Лабораторная работа №15-16

Создание оконных интерактивных приложений. Построение диаграмм

Цель работы:

1. Получить навыки работы с системой Delphi;

2. Ознакомиться с некоторыми визуальными компонентами системы Delphi, предназначенными для программирования пользовательского интерфейса.

3. Изучить основные компоненты, предназначенные для разработки графиков и диаграмм, их свойства, порядок создания методов.

Продолжительность работы - 4 часа.

Выполнить пример приведенный ниже.

Дано: N – количество видов товаров (1≤N≤10), а так же сведения о продажах: название товара, цена единицы товара, количество проданного товара по каждому виду. Написать программу, выполняющую расчет стоимости продаж по видам товаров, и представляющую результаты расчетов в виде круговой диаграммы, демонстрирующей процентные доли видов товаров в общей стоимости продаж. Программа должна использовать оконный интерфейс и работать в интерактивном режиме (см. рис. 1).

procedure TForm1.ReCalculation; - student2.ru

Рис. 1. Внешний вид программы построения диаграммы

Инструкция по выполнению

  1. Средствами Windows создайте свою рабочую папку, в которой будете хранить результаты выполнения задания на программирования. Назовите ее.
  2. Запустите среду программирования Delphi 7.
  3. Создайте новое приложение, сохраните его в рабочей папке. Для этого однократно щелкните левой клавишей мыши по кнопке procedure TForm1.ReCalculation; - student2.ru «Save (Ctrl+S)». Назовите файл.
  4. В окне Object Inspector задайте следующие свойства основной формы Form1:
Свойство Значение Описание
Caption Построение диаграммы  
Font\Size  
Position poScreenCenter  
BorderStyle bsNone  
Height  
Width
  1. Последовательно расположите на форме Form1 перечисленные ниже объекты (см. рис. 1) и установите для них указанные в таблице значения свойств.

a. Строка редактирования Edit1 класса TEdit со свойствами:

Свойство Значение Описание
Width  
Hint Введите количество видов товаров  
ShowHint True  

b. Счетчик UpDown1 класса TupDown со свойствами:

Свойство Значение Описание
Associate Edit1  
Max  
Min  
Orientation udVertical  

c. Метка Label1 класса TLabel со свойствами:

Свойство Значение Описание
Caption Количество видов товаров:  

d. Групповая панель GroupBox1 класса TgroupBox со свойствами:

Свойство Значение Описание
Caption Данные о продажах  
Ctl3D False  
Height  
Hint Введите данные о продажах  
Left  
ShowHint True  
Top  
Width  

e. Строковая таблица StringGrid1 класса TStringGrid (компонент procedure TForm1.ReCalculation; - student2.ru – «StringGrid (Grids)» расположен на закладке Additional) со свойствами:

Свойство Значение Описание
Align alClient  
ColCount  
FixedCols  
FixedRows  
Options\goEditing True  
RowCount  
ScrollBars ssNone  
Options\goColSizing True  

f. Кнопка Button1 класса TButton со свойствами:

Свойство Значение Описание
Caption Выход  
Enabled True  
Hint Выход из программы  
ShowHint True  

g. Диаграмма Chart1 класса TChart (компонент procedure TForm1.ReCalculation; - student2.ru – «Chart (Chart)» расположен на закладке Additional) со свойствами:

Свойство Значение Описание
BevelInner bvNone  
BevelOuter bvNone  
Title Доли продаж по товарам  
AxisVisible False  
  1. Двойным щелчком левой клавиши мыши по диаграмме на форме вызовите редактор диаграммы.
  2. Выберите вкладку Chart\Series и однократным щелчком по кнопке procedure TForm1.ReCalculation; - student2.ru вызовите форму выбора вида диаграммы и установите на ней круговую диаграмму. Нажмите кнопку procedure TForm1.ReCalculation; - student2.ru .
  3. Выберите вкладку Series\Marks и установите переключатель Style в положение Percent.
  4. Выберите вкладку Chart\Titles и в редактируемом окне наберите заголовок для диаграммы «Доли продаж по товарам».
  5. В процессе работы с редактором диаграммы постарайтесь разобраться с назначением его закладок, подзакладок и параметров, расположенных на них (2 – 3 параметра на каждой подзакладке. По результатам обследования составьте описание параметров диаграммы, заполнив таблицу вида:
№ п.п. Закладка Подзакладка Параметр Назначение
       
       
       
n        

Возможно, в конце исследования вам несколько раз придется удалять диаграмму Chart1 и настраивать ее заново. Для этого однократным щелчком по левой клавише мыши выделите объект Chart1 на форме или в окне ObjectTreeView и нажмите клавишу Delete на клавиатуре. Затем повторите п.п. 5g, 6 – 9 настоящей инструкции.

  1. Закройте форму редактирования параметров диаграммы.
  2. Добавьте в описание приватных процедур класса TForm1 (верхняя часть окна редактирования модуля Unit1) описание процедуры ReCalculation:

type

TForm1 = class(TForm)

Label1: TLabel;

Edit1: TEdit;

UpDown1: TUpDown;

GroupBox1: TGroupBox;

StringGrid1: TStringGrid;

Button1: TButton;

Chart1: TChart;

Series1: TPieSeries;

private

{ Private declarations }

Procedure ReCalculation;

public

{ Public declarations }

end;

  1. В разделе implementation текста модуля Unit1 добавьте процедуру ReCalculation:

implementation

{$R *.dfm}

procedure TForm1.ReCalculation;

Var

I:Integer;

Begin

Chart1.Series[0].Clear;

For i:=1 to StringGrid1.ColCount-1 Do

Begin

Try

StringGrid1.Cells[i,4]:=

FloatToStr(

Round(

100*StrToFloat(StringGrid1.Cells[i,3])*

StrToFloat(StringGrid1.Cells[i,2]))/100);

Chart1.Series[0].Add(

StrToFloat(StringGrid1.Cells[I,4]),

StringGrid1.Cells[i,1]);

Except

StringGrid1.Cells[i,4]:='?';

Beep;

End;

End;

End;

  1. Последовательно добавьте соответствующим объектам перечисленные ниже методы, определяющие реакцию приложения на различные события (см. п. Ошибка! Источник ссылки не найден.Ошибка! Источник ссылки не найден. инструкции по выполнению лабораторной работы № 2). По мере добавления методов регулярно выполняйте запуск программы, исправляйте допущенные ошибки. Немного поработайте с приложением, чтобы разобраться с особенностями его работы. Попробуйте, перетаскивая границы изменить размеры окна, сменить его положение, свернуть, максимизировать, развернуть до нормальных размеров, понажимать на кнопки, ввести в редактируемые элементы произвольную текстовую, числовую информацию и т.д.
    1. Метод Button1Сlick – реакция на событие onClick, нажатие кнопки TButton1Выход»):

procedure TForm1.Button1Click(Sender: TObject);

begin

Close;

end;

    1. Метод FormCreate – реакция на событие onCreate, создание формы Form1Построение диаграммы») при запуске приложения:

procedure TForm1.FormCreate(Sender: TObject);

begin {Здесь надо будет установить точку начала трассировки}

StringGrid1.Cells[0,0]:='№ п.п.';

StringGrid1.Cells[0,1]:='Товар';

StringGrid1.Cells[0,2]:='Цена';

StringGrid1.Cells[0,3]:='Количество';

StringGrid1.Cells[0,4]:='Стоимость';

StringGrid1.Cells[1,0]:='1';

StringGrid1.Cells[1,2]:='0,0';

StringGrid1.Cells[1,3]:='0,0';

ReCalculation;

end;{Здесь надо будет прекратить трассировку}

    1. Метод Edit1Change– реакция на событие onChange, изменение содержимого строки редактирования Edit1Количество товаров») при запуске приложения:

procedure TForm1.Edit1Change(Sender: TObject);

begin {Здесь надо будет установить точку начала трассировки}

StringGrid1.ColCount:=StrToInt(Edit1.Text)+1;

StringGrid1.Cells[StrToInt(Edit1.Text),0]:= Edit1.Text;

If StringGrid1.Cells[StrToInt(Edit1.Text),2]=''

then StringGrid1.Cells[StrToInt(Edit1.Text),2]:='0,0';

If StringGrid1.Cells[StrToInt(Edit1.Text),3]=''

then StringGrid1.Cells[StrToInt(Edit1.Text),3]:='0,0';

ReCalculation;

end; {Здесь надо будет прекратить трассировку}

    1. Метод EditStringGrid1KeyUp– реакция на событие onKeyUp, редактирование строковой таблицы StringGrid1Данные о продажах») с помощью клавиатуры:

procedure TForm1.StringGrid1KeyUp(

Sender: TObject; var Key: Word; Shift: TShiftState);

begin {Здесь надо будет установить точку начала трассировки}

ReCalculation;

end; {Здесь надо будет прекратить трассировку}

  1. Установите точку начала трассировки (см. п.п. Ошибка! Источник ссылки не найден.Ошибка! Источник ссылки не найден. инструкции по выполнению лабораторной работы № 2) на первых операторах begin процедур FormCreate, Edit1Change и StringGrid1KeyUp.
  2. Выполните запуск программы. Для этого однократно щелкните по кнопке procedure TForm1.ReCalculation; - student2.ru «Run (F9)».
  3. Введите данные контрольного примера. Обратите внимание: программа автоматически переходит в режим трассировки каждый раз, когда достигает точки остановки.
  4. Выполните трассировку с заходом в процедуры (пошаговое выполнение) процедур FormCreate, Edit1Change и StringGrid1KeyUp, подобно тому, как вы это делали в Лабораторной работе № 4, используя кнопку procedure TForm1.ReCalculation; - student2.ru «Trace into (F7)» на панели инструментов Delphi. Трассировку следует прекратить в моменты выхода из процедур FormCreate, Edit1Change и StringGrid1KeyUp StringGrid1KeyUp (оператор «end;»), соответственно. Для этого на последнем шаге процедуры следует однократно щелкнуть по кнопке procedure TForm1.ReCalculation; - student2.ru «Run (F9)». Для составления протокола для процедуры StringGrid1KeyUp используйте результаты трассировки при первом (введено только одно значение) и последнем обращении к процедуре StringGrid1KeyUp (исходные данные введены полностью). В протоколе следует отразить причины возникновения исключительной ситуации и условия, необходимые для того, чтобы она не возникла.
  5. Повторите п. 4 настоящей инструкции используя трассировку без захода в процедуры, используя кнопку procedure TForm1.ReCalculation; - student2.ru «Step over (F8)» на панели инструментов Delphi. Составьте протокол прохождения контрольного примера для процедуры Edit1Change.
  6. Повторяя действия Ошибка! Источник ссылки не найден.Ошибка! Источник ссылки не найден.– выполните трассировку процедур StringGrid1KeyUp и ReCalculationдля 2-го, 3-го и 4-го контрольных примеров.
  7. Снимите точку начала трассировки однократным щелчком по красной отметке слева от оператора begin.
  8. Сохраните исходный файл проекта в своей рабочей папке. Для этого однократно щелкните левой клавишей мыши по кнопке procedure TForm1.ReCalculation; - student2.ru «Save (Ctrl+S)».
  9. Выйдите из среды программирования Delphi с помощью меню File\Exit.

Содержание отчета:

Наши рекомендации