Технология разработки приложений Windows в среде визуального программирования. Лекция 1 и 2

Содержание

Слайд 2

Визуальное программирование - способ создания программ путем манипулирования графическими объектами вместо

Визуальное программирование
 - способ создания программ путем манипулирования графическими объектами вместо написания

кода в текстовом виде

Визуальное программирование
иногда представляют как следующий этап развития текстовых языков программирования

Слайд 3

Интегрированная среда разработки (ИСР) (IDE – Integrated Development Environment) – специальная

Интегрированная среда разработки (ИСР) 
(IDE – Integrated Development Environment)
– специальная программа, предоставляющая

возможность удобной совместной работы с различными компонентами системы программирования
Слайд 4

C++ Builder программный продукт, инструмент быстрой разработки приложений (RAD), интегрированная среда

C++ Builder
программный продукт, инструмент быстрой
разработки приложений (RAD),
интегрированная среда разработки (IDE),
система, используемая программистами для
разработки программного обеспечения на языке
 программирования C++

RAD (rapid application development) 
(быстрая разработка приложений)
- концепция

организации технологического процесса разработки программных продуктов
Слайд 5

https://www.embarcadero.com/ru/products/cbuilder/starter/free-download Версии C (C++) Builder

https://www.embarcadero.com/ru/products/cbuilder/starter/free-download

Версии C (C++) Builder

Слайд 6

Слайд 7

Запуск оболочки C++ Builder File – New – Windows VCL Application

Запуск оболочки C++ Builder

File – New – Windows VCL Application

VCL -

Visual Component Library –
Библиоте́ка визуа́льных компоне́нтов
- объектно-ориентированная библиотека для разработки программного обеспечения

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

Слайд 8

Слайд 9

Этапы создания проекта Создание и сохранение нового проекта Перенос на форму

Этапы создания проекта

Создание и сохранение нового проекта
Перенос на форму необходимых компонентов
Размещение

компонентов на форме в соответствии с поставленной задачей
Задание значений свойств компонентов
Определение событий, на которые будет реагировать приложение
Написание обработчиков событий
Тестирование и отладка приложения

В многооконных приложениях пункты 2 – 5 повторяются
для каждой вводимой в приложение формы

Слайд 10

Компонент Form (Форма) Form - форма, основной компонент приложения На форме размещаются все другие компоненты

Компонент Form (Форма)

Form - форма, основной компонент приложения
На форме размещаются все

другие компоненты
Слайд 11

Слайд 12

Слайд 13

Слайд 14

Слайд 15

Слайд 16

События при работе с мышью OnClick − Щелчок мыши на компоненте

События при работе с мышью
OnClick − Щелчок мыши на компоненте
OnDblClick

− Двойной щелчок мыши на компоненте.
OnMouseDown − Нажатие клавиши мыши над компонентом. Возможно распознавание нажатой кнопки и координат курсора мыши.
ОnМоusеMоvе − Перемещение курсора мыши над компонентом. Возможно распознавание нажатой кнопки и координат курсора мыши.
OnMouseUp – Отпускание ранее нажатой кнопки мыши над компонентом. Возможно распознавание нажатой кнопки и координат курсора мыши.
Слайд 17

OnStartDrag − Начало процесса перетаскивания объекта. Возможно распознавание перетаскиваемого объекта. OnDragOver

OnStartDrag − Начало процесса перетаскивания объекта. Возможно распознавание перетаскиваемого объекта.
OnDragOver −

Перемещение перетаскиваемого объекта над компонентом. Возможно распознавание перетаскиваемого объекта и координат курсора мыши.
OnDragDrop − Отпускание ранее нажатой кнопки мыши после перетаскивания объекта. Возможно распознавание перетаскиваемого объекта и координат курсора мыши.
OnEndDrag − Еще одно событие при отпускании ранее нажатой кнопки мыши после перетаскивания объекта. Возможно распознавание перетаскиваемого объекта и координат курсора мыши.
Слайд 18

OnEnter − Событие в момент получения элементом фокуса в результате манипуляции

OnEnter − Событие в момент получения элементом фокуса в результате манипуляции

мышью, нажатия клавиши табуляции или программной передачи фокуса.
OnExit − Событие в момент потери элементом фокуса в результате манипуляции мышью, нажатия клавиши табуляции или программной передачи фокуса.
OnMouseWheel − Событие при вращении колесика мыши в любую сторону.
OnMouseWheelUp − Вращение колесика мыши вверх. Наступает, если вращение не обработано по событию OnMouseWheel.
OnMouseWheelDown − Вращение колесика мыши вниз. Наступает, если вращение не обработано по событию OnMouseWheel.
Слайд 19

События при работе с клавиатурой OnKeyDown − при нажатии любой клавиши.

События при работе с клавиатурой
OnKeyDown − при нажатии любой клавиши. Можно

распознать нажатые клавиши, включая функциональные, и кнопки мыши, но нельзя распознать символ нажатой клавиши.
OnKeyPress − при нажатии клавиши символа. Можно распознать только нажатую клавишу символа, различить символ в верхнем и нижнем регистре, различить символы кириллицы и латинские, но нельзя распознать функциональные клавиши и кнопки.
OnKeyUp − при отпускании пользователем любой клавиши. Можно распознать нажатые клавиши, включая функциональные, и кнопки мыши, но нельзя распознать символ отпускаемой клавиши.
При нажатие пользователем клавиши табуляции фокус может переключаться с элемента на элемент, что вызывает события OnEnter и OnExit.
Слайд 20

Создание проекта (программы) Button - обычная кнопка без рисунка, наиболее распространена

Создание проекта (программы)

Button - обычная кнопка без рисунка, наиболее распространена в приложениях

Для

создания проекта будут использоваться
следующие компоненты библиотеки VCL:

Компонент Button

Слайд 21

Основные свойства компонента Button

Основные свойства компонента Button

Слайд 22

Компонент Edit Edit – окно для ввода и вывода данных в

Компонент Edit

Edit – окно для ввода
и вывода данных
в одну строку

Основные

свойства компонента Edit
Слайд 23

Основные свойства компонента Edit

Основные свойства компонента Edit

Слайд 24

Компонент Label Label - метка. Используется, в основном, для подписи других

Компонент Label

Label - метка. Используется, в основном, для подписи других компонентов. Например,

для названия вводимой величины в Edit
Слайд 25

Основные свойства компонента Label

Основные свойства компонента Label

Слайд 26

Основные этапы работы над проектом A) “Набрасываем” на форму (Form) необходимые

Основные этапы работы над проектом

A) “Набрасываем” на форму (Form) необходимые компоненты,
в

нашем случае:
- 3 компонента Edit,
- 3 компонента Label,
- 10 компонентов Button
B) Размещаем компоненты на форме (Form) в соответствии
с задачами проекта (на этом этапе можно определить и события,
на которые должна реагировать программа –
в нашем случае событие OnClick
в инспекторе объектов, вкладка Events)
C) Переименовываем отображаемые названия объектов -
(свойство Caption в инспекторе объектов)

1. Работа над дизайном проекта

2. Написание кода программы

Слайд 27

Размещение компонентов на Form в окне Design

Размещение компонентов на Form в окне Design

Слайд 28

Вид окна проекта после переименования отображаемых названий объектов

Вид окна проекта после переименования
отображаемых названий объектов

Слайд 29

Текущее состояние листинга программы (Окно *.cpp) Шаблон функции в окне Редактора

Текущее состояние листинга программы (Окно *.cpp)

Шаблон функции в окне Редактора Кода,

куда необходимо внести код по обработке нажатия клавиши Button1
Слайд 30

Edit3->Text = FloatToStr(StrToFloat(Edit1->Text) + StrToFloat(Edit2->Text)); код программы вносим в соответствующие модули

Edit3->Text = FloatToStr(StrToFloat(Edit1->Text) + StrToFloat(Edit2->Text));

код программы вносим в соответствующие
модули программы

Сложение

Вычитание

Edit3->Text =

FloatToStr(StrToFloat(Edit1->Text) - StrToFloat(Edit2->Text));

Умножение

Edit3->Text = FloatToStr(StrToFloat(Edit1->Text) * StrToFloat(Edit2->Text));

Деление

Edit3->Text = FloatToStr(StrToFloat(Edit1->Text) / StrToFloat(Edit2->Text));

FloatToStr – вещественное число
преобразуется в строку символов

StrToFloat – строка символов
преобразуется в вещественное число

Слайд 31

Код программы Кнопка ОЧИСТИТЬ Edit1->Text = "0"; Edit2->Text = "0"; Кнопка

Код программы

Кнопка ОЧИСТИТЬ
Edit1->Text = "0";
Edit2->Text = "0";

Кнопка ЗАКРЫТЬ
Form1->Close();

COS
Edit3->Text = FloatToStr(cos(StrToFloat(Edit1->Text)));

SIN
Edit3->Text =

FloatToStr(sin(StrToFloat(Edit1->Text)));

Извлечение квадратного корня
Edit3->Text = FloatToStr(sqrt(StrToFloat(Edit1->Text)));

Квадрат числа
Edit3->Text = FloatToStr(StrToFloat(Edit1->Text) * StrToFloat(Edit1->Text));

Слайд 32

Результат после компиляции Результат после нажатия на кнопку + Edit3->Text =

Результат после компиляции

Результат после нажатия на кнопку +

Edit3->Text = FloatToStr(StrToFloat(Edit1->Text) +

StrToFloat(Edit2->Text));

Свойство Name !

Слайд 33

Канва - это двумерный массив пикселей Доступ к канве любого объекта

Канва - это двумерный массив пикселей

Доступ к канве любого объекта производится

следующим образом:

имя_обьекта->Canvas->Свойство/Метод

Канва – это
“компьютерный холст”
для рисования

Слайд 34

Рисование линий Создаем новый проект, затем размещаем на форме компонент Tbutton

Рисование линий

Создаем новый проект, затем размещаем на форме компонент Tbutton
из вкладки Standart и на

обработчик события OnClick пишем следующий код:

Form1->Canvas->LineTo(250,250);

Откомпилируем проект,
нажимаем на кнопку на форме – и из
верхнего левого угла в точку (250,250)
будет проведена прямая линия. 

Начальная точка прямой задается
текущим положением пера на канве.
По умолчанию, начальной точкой является
точка с координатами (0,0),
то есть левый верхний угол.  Но после того, как мы провели прямую,
положение пера изменилось
на координаты X и Y, указанные при
вызове метода LineTo.   

Текущее положение пера можно изменить и вручную, не проводя никаких
лишних линий. Для этого следует воспользоваться методом MoveTo (x, y),
где x - новое положение пера по горизонтали,
а y - новое положение пера по вертикали.

Слайд 35

Рисуем квадрат, использую метод LineTo Form1->Canvas->MoveTo(25,25); Form1->Canvas->LineTo(25,200); Form1->Canvas->LineTo(200,200); Form1->Canvas->LineTo(200,25); Form1->Canvas->LineTo(25,25); Перемещаем

Рисуем квадрат, использую метод LineTo

Form1->Canvas->MoveTo(25,25);
Form1->Canvas->LineTo(25,200);
Form1->Canvas->LineTo(200,200);
Form1->Canvas->LineTo(200,25);
Form1->Canvas->LineTo(25,25);

Перемещаем положение пера
в точку (25,25),
чтобы было

лучше видно
нарисованную нами фигуру

Опускаем вертикальную прямую
в точку на 200 пикселей вниз –
левая сторона прямоугольника

Проводим горизонтальную прямую
в точку (200,200)
- нижняя граница прямоугольника

Проводим прямую в точку (200,250) -
рисуем правую сторону прямоугольника  

И наконец, последний штрих –
проводим горизонтальную прямую
в начальную точку, из которой начинали
рисовать, тем самым замыкая нашу фигуру

Слайд 36

Прямоугольник Для рисования прямоугольников служит метод (функция) Rectangle: Rectangle (x1,y1,x2,y2); где

Прямоугольник

Для рисования прямоугольников служит метод (функция) Rectangle:
Rectangle (x1,y1,x2,y2);
где переменные x1,y1 отвечают за положение левого верхнего

угла
прямоугольника,
а переменные x2,y2 за положение нижнего правого угла

Form1->Canvas->Rectangle(25,25,200,200);

Form1->Canvas->Rectangle(25,50,400,200);

т.1

т.2

Слайд 37

Form1->Canvas->Ellipse(25,25,200,200); Form1->Canvas->Ellipse(25,50,400,200); Эллипс Для рисования эллипсов в канве предназначен метод Ellipse(x1,y1,x2,y2);

Form1->Canvas->Ellipse(25,25,200,200);

Form1->Canvas->Ellipse(25,50,400,200);

Эллипс

Для рисования эллипсов в канве предназначен метод
 Ellipse(x1,y1,x2,y2);
Этот метод имеет точно такие

же параметры, как и Rectangle,
за исключением того, что здесь указываются координаты
углов прямоугольника, описывающего эллипс.
Слайд 38

Изменение внешнего вида фигур За внешний вид рисуемых фигур отвечают два

Изменение внешнего вида фигур

За внешний вид рисуемых фигур отвечают два свойства

- это свойства
  Реn (карандаш) и Brush (кисть)
Чтобы задать желаемый внешний вид объектам, эти свойства нужно
настроить перед использованием функций рисования.
Нарисованные объекты внешний вид не изменят, если изменить одно
из этих свойств после.

Карандаш и кисть, являясь свойствами объекта Canvas,
в свою очередь представляют собой объекты Реn и Brush.

Свойства объекта Реn задают цвет, толщину и тип линии
или границы геометрической фигуры.
Свойства объекта Brush задают цвет и способ закраски
области внутри прямоугольника, круга, сектора или замкнутого контура.

Слайд 39

Слайд 40

Изменяем свойства Реn и Brush Form1->Canvas->Brush->Color=clSkyBlue; Form1->Canvas->Brush->Style=bsCross; Form1->Canvas->Pen->Color=clRed; Form1->Canvas->Pen->Width=4; Form1->Canvas->RoundRect(25,25,225,225,15,15); Реn

Изменяем свойства Реn и Brush

Form1->Canvas->Brush->Color=clSkyBlue;
Form1->Canvas->Brush->Style=bsCross;
Form1->Canvas->Pen->Color=clRed;
Form1->Canvas->Pen->Width=4;
Form1->Canvas->RoundRect(25,25,225,225,15,15);

Реn
Толщина линии – 4
Цвет

– красный (Red)

Устанавливаем параметры:

Brush
Штриховка – в клетку
Цвет – небесно-голубой (SkyBlue)

Слайд 41

Дуга Параметры x1, y1, x2, у2 определяют эллипс (круг), из которого

Дуга

Параметры x1, y1, x2, у2 определяют эллипс (круг), из которого вырезается

дуга

Form1->Canvas->Pen->Color=clRed;
Form1->Canvas->Pen->Width=4;
Form1->Canvas->Arc(20,20,300,200, 300,100, 150,200);

Для рисования дуг используется метод Arc:
Arc (x1,y1, x2,y2, x3,y3, x4,y4);

Дуга вычерчивается
против часовой стрелки
от точки (х3, у3) к точке (х4, у4)

Параметры х3, у3, х4, и у4 –
определяют координаты концов дуги

Вид линии (границы)
определяет свойство Реn

т.3

т.4

Слайд 42

Метод Chord Метод Chord (X1, Y1, X2, Y2, X3, Y3, X4,

Метод Chord

Метод Chord  (X1, Y1, X2, Y2, X3, Y3, X4, Y4)

рисует фигуру в виде
дуги эллипса или окружности, с помощью текущих параметров Реп,
замкнутую хордой.

Form1->Canvas->Brush->Color=clBlue;
Form1->Canvas->Brush->Style=bsCross;
Form1->Canvas->Pen->Color=clRed;
Form1->Canvas->Pen->Width=4;
Form1->Canvas->Chord(20,20,300,200, 200,100,30,150);

Параметры x1, y1, x2, у2 определяют эллипс, из которого вырезается дуга

Параметры х3, у3, х4, и у4 –
определяют координаты концов дуги

Дуга вычерчивается
против часовой стрелки
от точки (х3, у3) к точке (х4, у4)

Хорда соединяет концы дуги

Слайд 43

Сектор (Pie) Метод pie (X1, Y1, X2, Y2, X3, Y3, X4,

Сектор (Pie)

Метод pie (X1, Y1, X2, Y2, X3, Y3, X4, Y4) вычерчивает

сектор
эллипса или круга

Form1->Canvas->Brush->Color=clBlue;
Form1->Canvas->Brush->Style=bsCross;
Form1->Canvas->Pen->Color=clRed;
Form1->Canvas->Pen->Width=4;
Form1->Canvas->Pie(20,20,300,200, 200,100, 250,150);

Параметры x1,y1, x2,у2 определяют эллипс (круг), из которого
вырезается сектор

Параметры х3, у3, х4, и у4 –
определяют координаты концов
дуги сектора

Дуга сектора вычерчивается
против часовой стрелки
от точки (х3, у3) к точке (х4, у4)

Слайд 44

Font- определяет шрифт выводимого на канву текста. Класс TFont включает в

Font- определяет шрифт выводимого на канву текста. Класс TFont включает в

себя следующие свойства: ● Name - название шрифта (Arial, MS Sans Serif, Calibri и т.д.) ● Size - размер шрифта (кегль), который задается в пунктах ( 1⁄72 дюйма= 25,4⁄72 мм. = 0,3528 мм.) ● Height - тоже размер шрифта, но в отличии от Size задается уже в пикселях ● Color - цвет шрифта ● Style - стиль шрифта. Это свойство принимает следующие значения: fsBold - полужирный fsItalic - курсив fsUnderline - подчеркнутый fsStrikeout - перечеркнутый 

Шрифт (Font)

Слайд 45

Основные цвета

Основные цвета

Слайд 46

Вывод текста Form1->Canvas->Font->Color=clPurple; Form1->Canvas->Font->Height=25; Form1->Canvas->TextOut(85,250,"Квадрат"); Form1->Canvas->Brush->Color=clBlue; Form1->Canvas->Brush->Style=bsCross; Form1->Canvas->Pen->Color=clRed; Form1->Canvas->Pen->Width=4; Form1->Canvas->RoundRect(25,25,225,225,15,15); TextOut

Вывод текста

Form1->Canvas->Font->Color=clPurple;
Form1->Canvas->Font->Height=25;
Form1->Canvas->TextOut(85,250,"Квадрат");
Form1->Canvas->Brush->Color=clBlue;
Form1->Canvas->Brush->Style=bsCross;
Form1->Canvas->Pen->Color=clRed;
Form1->Canvas->Pen->Width=4;
Form1->Canvas->RoundRect(25,25,225,225,15,15);

TextOut
Цвет текста – пурпурный (Purple)
Размер текста – 25 пиксел

Доступ к

единичному пикселу
Form1->Canvas->Pixels[10][10] = clRed;
Окрашивает точку поверхности формы
в красный цвет
Слайд 47

Form1->Canvas->Pen->Color=clNavy; // устанавливаем темно-синий цвет пера Form1->Canvas->Pen->Width=2; // устанавливаем толщину пера

Form1->Canvas->Pen->Color=clNavy; // устанавливаем темно-синий цвет пера
Form1->Canvas->Pen->Width=2; // устанавливаем толщину пера 2

пиксела
Form1->Canvas->Brush->Color=clLime; // устанавливаем лимонно-зеленый цвет кисти
Form1->Canvas->Brush->Style=bsDiagCross; // устанавливаем Стиль штриховки Диагональная клетка
Form1->Canvas->Font->Color=(TColor)RGB(255,0,0); // устанавливаем Цвет Шрифта красный
Form1->Canvas->Font->Style << fsBold; // устанавливаем Стиль Шрифта полужирный

Form1->Canvas->Arc(10,10,90,90, 90,50,10,50); // Дуга
Form1->Canvas->TextOut (40,60,"Arc");
Form1->Canvas->Chord(110,10,190,90,190,50,110, 50); // Хорда
Form1->Canvas->TextOut(135,60,"Chord");
Form1->Canvas->Ellipse(210,10,290,50); // Эллипс
Form1->Canvas->TextOut (230, 60, "Ellipse");
Form1->Canvas->Pie (310, 10, 390, 90,390,30, 310,30); // Сектор
Form1->Canvas->TextOut (340,60,"Pie");

Демонстрационная программа

Слайд 48

TPoint points[5]; // Инициализация массива координат точек для построения многоугольника с

TPoint points[5]; // Инициализация массива координат точек для построения многоугольника с

использованием структуры TPoint
points [0] = Point (30,150); points [1] = Point (40, 130);
points [2] = Point (50, 140); points [3] = Point (60,130);
points [4] = Point (70,150);
Form1->Canvas->Polygon (points, 4); // Многоугольник
Form1->Canvas->TextOut (30, 170, "Polygon");
points[0].x += 100; points[1].x += 100; // Увеличение значения points[2].x += 100; points[3].x += 100; // координаты X на 100
points[4].x += 100;
Form1->Canvas->Polyline (points, 4); // Ломаная линия
Form1->Canvas->TextOut (130,170,"Polyline");
Form1->Canvas->Rectangle (230, 120, 280, 160);
Form1->Canvas->TextOut (230,170, "Rectangle"); // Прямоугольник
Form1->Canvas->RoundRect (330,120,380,160,20,20);
Form1->Canvas->TextOut (325,170,"RoundRect"); // Прямоугольник с закругленными углами

Продолжение демонстрационной программы

Слайд 49

Результат выполнения демонстрационной программы

Результат выполнения демонстрационной
программы

Слайд 50

Создание графических примитивов средствами C++ Builder Компонент Shape (фигура) рисует простые

Создание графических примитивов
средствами C++ Builder

Компонент Shape (фигура) рисует простые геометрические фигуры

– окружность и эллипс, квадрат и прямоугольник (можно с закругленными углами)

В Палитре компонентов выбираем
страницу Additional и на ней
компонент Shape