Лабораторная работа №15-16
Создание оконных интерактивных приложений. Построение диаграмм
Цель работы:
1. Получить навыки работы с системой Delphi;
2. Ознакомиться с некоторыми визуальными компонентами системы Delphi, предназначенными для программирования пользовательского интерфейса.
3. Изучить основные компоненты, предназначенные для разработки графиков и диаграмм, их свойства, порядок создания методов.
Продолжительность работы - 4 часа.
Выполнить пример приведенный ниже.
Дано: N – количество видов товаров (1≤N≤10), а так же сведения о продажах: название товара, цена единицы товара, количество проданного товара по каждому виду. Написать программу, выполняющую расчет стоимости продаж по видам товаров, и представляющую результаты расчетов в виде круговой диаграммы, демонстрирующей процентные доли видов товаров в общей стоимости продаж. Программа должна использовать оконный интерфейс и работать в интерактивном режиме (см. рис. 1).
Рис. 1. Внешний вид программы построения диаграммы
Инструкция по выполнению
- Средствами Windows создайте свою рабочую папку, в которой будете хранить результаты выполнения задания на программирования. Назовите ее.
- Запустите среду программирования Delphi 7.
- Создайте новое приложение, сохраните его в рабочей папке. Для этого однократно щелкните левой клавишей мыши по кнопке «Save (Ctrl+S)». Назовите файл.
- В окне Object Inspector задайте следующие свойства основной формы Form1:
Свойство | Значение | Описание |
Caption | Построение диаграммы | |
Font\Size | ||
Position | poScreenCenter | |
BorderStyle | bsNone | |
Height | ||
Width |
- Последовательно расположите на форме 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 (компонент – «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 (компонент – «Chart (Chart)» расположен на закладке Additional) со свойствами:
Свойство | Значение | Описание |
BevelInner | bvNone | |
BevelOuter | bvNone | |
Title | Доли продаж по товарам | |
AxisVisible | False |
- Двойным щелчком левой клавиши мыши по диаграмме на форме вызовите редактор диаграммы.
- Выберите вкладку Chart\Series и однократным щелчком по кнопке вызовите форму выбора вида диаграммы и установите на ней круговую диаграмму. Нажмите кнопку .
- Выберите вкладку Series\Marks и установите переключатель Style в положение Percent.
- Выберите вкладку Chart\Titles и в редактируемом окне наберите заголовок для диаграммы «Доли продаж по товарам».
- В процессе работы с редактором диаграммы постарайтесь разобраться с назначением его закладок, подзакладок и параметров, расположенных на них (2 – 3 параметра на каждой подзакладке. По результатам обследования составьте описание параметров диаграммы, заполнив таблицу вида:
№ п.п. | Закладка | Подзакладка | Параметр | Назначение |
… | ||||
n |
Возможно, в конце исследования вам несколько раз придется удалять диаграмму Chart1 и настраивать ее заново. Для этого однократным щелчком по левой клавише мыши выделите объект Chart1 на форме или в окне ObjectTreeView и нажмите клавишу Delete на клавиатуре. Затем повторите п.п. 5g, 6 – 9 настоящей инструкции.
- Закройте форму редактирования параметров диаграммы.
- Добавьте в описание приватных процедур класса 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;
- В разделе 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;
- Последовательно добавьте соответствующим объектам перечисленные ниже методы, определяющие реакцию приложения на различные события (см. п. Ошибка! Источник ссылки не найден. – Ошибка! Источник ссылки не найден. инструкции по выполнению лабораторной работы № 2). По мере добавления методов регулярно выполняйте запуск программы, исправляйте допущенные ошибки. Немного поработайте с приложением, чтобы разобраться с особенностями его работы. Попробуйте, перетаскивая границы изменить размеры окна, сменить его положение, свернуть, максимизировать, развернуть до нормальных размеров, понажимать на кнопки, ввести в редактируемые элементы произвольную текстовую, числовую информацию и т.д.
- Метод Button1Сlick – реакция на событие onClick, нажатие кнопки TButton1 («Выход»):
procedure TForm1.Button1Click(Sender: TObject);
begin
Close;
end;
- Метод 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; {Здесь надо будет прекратить трассировку}
- Метод 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; {Здесь надо будет прекратить трассировку}
- Метод EditStringGrid1KeyUp – реакция на событие onKeyUp, редактирование строковой таблицы StringGrid1 («Данные о продажах») с помощью клавиатуры:
procedure TForm1.StringGrid1KeyUp(
Sender: TObject; var Key: Word; Shift: TShiftState);
begin {Здесь надо будет установить точку начала трассировки}
ReCalculation;
end; {Здесь надо будет прекратить трассировку}
- Установите точку начала трассировки (см. п.п. Ошибка! Источник ссылки не найден. – Ошибка! Источник ссылки не найден. инструкции по выполнению лабораторной работы № 2) на первых операторах begin процедур FormCreate, Edit1Change и StringGrid1KeyUp.
- Выполните запуск программы. Для этого однократно щелкните по кнопке «Run (F9)».
- Введите данные контрольного примера. Обратите внимание: программа автоматически переходит в режим трассировки каждый раз, когда достигает точки остановки.
- Выполните трассировку с заходом в процедуры (пошаговое выполнение) процедур FormCreate, Edit1Change и StringGrid1KeyUp, подобно тому, как вы это делали в Лабораторной работе № 4, используя кнопку «Trace into (F7)» на панели инструментов Delphi. Трассировку следует прекратить в моменты выхода из процедур FormCreate, Edit1Change и StringGrid1KeyUp StringGrid1KeyUp (оператор «end;»), соответственно. Для этого на последнем шаге процедуры следует однократно щелкнуть по кнопке «Run (F9)». Для составления протокола для процедуры StringGrid1KeyUp используйте результаты трассировки при первом (введено только одно значение) и последнем обращении к процедуре StringGrid1KeyUp (исходные данные введены полностью). В протоколе следует отразить причины возникновения исключительной ситуации и условия, необходимые для того, чтобы она не возникла.
- Повторите п. 4 настоящей инструкции используя трассировку без захода в процедуры, используя кнопку «Step over (F8)» на панели инструментов Delphi. Составьте протокол прохождения контрольного примера для процедуры Edit1Change.
- Повторяя действия Ошибка! Источник ссылки не найден. – Ошибка! Источник ссылки не найден. – выполните трассировку процедур StringGrid1KeyUp и ReCalculation для 2-го, 3-го и 4-го контрольных примеров.
- Снимите точку начала трассировки однократным щелчком по красной отметке слева от оператора begin.
- Сохраните исходный файл проекта в своей рабочей папке. Для этого однократно щелкните левой клавишей мыши по кнопке «Save (Ctrl+S)».
- Выйдите из среды программирования Delphi с помощью меню File\Exit.
Содержание отчета:
- Название и цель лабораторной работы;
- Описание контрольных примеров;
- Заполненные таблицы со свойствами объектов, использованных в программе и их описанием;
- Вывод по работе