- •Введение
- •Лабораторная работа №1. Создание простого приложения
- •1 ) Последовательность действий по созданию интерфейса пользователя
- •2) Последовательность действий по программированию щелчка по командным кнопкам (программирование событий):
- •3) Компиляция и выполнение приложения
- •1) Последовательность действий по созданию интерфейса пользователя
- •2) Последовательность действий по программированию событий
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа №2. Циклические программы. Многострочное поле memo
- •1) Последовательность действий по созданию интерфейса пользователя
- •2) Последовательность действий по программированию щелчка по командным кнопкам (программирование событий)
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа №3. Работа с одномерными массивами
- •1) Последовательность действий по созданию интерфейса пользователя
- •2) Последовательность действий по программированию событий
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа № 4. Работа с двумерными массивами
- •Контрольные вопросы
- •Лабораторная работа № 5. Процедуры и функции в delphi
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа № 6. Рекурсивные процедуры и функции
- •Контрольные вопросы
- •Лабораторная работа №7. Разработка приложения с несколькими модулями
- •2) Последовательность действий по программированию событий
- •Лабораторная работа №8. Работа со строками
- •1) Последовательность действий по созданию интерфейса пользователя
- •2) Последовательность действий по программированию событий
- •3) Откомпилируйте приложение и проверьте его работу задания для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа №9. Создание текстового редактора
- •Задание для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа № 10. Методы простой сортировки
- •Задание для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа № 11. Поиск данных в массиве
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа №12. Работа с файлами
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа №13. Работа с типизированными файлами (файлы записей)
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа № 14. Динамические структуры данных . Стек и очередь
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Лабораторная работа № 15. Практическое применение стека и очереди
- •Лабораторная работа №16. Линейные списки
- •Лабораторная работа №17. Работа с бинарными деревьями поиска
- •Задание для самостоятельной работы
- •Лабораторная работа №18. Основы объектно-ориентированного программирования
- •Задание для самостоятельной работы
- •Лабораторная работа №19. Графика в delphi. Компоненты shape и chart
- •Контрольные вопросы
- •Лабораторная работа №20. Графика в delphi. Рисование по пикселам и пером
- •Контрольные вопросы
- •Лабораторная работа № 21. Вычисление суммы ряда
- •Литература
- •Содержание
- •214013 Г. Смоленск, Энергетический проезд, 1
Задание для самостоятельной работы
На основе существующий иерархии классов создайте класс кольцо.
Создайте следующую иерархию классов: TLocation (размещение) – Tpoint (точка) – Tline (линия) – Tromb (ромб).
КОНТРОЛЬНЫЕ ВОПРОСЫ
Дайте определение класса и объекта.
Чем поля отличаются от свойств?
Что такое конструктор и деструктор?
Для каких целей используются виртуальные классы?
Для каких целей используется перегрузка операторов?
Лабораторная работа №19. Графика в delphi. Компоненты shape и chart
ЦЕЛЬ РАБОТЫ: Освоение графических возможностей Delphi и работы с компонентами Shape и Chart.
П ОДГОТОВКА К РАБОТЕ: Изучить свойства и методы компонентов Chart и Shape.
УКАЗАНИЯ К ВЫПОЛНЕНИЮ РАБОТЫ
Компонент Shape (Страница Additional на панели компонентов) только условно может быть отнесен к средствам отображения графической информации, поскольку просто представляет собой различные геометрические фигуры, соответствующим образом заштрихованные. Основное свойство этого компонента - Shape (форма), которое может принимать значения, приведенные в таблице 19.1.
Таблица 19.1 Значения компонента Shape
stRectangle |
прямоугольник |
stSquare |
квадрат |
stRouiidRect |
прямоугольник со скругленными углами |
stRoundSquare |
квадрат со скругленными углами |
stEllipse |
эллипс |
stCircle |
круг |
Примеры данных форм показаны на рис.19.1.
Другое существенное свойство компонента - Brush (кисть). Это свойство является объектом типа TBrush, имеющим ряд подсвойств, в частности: цвет (Brush.Color) и стиль (Brush.Style) заливки фигуры. Третье из специфических свойство компонента Shape - Pen (перо), определяющее стиль линий.
К омпонент Chart (Страница Additional на панели компонентов) позволяет строить различные диаграммы и графики. Компонент Chart имеет множество свойств, методов, событий.
Компонент Chart является контейнером объектов Series - наследников класса TChartSeries. Каждый такой объект представляет серию данных, характеризующихся определенным стилем отображения: тем или иным графиком или диаграммой. Каждый компонент Chart может включать несколько серий. При отображении графика каждая серия соответствует одной кривой на графике, при отображении диаграммы можно наложить друг на друга несколько различных серий.
Для одного компонента Chart можно задать несколько серий одинаковых данных с разным типом диаграммы. Делая в каждый момент времени активной одну из них, можно предоставить пользователю выбор типа диаграммы.
Задание 1. Создайте форму, изображенную на рис.19.1. и добавьте фигуры: прямоугольник со скругленными краями, квадрат, квадрат со скругленными краями. Установите для созданных фигур различные значения свойств Brush и Pen.
Порядок выполнения:
Для получения формы, изображенной на рис.19.1 в событии OnCreate для формы Form1 запишите программный код:
procedure TForm1.FormCreate(Sender: TObject);
begin
Shape1.Brush.Color:=clCream;
Shape1.Brush.Style:=bsSolid;
Shape1.Pen.Style:=psSolid;
Shape1.Shape:=stCircle;
Shape2.Brush.Style:=bsBDiagonal;
Shape2.Pen.Style:=psDashDot;
Shape2.Shape:=stEllipse;
Shape3.Brush.Style:=bsBDiagonal; Shape3.Shape:=stRectangle;
end;
Задание 2. Создайте форму, изображенную на рис.19.2.
Порядок выполнения:
Для получения формы выполните следующие действия:
Разместите два компонента Chart на форме и посмотрите открывшиеся в Инспекторе Объектов свойства. Рядом со многими свойствами расположены кнопки с многоточием, которые позволяют вызвать ту или иную страницу Редактора Диаграмм - многостраничного окна, позволяющего установить все свойства диаграмм. Вызов Редактора Диаграмм возможен также двойным щелчком на компоненте Chart или щелчком на нем правой кнопкой мыши и выбором команды Edit Chart во всплывшем меню.
Сделайте двойной щелчок на левом компоненте Chart. При этом открывается окно Редактора Диаграмм (рис. 19.3), страница Chart, которая имеет несколько закладок.
Щелкните на кнопке Add (добавить серию) на закладке Series. Вы попадете в окно (рисунок 19.4), в котором можно выбрать тип диаграммы или графика. В данном случае выберите Bar.
С помощью закладки Titles можно задать заголовок диаграммы, закладка Legend позволяет задать параметры отображения легенды диаграммы или убрать ее с экрана, закладка Panel определяет вид панели, на которой отображается диаграмма, закладка 3D дает возможность изменить внешний вид диаграммы: наклон, сдвиг, толщину и т.д. Страница Series, также имеющая ряд закладок, дает возможность выбрать дополнительные характеристики отображения серии.
Выйдите из Редактора Диаграмм, выделите в приложении правый компонент Chart и повторите для него задание свойств с помощью Редактора Диаграмм. В данном случае надо будет задать две серии, если хотите отображать на графике две кривые, и выбрать тип диаграммы Line. Поскольку речь идет о графиках, то можно воспользоваться закладками Axis и Walls для задания координатных характеристик осей и трехмерных граней графика.
Добавьте на компонент Chart еще одну тождественную серию, нажав на закладке Series страницы Chart кнопку Clone, а затем для этой новой серии нажать кнопку Change (изменить) и выбрать другой тип диаграммы.
На этом проектирование внешнего вида приложения завершается. Осталось написать код, задающий данные, которые вы хотите отображать. Для задания отображаемых значений надо использовать методы серий Series. Рассмотрим три основные метода.
- Метод Clear очищает серию от занесенных ранее данных.
- Метод Add: Add(Const AValue:Double; Const ALabel:String; AColor:TColor) позволяет добавить в диаграмму новую точку. Параметр AValue соответствует добавляемому значению, параметр ALabel - метка, которая будет отображаться на диаграмме и в легенде (необязательный параметр, его можно задать пустым: ‘’), AColor - цвет.
- Метод AddXY: AddXY(Const AXValue, AYValue: Double; Const ALabel: String; AColor: TColor) позволяет добавить новую точку в график функции. Параметры AXValue и AYValue соответствуют аргументу и функции. Параметры ALabel и AColor те же, что и в методе Add.
Процедура, обеспечивающая загрузку данных, может иметь вид:
procedure TForm1.FormCreate(Sender: TObject);
const Al=155; A2=251; A3=203; A4=404;
var i:word;
begin
With Series1 do
begin
Clear;
Add(Al,'Цех 1',clYellow); Add(A2, 'Цех 2',clBlue);
Add(A3,'Цех 3',clRed); Add(A4, 'Цех 4',clPurple);
end;
Series2.Clear; Series3.Clear;
for i:=0 to 100 do
begin
Series2.AddXY(0.02*Pi*i,sin(0.02*Pi*i),'',clRed);
Series3.AddXY(0.02*Pi*i,cos(0.02*Pi*i),'',clBlue);
end;
end;
Эту процедуру можно включить в обработку щелчка какой-нибудь кнопки, в команду меню или просто в событие OnCreate формы. Операторы Clear нужны, если в процессе работы приложения вы собираетесь обновлять данные. Без этих операторов повторное выполнение методов Add и AddXY только добавит новые точки, не удалив прежние.
Откомпилируйте приложение и проверьте его работу
ЗАДАНИЕ 3: Построить эпициклоиду по заданному параметрическому представлению (см. рисунок 19.5), где x=(a+b) *cos(t) – a*cos((a+b)*t/a), y=(a+b) *sin( t) – a*sin((a+b)*t/a), a>0, b>0. Рассмотреть следующие случаи:
Если b/a есть целое положительное число, 0<t<2*π;
Если b/a=p/q, где p и q - положительные взаимно простые числа, 0< t <2*q*π.
ПОСЛЕДОВАТЕЛЬНОСТЬ ДЕЙСТВИЙ:
Перенесите на форму требуемые компоненты;
Добавьте для компонента Chart новую серию;
Настройте компонент Chart, как показано на рисунках 19.6 и 19.7.
Для события OnClick кнопки «Пуск» напишите следующий программный код:
procedure TForm1.BitBtn1Click(Sender: TObject);
var a,b,x,y,t,q:real;
begin
a:=StrToFloat(Edit1.Text); b:=StrToFloat(Edit2.Text);
t:=0; q:=2;
While t<2*q*pi do
begin
x:=(a+b)*cos(t) - a*cos((a+b)*t/a);
y:= (a+b)*sin( t) - a*sin((a+b)*t/a);
Series1.AddXY(x,y,'',clRed); t:=t+0.05;
end;
end;
Проверьте работу приложения.
ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОЙ РАБОТЫ
Построить улитку Паскаля по заданному параметрическому представлению, где x=a*cos2(t) + b*cos(t), y=a*cos(t) *sin( t)+b*sin(t), a>0, b>0, 0<t<2*π. Рассмотреть следующие случаи:
b>2*a;
a<b<2*a;
a>b.
Построить астроиду по заданному параметрическому представлению, где x=b*cos2(t) + b*cos(t), y=b *sin2( t), b>0, 0<t<2*π..