Similar presentations:
delfi
1.
Объектно –ориентированное
программирование на
DELPHI - 1
2.
DELPHI - 1На этом уроке:
Знакомство с системой
программирования Borland Delphi.
Объекты (компоненты) и их свойства
Вопросы:
1. Введение
2. Рабочее окно программы
3. Компоненты Delphi
4. Объекты и их свойства
3.
1. ВведениеОбъектно – ориентированное программирование на DELPHI - 1
4.
ВведениеDelphi – современная и мощная объектно – ориентированная система
быстрой разработки приложений, позволяющая создавать как самые
простые (учебные, игровые приложения), так и сложные программы баз
данных и управления предприятием
Программирование на Delphi – увлекательный процесс, который можно
сравнить с со сборкой мозаики, детских кубиков, конструктора, где роль
этих кубиков будут играть объекты (кнопки, надписи, Edit – ы и прочие
компоненты)
Как в конструкторе, мы размещаем эти элементы на нашей форме,
причем каждый элемент (объект) обладает своими свойствами, которыми
мы можем управлять
Кроме того объекты имеют свои методы – они способны реагировать на
определенные события (нажатие кнопки, клавиши … ), при этом будет
исполняться то, что мы записали в коде обработки этого события
На этом уроке мы познакомимся с рабочим окном Delphi - 7 и, некоторыми его часто
используемыми компонентами (объектами) и их свойствами
5.
2. Рабочее окноDelphi
Объектно – ориентированное программирование на DELPHI - 1
6.
Рабочее окно DelphiСистема
раскрывающихся меню и
панели компонентов
Это окно, в котором мы
будем писать код
программы
Инспектор объектов
(здесь мы будем
изменять свойства и
поведение объектов)
Это наша форма, на
которой мы будем
размещать объекты
7.
Рабочее окно DelphiНачнем с меню и панели компонентов:
Система раскрывающихся
меню,
содержащая функции для работы с
файлами, проектом, настройки
программы и т.д.
( как в MS OFFICE)
8.
Рабочее окно DelphiНачнем с меню и панели компонентов:
Стандартная панель инструментов,
позволяющая производить часто используемые
действия с файлами, проектами, формами
9.
Рабочее окно DelphiНачнем с меню и панели компонентов:
Панель компонентов нашего
приложения, содержащая
вкладки сгруппированных
объектов
Вкладка стандартных и
наиболее часто
используемых
элементов
Вкладка
Вкладка диалоги,
дополнительных
которую мы тоже будем
элементов, которая
сейчас открыта, ниже мы использовать
видим элементы, которые
содержит эта вкладка
В ходе работы мы будем использовать компоненты и с других панелей
10.
3. КомпонентыDelphi
Объектно – ориентированное программирование на DELPHI - 1
11.
Компоненты DelphiРассмотрим подробнее компоненты на вкладках панели
(естественно для начала только основные и часто применяемые)
1. Вкладка СТАНДАРТНЫЕ
Frame - рамка. Наравне с
формой служит контейнером
для размещения других
компонентов. В отличие от
формы может размещаться в
палитре компонентов, создавая
заготовки компонентов
MainMenu - главное меню
программы. Компонент способен
создавать и обслуживать
сложные иерархические меню,
как например, в MS Word и
других офисных программах,
ставший стандартом
оформления программ
12.
Компоненты DelphiРассмотрим подробнее компоненты на вкладках панели
(естественно для начала только основные и часто применяемые)
1. Вкладка СТАНДАРТНЫЕ
PopupMenu -
вспомогательное или
локальное меню. Обычно это
меню появляется в
отдельном окне после
нажатия правой кнопки
мыши.
Label - метка. Этот
компонент используется для
размещения в окне
надписей.
13.
Компоненты DelphiРассмотрим подробнее компоненты на вкладках панели
(естественно для начала только основные и часто применяемые)
1. Вкладка СТАНДАРТНЫЕ
Edit - строка ввода.
Предназначена для ввода,
отображения или
редактирования одной
текстовой строки.
Memo - многострочный
текстовый редактор.
Используется для ввода
и/или отображения
многострочного текста.
14.
Компоненты DelphiРассмотрим подробнее компоненты на вкладках панели
(естественно для начала только основные и часто применяемые)
1. Вкладка СТАНДАРТНЫЕ
Button - командная
кнопка. Обработчик
события OnClick этого
компонента обычно
используется для
реализации некоторой
команды.
CheckBox - независимый
переключатель. Щелчок
мышью на этом компоненте
в работающей программе
изменяет его логическое
свойство Checked.
15.
Компоненты DelphiРассмотрим подробнее компоненты на вкладках панели
(естественно для начала только основные и часто применяемые)
1. Вкладка СТАНДАРТНЫЕ
RadioButton - зависимый
переключатель. Обычно
объединяется как минимум
еще с одним таким же
компонентом в группу.
Щелчок по переключателю
приводит к автоматическому
освобождению ранее
выбранного переключателя
в той же группе
ListBox - список выбора.
Содержит список
предлагаемых вариантов
(опций) и дает возможность
проконтролировать текущий
выбор. .
16.
Компоненты DelphiРассмотрим подробнее компоненты на вкладках панели
(естественно для начала только основные и часто применяемые)
1. Вкладка СТАНДАРТНЫЕ
ComboBox -
комбинированный список
выбора. Представляет собой
комбинацию списка выбора
и текстового редактора
ScrollBar - полоса
управления. Представляет
собой вертикальную или
горизонтальную полосу,
напоминающую полосы
прокрутки по бокам
Windows-окна.
17.
Компоненты DelphiРассмотрим подробнее компоненты на вкладках панели
(естественно для начала только основные и часто применяемые)
1. Вкладка СТАНДАРТНЫЕ
GroupBox - группа
элементов. Этот
компонент используется
для группировки
нескольких связанных
по смыслу компонентов.
RadioGroup - группа
зависимых переключателей.
Содержит специальные
свойства для обслуживания
нескольких связанных
зависимых переключателей.
18.
Компоненты DelphiРассмотрим подробнее компоненты на вкладках панели
(естественно для начала только основные и часто применяемые)
1. Вкладка СТАНДАРТНЫЕ
Panel - панель. Этот
компонент, как и GroupBox,
служит для объединения
нескольких компонентов.
Содержит внутреннюю и
внешнюю кромки, что
позволяет создать
эффекты “вдавленности” и
“выпуклости”.
Actiontist - список действий.
Служит для централизованной
реакции программы на действия
пользователя, связанные с
выбором одного из группы
однотипных управляющих
элементов таких как опции меню,
пиктографические кнопки и т. п
19.
Компоненты Delphi1. Вкладка ДОПОЛНИТЕЛЬНО
(Рассмотрим только некоторые, нужные нам компоненты)
DrawGrid -
BitBtn -
командная кнопка
с надписью и
пиктограммой.
StringGrid - таблица строк.
Этот компонент обладает
мощными возможностями для
представления текстовой
информации в табличном виде.
произвольная
таблица. В отличие
от StringGrid ячейки
этого компонента
могут содержать
произвольную
информацию, в том
числе и рисунки.
20.
Компоненты Delphi1. Вкладка ДОПОЛНИТЕЛЬНО
(Рассмотрим только некоторые, нужные нам компоненты)
ColorBox -
Image -
рисунок. Этот
компонент
предназначен
для отображения
рисунков
специальный
вариант ComboBox
для выбора одного
из системных
цветов
Chart - диаграмма. Этот
компонент облегчает
создание специальных
панелей для графического
представления данных.
21.
Компоненты DelphiКроме того, нам понадобятся некоторые компоненты с вкладок
Win32, Диалоги, Система, Доступ к данным
Ввиду множества компонент ограничим на этом их рассмотрение, при
дальнейшей работе с Delphi Вам обязательно понадобятся справочники и
электронные учебники по Delphi, которые приложены к данному курсу
22.
4. Объекты и ихсвойства
Объектно – ориентированное программирование на DELPHI - 1
23.
Объекты и их свойстваНачнем с главного объекта любого приложения - формы
Давайте запустим Delphi и рассмотрим свойства
формы в инспекторе объектов
Инспектор объектов содержит две вкладки:
• Параметры (здесь мы изменяем свойства
объекта)
• События (здесь мы определяем, при
наступлении какого события будет исполняться
наш код)
Свойств и событий для объектов, в
частности для формы, очень много. В
рамках нашего курса мы рассмотрим
лишь простые и широко используемые
24.
Объекты и их свойства1. Свойство Align (выравнивание формы на экране)
Align – свойство,
определяющее положение
формы на экране. Например,
если мы выберем это свойство
равное значению alClient, то
форма займет весь экран
Попробуйте задать свойству Align
разные значения и посмотреть , как
изменится вид и положение формы на
экране. Для этого нажмите кнопку
«Выполнить» на панели инструментов
(или клавишу F9)
При рассмотрении следующих
свойств также пробуйте менять
значения, запускать проект (F9),
чтобы увидеть, как отражается
изменение свойства на форме
(или другом объекте)
25.
Объекты и их свойства2. Свойство AlfaBlend (прозрачность объекта)
AlfaBlend – включает и выключает прозрачность формы
AlfaBlendValue – позволяет установить степень
прозрачности
Задайте свойству AlfaBlend значение True, а
свойству AlfaBlendValue – значение 100, запустите
(F9), и форма становится прозрачной
3. Свойство AutoScroll (автоматическое
появление полосы прокрутки)
При включении (true) на форме автоматически будет
появляться полоса прокрутки, если размеры объектов будут
превосходить размеры формы
4. Свойство AutoSize(автоматическая
установка размера формы)
При включении (true) размеры формы автоматически
подгоняются под размеры объектов на ней
26.
Объекты и их свойства5. Свойство BorderIcons (вид иконок в заголовке формы)
Установка этих свойств позволяет нам включать или
выключать кнопки для работы с окном на нашей форме
Например если свойству biMinimize дать значение False,
то в нашем окне не будет кнопки минимизации окна
(она будет недоступна)
6. Свойство BorderStyle определяет вид
границы нашего окна
Например значение bsSingle делает границу тонкой, а
значение bsNone делает форму вообще без границы (это
часто используется при создании заставок к
программам)
27.
Объекты и их свойства7. Свойство Сaption (определяет заголовок окна программы)
Если вписать здесь слово
Калькулятор, то оно автоматически
вписывается в заголовок окна
8. Свойство Color определяет цвет
нашей формы
В правой части
присутствует набор
цветов, которые можно
раскрыть и выбрать
нужный.
Если Вас не устраивает
этот набор, сделайте
двойной щелчок мышкой
по правой части
свойства и выберите
сами нужный цвет
28.
Объекты и их свойства9. Свойство Enabled (доступность объекта)
При свойстве false объект будет недоступен
(неактивен)
10. Свойство Font (установки шрифта)
Здесь можно изменять размер, цвет и написание
текста на объектах
11. Свойство FormStyle (стиль формы)
Определяет стиль формы. Например, если этому
свойству придать значение fsStayOnTop, то размеры
формы нельзя изменить, уцепляясь за ее границы
12. Свойство Icon (иконка окна программы)
Определяет иконку в окне
программы, которую вы можете
выбрать из имеющихся или
нарисовать сами
29.
Объекты и их свойства13. Свойство VertScrollBar (определяет
наличие и вид вертикальной полосы
прокрутки
14. Свойство Visible (определяет видимость
объекта)
Если значение свойства равно true, то объект виден,
а если false – то объект не виден
15. Свойство WindowState (определяет статус окна программы при
ее запуске)
Окно программы в зависимости от значения этого свойства может запускаться в
развернутом на весь экран (максимизированном), свернутом (минимизированном)
или обычном виде
Итак, мы рассмотрели некоторые свойства объектов (в частности формы) и
попробовали их в действии. Аналогично у каждого объекта (кнопки, Edit,
Memo, Timer …) есть свои свойства, которые имеют много общего и
некоторые отличия
30.
Объекты и их свойстваА сейчас рассмотрим, на какие события могут реагировать объекты формы
Для этого давайте поместим на нашу форму
КНОПКУ. Как это сделать?
Ищем на панели Delphi вкладку СТАНДАРТНЫЕ, на
ней элемент КНОПКА (Button), щелкаем по ней, а
затем щелкаем по форме – появляется кнопка
Изменим свойство Caption кнопки на ВЫХОД
Сейчас перейдем на вкладку
СОБЫТИЯ инспектора объектов
Основное событие для многих объектов, и
особенно для кнопки – это щелчок
мышкой по нему OnClick
Сделайте двойной щелчок по белой области
этого свойства, и вы увидите окно с кодом
программы:
close
Вставьте между словами begin и end оператор close,
после этого запустите программу (F9) и нажмите кнопку кнопка работает, т.е. при возникновения события щелчка
по кнопке выполняется код закрытия окна (close)
31.
Компоненты DelphiКроме наиболее применимого события нажатия на
кнопку существует и много других, например событие
наведения курсора мыши на объект OnMouseMove
С этими событиями и их обработкой мы
познакомимся в процессе работы с нашим
курсом
32.
ИТОГИ УРОКА:На этом уроке мы познакомились с системой
программирования Borland Delphi, Объектами (компонентами) и
их свойствами
НА СЛЕДУЮЩЕМ УРОКЕ:
ООП на Delphi – 2:
Первая программа на Delphi, сохранение и компиляция
Вы научитесь сохранять и компилировать проект,
создадите первую программу, научитесь читать исходный
код модуля
33.
Объектно –ориентированное
программирование на
DELPHI - 2
34.
DELPHI - 2На этом уроке:
Мы научимся создавать программу,
сохранять и компилировать ее, а также
читать исходный код
Вопросы:
1. Создание программы, сохранение
и компиляция
2. Разбираемся с исходным кодом
35.
1. Создание программы,сохранение и компиляция
Объектно – ориентированное программирование на DELPHI - 2
36.
Сохранение и компиляция программНа первом уроке мы познакомились с интерфейсом Delphi, компонентами и их
свойствами.
Сейчас давайте научимся создавать, правильно сохранять и компилировать
программу
1. Запустим Delphi (Пуск – Все программы – Borland Delphi – Delphi 7).
Автоматически при запуске Delphi создается новый проект – Project 1
2. Разберем сразу на примере:
Пусть надо создать программу,
которая по нажатию кнопки
случайным образом изменяла бы
цвет нашей формы.
Для этого поместим на форму 2 кнопки:
первую назовем «ЦВЕТ» а вторую
«ВЫХОД», зададим нужные размеры
формы, уцепившись за ее границы и
перетащив их в нужное положение,
заголовок формы назовем «ЦВЕТ»
(свойство Caption)
У нас получится примерно так:
37.
Сохранение и компиляция программ3. Сейчас нам нужно, чтобы при нажатии кнопки «ЦВЕТ»(событии) цвет
формы менялся произвольным образом. Из Паскаля мы знаем, что для
генерации случайных чисел служит функция random, а для задания
цвета экрана (и формы) применяется модель RGB
4. Чтобы перейти к окну редактирования кода и написать процедуру
реакции кнопки «ЦВЕТ» сделаем по ней двойной щелчок и мы
оказываемся в редакторе кода
Что мы там видим?
Form1.Color:=RGB(100+random(155), 100+random(155), 100+random(155))
5. Мы видим, что Delphi автоматически создала процедуру обработки события
нажатия на кнопку (Button1.Click)
Между begin и end нам надо вставить код генерации цвета формы:
Form1.Color:=RGB(100+random(155), 100+random(155), 100+random(155))
(Свойству формы – Сolor(цвет) присваивается произвольное значение, причем
каждому цвету (красному, зеленому и синему) – это нам известно из Паскаля)
38.
Сохранение и компиляция программПричем Delphi помогает нам при вводе кода:
Как только мы напечатали Form1. и поставили точку, выходит окно с
набором свойств формы, где мы можем выбрать нужное свойство
Caption и нажать Enter
6. Сейчас напишем код для
обработки нажатия
мышкой по второй
кнопке «ВЫХОД». Для
этого делаем двойной
щелчок по кнопке
«ВЫХОД» и мы опять в
редакторе кода, где
вводим команду close
(закрытие приложения)
39.
Сохранение и компиляция программИтак, мы создали процедуры обработки событий нажатия на каждую
кнопку, попробуем запустить программу, нажав F9
Сейчас при нажатии несколько раз кнопки «ЦВЕТ»
форма красится произвольными цветами, а при
нажатии кнопки «ВЫХОД» форма закрывается.
7. После того, как мы
проверили работу
программы, надо ее
сохранить. Для этого
заходим в меню
Delphi: Файл –
Сохранить Все
40.
Сохранение и компиляция программ8. Выходит окно сохранения
файла, по умолчанию
Delphi сохраняет проект в
своем каталоге, но для
удобства создадим
,например, на диске С
каталог Delphi, откроем его
и сохраним наш проект там
9. При сохранении файлов
проекта оказалось, что
подтверждать сохранение
приходится 2 раза, а
сохраненных файлов
оказалось 6 штук
41.
Сохранение и компиляция программКакие файлы у нас сохранились?
Главный файл нашего
проекта
Файл нашей
формы с
описанием ее
свойств
Файл модуля с
расширением *.pas –
здесь исходный код
нашей программы
Дополнительные
файлы ресурсов,
которые Delphi
создает
автоматически
42.
Сохранение и компиляция программ10. Осталось откомпилировать наш проект, т.е. создать программу, которая будет
работать на любом компьютере без Delphi (т.е. EXE – файл или исполнимый файл)
Для этого откроем в Delphi наш проект (Project 1) и в
меню Проект выберем «компилировать Project 1
В результате в нашей папке С:\Delphi появляется
EXE – файл - это и есть готовая программа,
которая выполняется на любом компьютере
Готовое приложение (EXE –
файл)
43.
2. Разбираемся сисходным кодом
Объектно – ориентированное программирование на DELPHI - 2
44.
Разбираемся с исходным кодомА сейчас давайте
разберемся с исходным
кодом программы,
который в большей части
создала Delphi – мы
добавили совсем немного
кода для кнопок
Откроем Delphi, а в ней
наш проект: Файл –
открыть …
Для перехода в окно
редактора кода нажмем
F12
В результате мы видим, что
исходный код
программы достаточно
большой, и наш вклад –
только две строчки
45.
Разбираемся с исходным кодомИтак, по порядку:
Это заголовок
модуля проекта –
Unit 1
Интерфейсная часть
(объявление всех
объектов модуля –
типов, переменных …)
46.
Разбираемся с исходным кодомИтак, по порядку:
Это автоматически
подключаемые
Delphi модули
Здесь мы видим
объявление объектов,
которые используются в
нашем проекте: Это
наша форма (TForm1),
Кнопки «ЦВЕТ» и
«ВЫХОД» соответственно Button1
и Button2, а также
процедуры обработки
событий нажатия на эти
кнопки: Button1.Click и
Button2.Click
47.
Разбираемся с исходным кодомИтак, по порядку:
Это закрытый раздел
класса
Сюда могут помещаться
объявления переменных,
функций и процедур,
включаемых в класс формы,
но не доступных для других
модулей
Открытый раздел
класса
Сюда могут помещаться
объявления
переменных, функций и
процедур, включаемых
в класс формы и
доступных для других
модулей
Сюда могут помещаться объявления
типов, констант, переменных,
функций и процедур, к которым будет
доступ из других модулей, но которые
не включаются в класс формы
48.
Разбираемся с исходным кодомИтак, по порядку:
Исполняемая часть
модуля, содержащая
основной код и
отражающая логику и
алгоритм работы
программы
Процедура обработки
первой кнопки
(«ЦВЕТ»)
Процедура обработки
второй кнопки
(«ВЫХОД»)
49.
Разбираемся с исходным кодомИтак, мы поняли какой код содержит модуль проекта (файл с расширением *.pas)
Сейчас давайте посмотрим еще один файл – файл формы
Откроем его с
помощью Delphi и
внимательно
посмотрим код
50.
Разбираемся с исходным кодомВ коде мы видим описание формы и
объектов, находящихся на ней
Описание формы и ее
свойств
Описание свойств
первой кнопки
Описание свойств
второй кнопки
51.
Объектно –ориентированное
программирование на
DELPHI - 3
52.
DELPHI - 3На этом уроке:
Мы научимся программно изменять
основные свойства объектов и
создавать процедуры обработки
событий на основе разбора
практических примеров
Вопросы:
1. Изменение свойств объектов и
(программа «Ты уважаешь
информатику?»)
2. Создание процедуры обработки
событий
53.
1. Изменение свойствобъектов
Объектно – ориентированное программирование на DELPHI - 3
54.
Изменение свойств объектовНа этом уроке мы научимся , как в процессе работы программы изменять свойства
объектов, а также создадим некоторые обработчики событий
Для начала давайте посмотрим программу, которую мы сейчас создадим.
Называется она «Ты уважаешь информатику?»
Давайте разберем, как и
какие свойства объектов
мы изменяли в этой
программе
Форма программы содержит 4
компоненты Label (метка) и 3
кнопки «ДА», «НЕТ» и
«ВЫХОД», причем в начале
программы видна только одна
надпись, а при наведении
курсора на кнопку нет она
должна перепрыгивать в
другое место
55.
Изменение свойств объектовИтак, начнем создание и разбор программы по шагам
ШАГ 1
Запускаем Delphi и с помощью инспектора объектов изменяем
заголовок формы и выбираем ее цвет
56.
Изменение свойств объектовИтак, начнем создание и разбор программы по шагам
ШАГ 2
Помещаем на форму с вкладки Стандартные 4 компонента
Label и 3 кнопки (Button)
Label1
Label2
Button2
Label3
Label4
Button3
Button1
57.
Изменение свойств объектовШАГ 3
У компонента Label1 через инспектор объектов меняем
свойство Caption (надпись) – «Ты уважаешь информатику ?»
Label1
58.
Изменение свойств объектовШАГ 3
У компонента Label1 через инспектор объектов меняем
свойство Caption (надпись) – «Ты уважаешь информатику ?»
Раскрываем свойство Font объекта Label1 и подбираем нужный
размер и цвет шрифта
Label1
59.
Изменение свойств объектовШАГ 4
Аналогичные операции проделываем с надписями Label2,
Label3, Label4. Для того, чтобы изменять свойства например
Label2, щелкните по нему кнопкой и в инспекторе объектов
открываются его свойства
Label2
Label3
Label4
60.
Изменение свойств объектовШАГ 5
Сейчас установим нужные значения свойства Visible (видимость) у
надписей. В момент запуска программы должна быть видна только
надпись Label1(ее свойство Visible должно иметь значение True
(истинно)), а остальные надписи не видны (у них свойство Visible
должно иметь значение False (ложно))
Label1
Label2
Label3
Label4
61.
Изменение свойств объектовШАГ 5
Сейчас установим нужные значения свойства Visible (видимость) у
надписей. В момент запуска программы должна быть видна только
надпись Label1(ее свойство Visible должно иметь значение True
(истинно)), а остальные надписи не видны (у них свойство Visible
должно иметь значение False (ложно))
Label1
Label2
Label3
Label4
62.
Изменение свойств объектовШАГ 6
А сейчас давайте установим свойства кнопок. Изменим надписи
на кнопках следующим образом:
На кнопке 1 (Button1) – надпись «ДА», на кнопке 2 – надпись «НЕТ» и
на кнопке 3 – надпись «ВЫХОД», затем разместим кнопки как на
рисунке
Делаем это опять через инспектор объектов
Аналогично сделаем надписи на кнопках 2 и 3
63.
Изменение свойств объектовШАГ 7
В момент запуска программы должны быть видны кнопки «ДА» и
«НЕТ», а кнопка «ВЫХОД» не видна, поэтому установим свойство Visible
для кнопок таким:
Для кнопок 1 и 2 свойство Visible устанавливаем в True, а
для кнопки 3 («ВЫХОД») - в False
64.
Изменение свойств объектовШАГ 8
Вы наверное заметили в правом верхнем углу формы значок
(необязательный)
Это так называемый манифест
XP - элемент, украшающий наше
приложение (автоматически
кнопочки и другие элементы
становятся в стиле Windows XP более привлекательные
Находится он на вкладке Win32 панели компонентов
Щелкните по нему левой, а затем щелкните в любом месте формы.
Этот элемент является невизуальным, т.е. он существует и что-то делает, но при
работе программы на форме он невиден, поэтому помещать его можно на форме
где угодно.
В Delphi много невидимых компонент (например Таймер), они не видны, но делают
свое дело – дальше мы их рассмотрим
65.
1. Создание процедурыобработки событий
Объектно – ориентированное программирование на DELPHI - 3
66.
Изменение свойств объектовШАГ 9
Итак, мы создали форму, разместили на ней компоненты и
установили им нужные свойства, настало время писать код
обработки событий
Сначала для кнопки «НЕТ» (Button1). Эта кнопка должна
«убегать» при попытке наведения на нее курсора с целью
нажатия, причем убегать случайным образом
Вот здесь мы и используем событие, которое возникает при наведении
курсора на компонент – OnMouseMove – при этом координаты (положение
кнопки «НЕТ») должно изменяться случайно (но за пределы формы она не
должна выскакивать)
И еще – сделаем ученику предупреждение, первый раз после 3-х попыток
наведения на кнопку «НЕТ», и последнее предупреждение после 6 попыток
Щелкнем один раз по кнопке «НЕТ», а затем в
инспекторе объектов выберем вкладку СОБЫТИЯ.
Далее находим событие OnMouseMove и в правой
части делаем двойной щелчок – и мы оказываемся в
редакторе исходного кода программы
67.
Изменение свойств объектовШАГ 10
Delphi автоматически создала процедуру обработки события –
наведения курсора на кнопку «НЕТ»
В этой процедуре между begin и end мы вставим код
Положение кнопки2 от
левого края формы будет
изменяться случайно от
200 до 450 (вспомните
Паскаль)
Положение кнопки2 от
верхнего края формы
будет изменяться
случайно от 50 до 300
Таким образом при наведении курсора координата кнопки по горизонтали и
вертикали случайно изменится – кнопка перепрыгнет на другое место
68.
Изменение свойств объектовШАГ 10
Сейчас запрограммируем предупреждения. Для этого нам
понадобится счетчик – переменная, значение которой при
каждой попытке наведения курсора на кнопку увеличивалось бы
на единицу, и когда ее значение превысит 3 – выходит первое
предупреждение, а когда 6 - второе
Назовем переменную - k. И ее необходимо объявить – описать в интерфейсной части
кода модуля:
И еще – каждый раз при открытии формы (запуске программы) значение
счетчика (k) должно устанавливаться на ноль. Сделаем это так: делаем двойной
щелчок по нашей форме, при этом открывается редактор кода и в нем
автоматически созданная процедура создания формы OnCreate – впишем туда
присваивание k:=0;
69.
Изменение свойств объектовШАГ 10
А дальше в процедуру Mouse Move для кнопки «НЕТ» дописываем
код проверки условия (как в Паскале)
При каждом наведении
курсора на кнопку
прибавляем счетчику
единицу
70.
Изменение свойств объектовШАГ 10
А дальше в процедуру Mouse Move для кнопки «НЕТ» дописываем
код проверки условия (как в Паскале)
Проверяем условие, и если значение
счетчика оказывается больше трех, то
делаем надпись «СМОТРИ У МЕНЯ»
видимой (значение Visible делаем
равным True) – появляется первое
предупреждение ученику, который не
любит информатику
71.
Изменение свойств объектовШАГ 10
А дальше в процедуру Mouse Move для кнопки «НЕТ» дописываем
код проверки условия (как в Паскале)
Проверяем условие, и если значение
счетчика оказывается больше шести,
то делаем надпись «ДВОЙКУ
ПОСТАВЛЮ» тоже видимой (значение
Visible делаем равным True) –
появляется и второе предупреждение
ученику, который не любит
информатику
Как бы ни пытался ученик очень быстро нажать на кнопку «НЕТ», она все равно
ускачет от него, даже если бы он и успел нажать вперед компьютера, то все равно
ничего бы не произошло, т.к. процедуру обработки нажатия на кнопку OnClick мы
не создали – нажимай сколько угодно
72.
Изменение свойств объектовШАГ 11
Сейчас создадим процедуру обработки кнопки «ДА» (Button1).
Для этого делаем двойной щелчок по кнопке и мы опять в
редакторе кода:
По нажатию на эту кнопку должна появиться надпись «Спасибо, я так и
думал», остальные надписи стать невидимы, кнопки «ДА» и «НЕТ» должны
исчезнуть, а кнопка «ВЫХОД» - появиться
Делаем видимой надпись
«Спасибо, я так и думал»
(Label2)
73.
Изменение свойств объектовШАГ 11
Сейчас создадим процедуру обработки кнопки «ДА» (Button1).
Для этого делаем двойной щелчок по кнопке и мы опять в
редакторе кода:
По нажатию на эту кнопку должна появиться надпись «Спасибо, я так и
думал», остальные надписи стать невидимы, кнопки «ДА» и «НЕТ» должны
исчезнуть, а кнопка «ВЫХОД» - появиться
Делаем невидимыми
кнопки «ДА» и «НЕТ»
74.
Изменение свойств объектовШАГ 11
Сейчас создадим процедуру обработки кнопки «ДА» (Button1).
Для этого делаем двойной щелчок по кнопке и мы опять в
редакторе кода:
По нажатию на эту кнопку должна появиться надпись «Спасибо, я так и
думал», остальные надписи стать невидимы, кнопки «ДА» и «НЕТ» должны
исчезнуть, а кнопка «ВЫХОД» - появиться
Делаем видимой кнопку
«ВЫХОД»
75.
Изменение свойств объектовШАГ 11
Сейчас создадим процедуру обработки кнопки «ДА» (Button1).
Для этого делаем двойной щелчок по кнопке и мы опять в
редакторе кода:
По нажатию на эту кнопку должна появиться надпись «Спасибо, я так и
думал», остальные надписи стать невидимы, кнопки «ДА» и «НЕТ» должны
исчезнуть, а кнопка «ВЫХОД» - появиться
Делаем невидимыми
предупреждения ученику
76.
Изменение свойств объектовОсталось написать код для кнопки «ВЫХОД»
ШАГ 12
Для этого делаем двойной щелчок по кнопке «ВЫХОД» и в
редакторе кода записываем оператор close (закрыть
форму)
ШАГ 13
Ну вот и все, можно проверить работу программы, но прежде
давайте все сохраним (это мы уже умеем: Файл – сохранить все)
Сейчас запускаем программу (F9) и проверяем работу (при этом
произойдет и компиляция программы – появится EXE – файл в
каталоге сохранения)
Если возникают ошибки компиляции (компилятор выдает предупреждение о
характере ошибки) – посмотрите внимательно код программы. Помните, что если
мы забыли, например, точку с запятой (;) – то работать не будет
77.
Разбираемся с исходным кодомИТОГИ УРОКА:
На этом уроке мы научились программно изменять некоторые
свойства объектов и создавать процедуры обработки событий на
примере создания игровой программы
НА СЛЕДУЮЩЕМ УРОКЕ:
ООП на Delphi – 4:
Мы научимся создавать и проверять условия,
пользоваться компонентами Radio Button и Checkbox и
составим простейшую тестирующую программу
78.
Объектно –ориентированное
программирование на
DELPHI - 4
@ Краснополянская школа № 1 Домнин Константин Михайлович 2006 год
79.
DELPHI - 4На этом уроке:
Мы научимся создавать и проверять
условия, пользоваться компонентами
Radio Button и Checkbox и составим
простейшую тестирующую программу
Вопросы:
1. Компоненты Delphi Radio Button
и Checkbox
2. Создание простейшей
тестирующей программы
80.
1. Компоненты DelphiRadio Button и Checkbox
Объектно – ориентированное программирование на DELPHI - 4
81.
Компоненты Radio Button и Check BoxКомпоненты Radio Button и Check Box позволяют сделать выбор из нескольких
условий, причем Radio Button позволяет сделать единственный выбор из многих
условий, а Check Box – множественный выбор
С этими компонентами мы постоянно встречаемся, работая в операционной
системе Windows:
Radio Button - ы для выбора одной из
нескольких систем исчисления, а
также одной из мер измерения
угла
Check Box - ы для выбора сразу
нескольких условий из многих
82.
Компоненты Radio Button и Check BoxКомпонент Radio Button
Radio Button
может иметь только 2
значения:
False (ложно)
True (истинно)
Кроме этого у радиокнопки есть
множество других свойств: можно
изменить надпись на кнопке, ее
цвет, положение, доступность ...
Посмотрите внимательно набор свойств
компонента Radio Button в инспекторе
объектов
83.
Компоненты Radio Button и Check BoxКомпонент Check Box
Check Box
может иметь только 2
значения:
False (ложно)
True (истинно)
Кроме этого у Check Box-а есть
множество других свойств: можно
изменить надпись, цвет,
положение, доступность ...
Посмотрите внимательно набор свойств
компонента Check Box в инспекторе
объектов
84.
Компоненты Radio Button и Check BoxДля объединения Radio Button и Check Box при размещении на форме удобно и
красиво применять компоненты Group Box и Radio Group
Использование Group Box:
Помещаем компонент Group Box на форму
Помещаем на него необходимое количество компонент (например
Check Box, а можно и других)
В свойстве Caption изменяем надписи
В результате мы получаем группу независимых переключателей, где
значение True (или False) может иметь сразу несколько переключателей –
т.е. мы можем осуществить множественный выбор
85.
Компоненты Radio Button и Check BoxИспользование Radio Group:
Помещаем компонент Radio Group на форму
Раскрываем свойство Items этого компонента и заполняем строки
для будущих зависимых переключателей, нажимая Enter после
каждой строки
В свойстве Caption компонента изменяем заголовок
В результате мы получаем группу зависимых переключателей, где
значение True может иметь только один из всех переключателей, т.е.
мы можем осуществить единственный выбор
86.
2. Создание простоготеста
Объектно – ориентированное программирование на DELPHI - 4
87.
Создание простого тестаА сейчас давайте попробуем, используя компоненты Radio Button и
Check Box создать простой тест с минимальными требованиями к
программе (обойдемся пока приложением из одной формы, без
регистрации, отдельных файлов тестов, картинок и пр.) – сделаем
это по шагам
ШАГ 1
Конечно, сначала нужно составить тест на бумаге. Для
примера возьмем тест из 5 вопросов, причем первые три
вопроса с единственным выбором, а последние два – с
множественным:
с единственным выбором
1
2
Верно ли, что вся информация в
компьютере хранится в двоичном коде
Наименьшая единица информации
называется
Только числовая
Назовите устройства
вывода информации
Монитор
мышь
Любая информация
клавиатура
Вся информация за
исключением видео
принтер
байт
бит
бит/с
Элементной базой первых
компьютеров являлись
4
Только числовая и текстовая
бод
3
с множественным выбором
микросхемы
дискретные
полупроводниковые элементы
радиолампы
транзисторы
5
Назовите системы
программирования
Delphi
Visual Basic
Microsoft
Turbo Pascal
88.
Создание простого тестас единственным выбором
1
Верно ли, что вся
информация в
компьютере хранится
в двоичном коде
Только числовая
Только числовая
и текстовая
Любая
информация
Вся информация
за исключением
видео
2 Наименьшая единица
информации
называется
байт
бит
бод
бит/с
3 Элементной базой
первых компьютеров
являлись
микросхемы
дискретные
полупроводнико
вые элементы
радиолампы
транзисторы
с множественным выбором
4 Назовите
Монитор
устройства
мышь
вывода
информации клавиатура
принтер
5 Назовите
системы
программир
ования
Delphi
Visual Basic
Microsoft
Turbo Pascal
89.
Создание простого тестаШАГ 2
Сейчас давайте определим требования к программе :
Для первой тестирующей программы мы ограничимся только следующими
функциями:
• Подсчет числа верных ответов
• Подсчет % верных ответов
• Вывод результата после окончания теста
• Блокировка возврата к предыдущим вопросам
• Использование 4 вариантов выбора ответа
• Использование заданий как с единственным, так и множественным выбором
ответа
• После каждого ответа программа должна оповещать нас о правильности
нашего выбора
И на этом функциональность программы пока ограничим
90.
Создание простого тестаШАГ 3
Следующим шагом будет разработка внешнего вида
приложения и определение компонент, которых мы
будем использовать для ввода и вывода информации
Размещаем
для каждого
вопроса свой
компонент
Group Box
Размещаем
Label для
вывода
текста
вопроса
Размещаем
Radio Group
на 4
варианта для
выбора
ответов
91.
Создание простого тестаШАГ 3
Следующим шагом будет разработка внешнего вида
приложения и определение компонент, которых мы
будем использовать для ввода и вывода информации
Здесь
помещаем
Label для
визуального
оповещения
(верно/
неверно мы
ответили)
Ставим
кнопку для
проверки
выбранного
ответа
92.
Создание простого тестаШАГ 3
Следующим шагом будет разработка внешнего вида
приложения и определение компонент, которых мы
будем использовать для ввода и вывода информации
Аналогично
оформляем
место для 2 и
3 вопросов
93.
Создание простого тестаШАГ 3
Следующим шагом будет разработка внешнего вида
приложения и определение компонент, которых мы
будем использовать для ввода и вывода информации
Для 4 и 5
вопросов
(множественный
выбор) вместо
радиокнопок
вставляем по 4
Check Box - a
Размещаем
компонент Memo
для вывода
результатов теста
И, наконец,
кнопку для
завершения
работы с
программой
94.
Создание простого тестаШАГ 4
Сделаем соответствующие надписи на компонентах
формы (и не забудем разместить манифест XP)
В результате
мы получили
примерно
такую форму,
на которой
есть вопросы,
варианты
ответов, Memo
для вывода
результатов,
кнопки
проверки и
выхода
95.
Создание простого тестаШАГ 5
Приложение оформлено. Начнем программирование
событий. И самое первое событие, которое возникает
каждый раз при запуске программы – создание формы
(On Create)
Что должно происходить при запуске программы?
1.
Метки (Label 6,7,8,9,10)
должны быть невидимы
2.
Memo тоже должен быть
невидим и появляться
только после прохождения
теста
3.
Счетчик k верно
выполненных вопросов
должен обнуляться
96.
Создание простого тестаШАГ 5
Приложение оформлено. Начнем программирование
событий. И самое первое событие, которое возникает
каждый раз при запуске программы – создание формы
(On Create)
Сделаем двойной щелчок по форме и в редакторе кода запишем процедуру
создания формы (On Create)
Объявляем переменную
k, которая будет
являться счетчиком
числа верных ответов
Делаем невидимыми
Label – ы и Memo
Счетчику k присваиваем
ноль
97.
Создание простого тестаШАГ 6
Сейчас напишем отклик на событие нажатия на кнопку
«ПРОВЕРИТЬ»
Сделаем двойной щелчок по кнопке «ПРОВЕРИТЬ» в первом вопросе и запишем
соответствующий код.
Давайте его разберем
Кнопку «ПРОВЕРИТЬ» в
первом вопросе делаем
недоступной, после того,
как она нажата.
Это исключает
возможность возврата к
первому вопросу и выбора
другого ответа
Проверяем условие:
соответствует ли наш выбор
правильному, т.е выбран ли
переключатель с индексом 2
Заметьте ! Индексы переключателей в Delphi имеют нумерацию, начинающуюся с
нуля, поэтому верный ответ у нас обозначен индексом 2, хотя на самом деле это
третий вариант ответов (посмотрите на тест в бумажном варианте)
98.
Создание простого тестаШАГ 6
Сейчас напишем отклик на событие нажатия на кнопку
«ПРОВЕРИТЬ»
Сделаем двойной щелчок по кнопке «ПРОВЕРИТЬ» в первом вопросе и запишем
соответствующий код.
Давайте его разберем
Если условие выполняется (выбран
верный ответ), то
значение счетчика верных ответов
увеличиваем на единицу
- Метку 6(Label6), где выводится
:верно/неверно делаем видимой и
пишем в ней надпись ВЕРНО
зеленым цветом
Если условие не выполняется, то
счетчик не увеличиваем, а метку 6
делаем видимой и выводим надпись
НЕВЕРНО, причем красным цветом
Очевидно, что для кнопок проверки 2 и 3 вопросов код будет абсолютно таким же за
исключением номеров Label-ов для вывода ВЕРНО/НЕВЕРНО, поэтому Вы можете написать его
самостоятельно (не забывайте, что в редакторе можно использовать копирование кода – это
гораздо быстрее)
99.
Создание простого тестаШАГ 7
Следующим шагом опишем процедуры проверки ответа в
вопросах 4 и 5 – там код будет немного другой ввиду
множественного выбора и других используемых компонент
Сделаем двойной щелчок по кнопке «ПРОВЕРИТЬ» в 4 вопросе и запишем
соответствующий код.
Проверяем выбранные
ответы : ответ будет
верным только тогда, когда
первый и четвертый боксы
будут выбраны (True), а
второй и третий не
выбраны (false)
В этом случае- значение
счетчика верных ответов
увеличиваем на единицу
- Метку 9(Label9) делаем
видимой и пишем в ней
надпись ВЕРНО зеленым
цветом
Если условие не выполняется, то счетчик не увеличиваем,
метку 9 делаем видимой и выводим надпись НЕВЕРНО красным
цветом
100.
Создание простого тестаШАГ 8
Хотя вопрос 5 тоже с множественным выбором, то код
обработки этой кнопки аналогичен кнопке 4, но давайте
добавим в нее дополнительные функции: после нажатия этой
кнопки должны выводиться результаты теста в Memo
Эта часть аналогична
кнопке 4 вопроса и
объяснений здесь не
требуется
Делаем видимым
компонент Memo для
вывода результатов
Выводим результаты теста
101.
Создание простого тестаШАГ 8
Давайте посмотрим, как выводится в Memo результат теста
В апострофах (одинарных
кавычках), как и в Турбо
Паскале, выводится строка
символов:
Всего вопросов - 5
Давайте вспомним таблицу
кодировки символов - ASCII –
символы с номерами 13 и 10
зарезервированы для переноса
курсора на следующую строку
(Enter) и в ее начало
соответственно
Это значит, что вывод
следующего элемента начнется с
начала следующей строки
Опять вывод строки
Количество верных ответов
102.
Создание простого тестаДавайте посмотрим, как выводится в Memo результат теста
ШАГ 8
Опять
переводим
курсор на
начало
следующей
строки
Выводим
значение счетчика
k, естественно,
переводя его в
строковый тип (с
этим мы уже
знакомы)
(inttostr)
Выводим
текст
А здесь
подсчитываем
процент
выполнения и
переводим его в
строковый тип
(из
вещественного)
Выводим
символ %
(floattostr)
Процент
выполнения
теста
И вот результат, выведенный в Memo
103.
Создание простого тестаШАГ 9
Последняя кнопка – ВЫХОД
Закрываемся
ШАГ 10
Сохраняем и компилируем программу (см. предыдущие уроки)
А сейчас попробуем запустить наш тест
На этом наш урок закончен.
Конечно, наша тестирующая программа получилась довольно
примитивная, у нее отсутствуют многие необходимые функции. По
мере изучения Delphi мы составим более серьезную и удобную
тестирующую оболочку, а пока самое главное, что наша программа
работает и мы научились использовать компоненты для проверки
условий
104.
ИТОГИ УРОКА:На этом уроке мы научились создавать и проверять условия,
пользоваться компонентами Radio Button и Checkbox и
составили простейшую тестирующую программу
НА СЛЕДУЮЩЕМ УРОКЕ:
ООП на Delphi – 5:
Мы научимся использовать элементы ввода и вывода
информации и составим программу расчета корней
квадратного уравнения, а также познакомимся с
обработкой исключительных ситуаций
105.
Объектно –ориентированное
программирование на
DELPHI - 5
@ Краснополянская школа № 1 Домнин Константин Михайлович 2006 год
106.
DELPHI - 5На этом уроке:
Мы научимся использовать элементы
ввода и вывода информации и составим
программу расчета корней квадратного
уравнения, а также познакомимся с
обработкой исключительных ситуаций
Вопросы:
1. Элементы ввода и вывода
информации
2. Создание программы расчета
корней квадратного уравнения
3. Обработка исключений
107.
Элементы ввода и выводаинформации
Объектно – ориентированное программирование на DELPHI - 5
108.
Элементы ввода и вывода информацииВ каждой программе для взаимодействия компьютера и
пользователя должны быть средства для ввода информации
и получения ее от программы
Delphi содержит большой набор компонент для
ввода, вывода и редактирования информации
Рассмотрим подробнее некоторые часто применимые компоненты, их
свойства и применение
109.
Элементы ввода и вывода информацииКомпонент Label (метка)
Основное свойство: Caption (надпись)
Это свойство можно изменять программно:
Label (метка)
Применяется для
отображения текста,
который не
изменяется
пользователем.
(только программно)
Label1.Caption:=‘Привет !’;
Некоторые дополнительные свойства
Изменение цвета шрифта
Label1.Font.Color:=RGB(200,100,200);
Изменение размера шрифта
Label1.Font.Size:=24;
Посмотрите внимательно набор свойств компонента Label в
инспекторе объектов и поэкспериментируйте с ними
110.
Элементы ввода и вывода информацииКомпонент Edit (окно редактирования)
Edit
Отображение, ввод и
редактирование
однострочных
текстов. Имеется
возможность
оформления
объемного бордюра.
Основное свойство: Text
Это свойство можно изменять программно
и путем ввода с клавиатуры
Edit1.Text:=‘Привет!';
Некоторые дополнительные свойства:
Изменение цвета шрифта
Edit1.Font.Color:=rgb(255,255,255); / цвет
шрифта – белый/
Изменение фона окна
Edit1.Color:=rgb(0,0,0); /фон окна – черный/
111.
Элементы ввода и вывода информацииКомпонент Memo (многострочное окно редактирования)
Memo
Отображение, ввод и
редактирование
многострочных
текстов. Имеется
возможность
оформления
объемного бордюра.
Основное свойство: Lines
Откройте в инспекторе объектов свойство
Lines и у Вас откроется редактор строк
112.
Элементы ввода и вывода информацииКомпонент Memo (многострочное окно редактирования)
Memo
Отображение, ввод
и редактирование
многострочных
текстов. Имеется
возможность
оформления
объемного бордюра.
В компоненте Memo формат (шрифт, его
атрибуты, выравнивание) одинаков для всего
текста и определяется свойством Font.
Если в коде мы запишем:
memo1.Color:=rgb(0,255,255);
memo1.Font.Size:=14;
memo1.Font.Color:=rgb(255,0,0);
memo1.Text:='Привет !';
то увидим следующее:
113.
Элементы ввода и вывода информацииКомпонент List Box
List Box
Отображение
стандартного окна
списка Windows,
позволяющего
пользователю
выбирать из него
пункты.
Основное свойство:
Items
listbox1.Items.Add(‘Оля'); добавление записи Оля
listbox1.Color:=rgb(0,255,255);; установка цвета фона бокса
114.
Элементы ввода и вывода информацииКомпонент Rich Edit
Rich Edit
Компонент представляет
собой окно редактирования
в стиле Windows 95 в
обогащенном формате RTF,
позволяющее производить
выбор атрибутов шрифта,
поиск текста и многое
другое .
Элемент Rich Edit похож по свойствам
на Memo, но обладает большими
возможностями
Вы можете менять атрибуты текста,
выполняя отдельные фрагменты
различными шрифтами, размерами,
цветами, стилями. Устанавливаемые
атрибуты влияют на выделенный текст
или, если ничего не выделено, то на
атрибуты нового текста, вводимого
начиная с текущей позиции курсора
115.
Элементы ввода и вывода информацииНа этом знакомство с компонентами ввода, вывода и редактирования
информации закончим
Отметим, что мы рассмотрели лишь часто применимые компоненты, с
другими вы можете познакомиться в справочнике А.Я. Архангельского
«100 компонентов общего назначения Delphi»
Сейчас, используя полученные знания, создадим программу
расчета корней квадратного уравнения, применив элементы
ввода, редактирования и вывода информации
116.
2. Создаем программурасчета корней
квадратного уравнения
Объектно – ориентированное программирование на DELPHI - 5
117.
Программа расчета корней квадратного уравненияПрежде, чем приступить к разработке программы, мы должны разработать ее
алгоритм (что является, пожалуй, самым сложным), а затем реализовать его в
конкретной системе программирования
Начало
Алгоритм данной
программы известен
каждому школьнику, его
можно изобразить в виде
следующей блок - схемы
Ввод коэффициентов
a, b, c
Нахождение дискриминанта
d = b2 – 4 ac
да
нет
d<0
нет
да
d=0
Корней нет
Два корня
x12
b d
2a
Конец
Один корень
x
b
2a
118.
Программа расчета корней квадратного уравненияПосле разработки алгоритма приступим к его реализации в Delphi
На форме должны быть:
• 3 Edit-a для ввода коэффициентов уравнения
• 1 Edit для отображения вычисления дискриминанта
• 2 Edit-a для отображения вычисления корней уравнения
• 2 кнопки:
«НАЙТИ» - для вычисления корней
«ОЧИСТИТЬ» - для очистки всех Edit – oв
• несколько Label –ов для вывода текста
Причем для украшения программы применим компонент Manifest
XP, а также Group Box
Рассмотрим создание программы по шагам, причем объяснений будет уже
меньше – мы уже кое – что умеем
119.
Программа расчета корней квадратного уравненияШАГ 1
Запускаем Delphi, размещаем на форме необходимые компоненты:
Group Box2
Group Box3
Group Box1
Компонент Group Box
находится на стандартной
панели компонент
В свойстве Group Box –
Caption делаем
соответствующие надписи
120.
Программа расчета корней квадратного уравненияШАГ 1
Размещаем все Label –ы для отображения текста
Label1
Label2
Label3
Label4
Label5
Label6
Label7
121.
Программа расчета корней квадратного уравненияШАГ 1
Размещаем Edit-ы для отображения и ввода данных
Edit1
Edit2
Edit3
Edit6
Edit4
Edit5
122.
Программа расчета корней квадратного уравненияШАГ 1
И наконец размещаем кнопки и манифест XP
Manifest XP
Button1
Button2
Делаем соответствующие
надписи на кнопках,
подгоняем размер формы – и
сейчас можно приступать к
написанию кода
123.
Программа расчета корней квадратного уравненияШАГ 2
Сейчас в интерфейсной части модуля необходимо объявить
используемые переменные (нажмите F12 – и вы в редакторе)
Объявляем
переменные и
указываем их тип –
real (все величины
могут принимать
действительные
значения
124.
Программа расчета корней квадратного уравненияШАГ 3
Приступаем к написанию кода, сначала для кнопки «НАЙТИ»
(Button1). Делаем по ней двойной щелчок и мы в редакторе
кода, где записываем следующий код (это знакомый нам
Паскаль, но есть небольшие отличия)
Это процедура
нажатия на кнопку
«НАЙТИ», созданная
Delphi автоматически
А эти три строчки
нам пока незнакомы
Что это?
125.
Программа расчета корней квадратного уравненияШАГ 3
Приступаем к написанию кода, сначала для кнопки «НАЙТИ»
(Button1). Делаем по ней двойной щелчок и мы в редакторе
кода, где записываем следующий код (это знакомый нам
Паскаль, но есть небольшие отличия)
Дело в том, что
переменные a,b и с –
вещественного типа, а
значение окна
редактирования (Edit.Text)
–имеет строковый тип
Поэтому присваивание
напрямую:
a:= Edit1.Text вызовет
ошибку несоответствия
типов
Выражение strtofloat –
указание компилятору
перевести строковый тип,
присущий тексту Edit-а, в
вещественный тип,
соответствующий
переменной a (b и с)
126.
Программа расчета корней квадратного уравненияШАГ 3
Приступаем к написанию кода, сначала для кнопки «НАЙТИ»
(Button1). Делаем по ней двойной щелчок и мы в редакторе
кода, где записываем следующий код (это знакомый нам
Паскаль, но есть небольшие отличия)
вычисление дискриминанта
А здесь опять
преобразование типов,
только наоборот:
Значению Edit6.Text
присваивается значение
дискриминанта, но при
этом вещественный тип
переменной d
преобразуется в строковый
тип значения Edit-а
(floattostr)
127.
Программа расчета корней квадратного уравненияШАГ 3
Приступаем к написанию кода, сначала для кнопки «НАЙТИ»
(Button1). Делаем по ней двойной щелчок и мы в редакторе
кода, где записываем следующий код (это знакомый нам
Паскаль, но есть небольшие отличия)
Проверяем условие (если
дискриминант меньше
нуля), то выводим в Edit-ах
для корней значения
«Корней нет»
Иначе рассчитываем корни
и выводим их в
соответствующих Edit-ах
(Здесь мы немного упростили,
объединив две ветви
алгоритма в одну)
128.
Программа расчета корней квадратного уравненияШАГ 4
Сейчас запишем код для кнопки «ОЧИСТИТЬ» (Button2)
Свойству Text каждого Edit- а присваиваем пустое значение
129.
Программа расчета корней квадратного уравненияШАГ 5
Сохраняем проект, компилируем и запускаем готовую
программу
Попробуем ввести значение
коэффициентов и посмотреть
результат
А сейчас проверьте
работу программы по
контрольным примерам:
a
b
c
x1
x2
1
2
1
-1
-1
2.18
-23.54
0.35
0.01488
10.7832
12.5
2.354
235.12
корней
нет
корней
нет
130.
2. Обработка исключенийОбъектно – ориентированное программирование на DELPHI - 5
131.
Программа расчета корней квадратного уравненияДавайте разберемся, что такое исключение
Запустим калькулятор и попробуем ввести следующие значения
коэффициентов:
(а=0, b и c – произвольные)
При нажатии кнопки «НАЙТИ» программа не
работает, выходит окно сообщения
В чем дело ?
Давайте посмотрим, как мы
находим корни уравнения
b d
x12
2a
Когда переменной а присваивается значение
0, то знаменатель этой дроби тоже ноль, а на
ноль делить нельзя –программа не может
выполнить действие, которое мы ее
заставляем и прерывается – возникает
исключительная ситуация (исключение),
которое мы должны обработать –
написать код
132.
Программа расчета корней квадратного уравненияОбработка этого исключения
Ясно, что мы перед расчетом дискриминанта и корней должны проверить – а не
введен ли в Label1 ноль. Если введен – то это уже не квадратное уравнение и
считать надо по другой формуле (x= - c / b), если не введен – можно считать как
обычно
Откроем файл нашего
проекта (ведь он у нас
сохранен) и перейдем в
редактор кода
После присвоения
переменным a,b и с
значений из
соответствующих Label-ов
вставляем проверку этого
условия
Если условие
выполняется, то в одном
Label-е выводим
сообщение, а в другом –
результат вычисления по
другой формуле
133.
Программа расчета корней квадратного уравненияОбработка этого исключения
Ясно, что мы перед расчетом дискриминанта и корней должны проверить – а не
введен ли в Label1 ноль. Если введен – то это уже не квадратное уравнение и
считать надо по другой формуле (x= - c / b), если не введен – можно считать как
обычно
Иначе действуем по
старому, не забудьте
добавить begin …end
Сохраните,
скомпилируйте, запустите
программу и попробуйте
ввести для а ноль, для b,с
– произвольно: программа
считает
попробовать
Таким образом мы
обработали одно
исключение, но может
быть, есть еще что-то?
134.
Программа расчета корней квадратного уравненияА что будет, если мы случайно в окно ввода коэффициента уравнения введем вместо
числа – текст или какие – то знаки препинания (или вообще ничего не введем)?
Опять возникает ситуация, когда наша программа
не может выполнить действие и прерывается, а нам
выводится сообщение об этом . В этом случае мы
заставляем программу переводить символы АВС в
вещественное число, но эти символы числом не
являются – возникает несоответствие типов
При создании даже простой программы мы всегда должны
обдумывать и обрабатывать исключения, хотя часто они «не видны» и
проявляются только в некоторых ситуациях при работе уже готовой
программы
Обработка исключений – дело довольно кропотливое и в наш курс не
входит, хотя на следующих уроках мы будем на это обращать внимание
135.
Программа расчета корней квадратного уравненияИТОГИ УРОКА:
На этом уроке мы научились использовать элементы ввода и
вывода информации и составили программу расчета корней
квадратного уравнения, использующие эти компоненты,
познакомились с исключениями и как их обрабатывать
НА СЛЕДУЮЩЕМ УРОКЕ:
ООП на Delphi – 6:
Мы научимся создавать
• приложения, содержащие несколько форм,
• заставку, появляющуюся при запуске программы
• приложения, использующие элемент таймер
136.
Объектно –ориентированное
программирование на
DELPHI - 6
@ Краснополянская школа № 1 Домнин Константин Михайлович 2006 год
137.
DELPHI - 6На этом уроке:
Мы научимся создавать программы,
имеющие несколько форм, заставку,
появляющуюся перед созданием
основной формы программы, а также
познакомимся с применением
компонента таймер
Вопросы:
1. Приложения, содержащие
несколько форм
2. Приложения, использующие
компонент таймер
3. Создание заставки программы
138.
1. Приложения,содержащие несколько
форм
Объектно – ориентированное программирование на DELPHI - 6
139.
Приложения, содержащие несколько формВ подавляющем большинстве приложения содержат не одну, а несколько
форм, которые могут появляться при возникновении определенных событий.
Например, приложения с базами данных часто содержат десятки различных
форм.
Наша задача – научиться создавать приложения из нескольких
взаимосвязанных форм
Для начала давайте создадим приложение из 3 связанных форм. Рассмотрим
процесс создания приложения по шагам:
ШАГ 1
Запускаем Delphi и у нас автоматически создается форма1 (Form1).
В свойстве Caption формы назовем ее - «ГЛАВНАЯ». Delphi
автоматически делает эту форму главной или стартовой – она
первой открывается при запуске приложения (хотя мы можем это
изменить)
140.
Приложения, содержащие несколько формШАГ 2
Добавим к нашему приложению еще 2 формы, которые назовем
«Математика» и «Физика»
Для этого зайдем в меню Файл –
> Создать -> Форма
Создадим форму2 (Form2), которую
назовем «Математика». Аналогично
создадим и форму «Физика»
141.
Приложения, содержащие несколько формШАГ 3
Сейчас надо «познакомить» все эти формы. Т.е. главная форма
должна «знать» о существовании форм «Математика» и «Физика», а
те, в свою очередь, должны знать о существовании ГЛАВНОЙ и друг
о друге. Это нужно для того, чтобы мы могли из одной формы
вызвать другую
Сделаем активной форму «ГЛАВНАЯ» (просто щелкнем по ней мышкой), зайдем в
меню Файл -> Использовать модуль, где укажем на использование формы
«Математика» (Unit2). Затем снова зайдем и укажем модуль Unit3 (форма «Физика»)
Сейчас форма
«ГЛАВНАЯ» знает о
существовании
форм «Математика»
и «Физика» и может
к ним обращаться
Аналогично сделайте активной форму
«Математика» и свяжите ее с модулями Unit1 и
Unit3. (С формами «ГЛАВНАЯ» и «Физика»)
То же самое сделайте для формы «Физика»
142.
Приложения, содержащие несколько формШАГ 4
Итак, мы «познакомили» формы, а сейчас их свяжем, т.е. по
событию в одной форме появляется другая
Разместим на форме «ГЛАВНАЯ» 3 кнопки:
• Математика – для открытия формы «Математика»
• Физика – для открытия формы «Физика»
• ВЫХОД – для выхода из приложения
143.
Приложения, содержащие несколько формШАГ 4
Итак, мы «познакомили» формы, а сейчас их свяжем, т.е. по
событию в одной форме появляется другая
Аналогично на формах «Математика» и «Физика» разместим кнопки «Закрыть»
для закрытия этих форм
144.
Приложения, содержащие несколько формШАГ 4
Итак, мы «познакомили» формы, а сейчас их свяжем, т.е. по
событию в одной форме появляется другая
Сделаем двойной щелчок кнопке «МАТЕМАТИКА» на форме «Главная» для
перехода в редактор
В процедуре нажатия на
кнопку «Математика»
запишем:
Form2.showModal
145.
Приложения, содержащие несколько формШАГ 4
Итак, мы «познакомили» формы, а сейчас их свяжем, т.е. по
событию в одной форме появляется другая
Сделаем двойной щелчок кнопке «Физика» на форме «ГЛАВНАЯ» для
перехода в редактор
В процедуре нажатия на
кнопку «Физика»
запишем:
Form3.show
146.
Приложения, содержащие несколько формШАГ 4
Итак, мы «познакомили» формы, а сейчас их свяжем, т.е. по
событию в одной форме появляется другая
Сделаем двойной щелчок кнопке «ВЫХОД» на форме «ГЛАВНАЯ» для
перехода в редактор
В процедуре нажатия на
кнопку «ВЫХОД»
запишем:
close
147.
Приложения, содержащие несколько формШАГ 4
Итак, мы «познакомили» формы, а сейчас их свяжем, т.е. по
событию в одной форме появляется другая
Разберемся с кодом:
Для вызова формы на экран (показа ее) в Delphi
существуют метод Show (Show Modal)
Метод Show Modal вызывает модальное окно (окно,
которое полностью берет на себя управление
программой и пока мы его не закроем, мы не сможем
выполнять какие – либо действия в другом окне)
(Окно формы «Математика» у нас является
модальным)
Примером модальных окон являются системные
сообщения Windows
Метод Show выводит обычное окно, при этом мы
можем что-то делать в другом окне, не закрывая
первого
(Окно формы «Физика» у нас не является модальным
– оно обычное)
148.
Приложения, содержащие несколько формДумаю, не требуется объяснений для написания кода кнопок
«Закрыть» на формах «Математика» и «Физика»
ШАГ 4
И последний шаг: сохраняем проект и компилируем его (посмотрите
внимательно, что у Вас сохранилось: кроме файла проекта
сохранились файлы каждого модуля (каждой формы)
ШАГ 5
Все.
Можно запустить
приложение и попробовать
его работу (и сравните
поведение окон форм
«Математика» и «Физика» одно из них модальное, а
другое – нет)
Запустить ->
Итак, мы научились создавать
приложения из многих взаимосвязанных
форм (конечно же в самом простом
варианте их использования)
149.
2. Приложения,содержащие компонент
таймер
Объектно – ориентированное программирование на DELPHI - 6
150.
Приложения, содержащие компонент таймерСначала познакомимся с компонентом Таймер (Timer) и его свойствами.
Компонент Таймер является невидимым, т.е
при работе приложения его не видно на форме,
но мы также можем управлять им – запускать
или останавливать эти «часики». И по этим
часам через определенные, заданные нами
промежутки времени, могут происходить
различные события
Основные свойства таймера:
1. Enabled (доступность).
Если Enabled имеет
значение True, то таймер
запущен (часы идут)
Если Enabled имеет
значение False, таймер
остановлен
2.
Interval (промежуток времени
«тиканий» часов – через каждый такой
промежуток может происходить какое – то
заданное нами событие).
Интервал измеряется в миллисекундах
(Например, если значение Interval=1000,
значит период срабатываний таймера 1000
миллисекунд,т.е. 1 секунда)
151.
Приложения, содержащие компонент таймерА сейчас давайте рассмотрим его использование на примере создания
программы – секундомера (по шагам)
Определим требования к программе:
Одноформенное приложение с прямым отсчетом времени (без обратного
отсчета), кнопками ПУСК и СТОП, индикацией прошедшего промежутка
времени с точностью до десятых долей секунды
По мере продвижения в изучении Delphi и создания прикладных программ
наши объяснения работы с компонентами и кодом будут все меньше,
чтобы не повторяться и не загромождать курс.
Если встречается что – то непонятное – смотрите внимательно
предыдущие уроки, а также справочник А.Я.Архангельского «100
компонентов общего назначения Delphi»
152.
Приложения, содержащие компонент таймерШАГ 1
Запускаем Delphi и на форме размещаем необходимые
компоненты. Делаем соответствующие надписи
Label, в котором будет
динамически отображаться
ход времени
Манифест ХР для
украшения
приложения в
стиле Windows XP
Кнопка ПУСК, которая будет
запускать таймер и обнулять
показания Label -a
Timer, который будет
управлять ходом
времени (Свойству
Interval в инспекторе
объектов установим
значение 100 (0,1 сек))
Кнопка СТОП,
которая будет
останавливать
таймер
153.
Приложения, содержащие компонент таймерСоздаем обработчики событий
ШАГ 2
Событие создания формы
Первое событие – это создание формы (On Create), которое происходит каждый
раз при запуске приложения
При запуске приложения в Label –e должен быть ноль, переменная k, значение
которой будет отображаться в ходе подсчета в Label-e – тоже ноль, а таймер
должен «стоять»
Пишем ноль в Label-e
Присваиваем ноль k
Таймер останавливаем
154.
Приложения, содержащие компонент таймерСоздаем обработчики событий
ШАГ 3
Событие нажатия на кнопку ПУСК
При нажатии на кнопку ПУСК таймер должен запускаться, а показания Label-a и k
обнуляться, чтобы счет шел сначала, а не нарастающим итогом
Обнуляем значение k
В Label-e выводим ноль
Запускаем таймер
155.
Приложения, содержащие компонент таймерСоздаем обработчики событий
ШАГ 4
Событие нажатия на кнопку СТОП
При нажатии на кнопку СТОП таймер должен остановиться
Останавливаем
таймер
ШАГ 5
Заставим таймер считать (сделаем двойной щелчок по
таймеру и запишем код)
При каждом
срабатывании
таймера к значению
k должно
прибавляться 0,1
(100 мс)
При каждом срабатывании таймера в Label-e
будет отображаться значение k
156.
Приложения, содержащие компонент таймерСоздаем обработчики событий
ШАГ 6
ШАГ 7
Не забудьте объявить переменную k – ее тип будет конечно real
Сохраняем, компилируем и запускаем программу
Запустить ->
Мы познакомились с таймером и научились его использовать.
В следующих примерах мы также будем его применять, в
частности при создании заставки программы
157.
3. Создание заставкипрограммы
Объектно – ориентированное программирование на DELPHI - 6
158.
Создание заставки программыВо многих приложениях перед открытием главного (стартового окна программы)
возникает заставка – окно с информацией о программе, логотипом и пр., которое
обычно само исчезает через несколько секунд. Причем заставка может
сопровождаться и музыкальным фрагментом
Вы уже поняли, что в качестве примера мы создадим заставку для нашего
секундомера, который мы только что создали
ШАГ 1
Запускаем Delphi и открываем проект с нашим секундомером,
затем создаем новую форму (Файл -> Создать -> Форма) – эта
форма и будет нашей заставкой
На этой форме размещаем информацию,
картинки и т.д. – поработаем над дизайном
Свойству BorderStyle этой формы даем
значение BsNone, чтобы у формы, как
обычно бывает у заставки, не было границ
И помещаем на форму компонент таймер –
он будет «показывать» нам заставку
определенное нами время (Поставим
интервал таймера – 3000, а Enabled =True)
159.
Создание заставки программыКак поместить на форму картинку?
Для этого служит
компонент Image,
который находится на
вкладке Дополнительно
Помещаем компонент на
форму и раскрываем в
инспекторе объектов его
свойство Picture
В редакторе изображения
щелкаем кнопку «Загрузить»
и появившемся окне
загрузки изображения
находим нужную картинку
на диске компьютера
Осталось нажать ОК и
картинка вставлена
Посмотрите в инспекторе объектов свойства компонента Image, попробуйте
изменять их значения и посмотрите, к чему это приведет
160.
Создание заставки программыШАГ 2
Сейчас заходим в меню Delphi:
Проект-> Опции и переносим
форму2 (заставку) из раздела
Автосоздание в раздел Доступные
формы
Делаем двойной щелчок на Таймере и
в обработчике события пишем:
Т.е. через 3 секунды таймер
сработает и сам себя выключит, а
заставка исчезнет с экрана ( при
открытии формы Enabled мы ставили
True и отсчет времени сразу пошел)
161.
Создание заставки программыШАГ 3
А сейчас откроем файл проекта, нажав Ctrl+F12 ( и выберем
Проект1), в котором вставим немного кода (выделено красным)
Что было
Разбор кода проекта оставим на
будущее
Что станет
162.
Создание заставки программыШАГ 4
Последний шаг: сохраняем, компилируем и запускаем
Запустить ->
На этом урок закончен
163.
ИТОГИ УРОКА:На этом уроке мы научились создавать приложения,
содержащие несколько форм, познакомились со свойствами и
применением таймера, а также создали заставку для программы
НА СЛЕДУЮЩЕМ УРОКЕ:
ООП на Delphi – 7:
Мы попробуем создать свою игру, используя компоненты,
применять которые мы уже умеем
164.
Объектно –ориентированное
программирование на
DELPHI - 7
165.
DELPHI - 7На этом уроке:
Мы создадим свою игрушку для
досуга, используя знания, полученные
на предыдущих уроках
Вопросы:
Весь этот урок посвящен созданию
игры «Раздави пауков»
166.
Создание игры«Раздави пауков»
Объектно – ориентированное программирование на DELPHI - 7
167.
Создаем свою игруВначале давайте сыграем в эту игру (выберите режим медленно), чтобы иметь
представление о том что на этом уроке мы создадим. Играя, обратите внимание на
используемые компоненты и функциональность программы
Хотя программирование игрушек не входит в наш курс, но это хороший способ
попрактиковаться в использовании компонент и построении логики программы
Кроме того эта игрушка – хорошее средство приручить мышку к своей руке
Сыграть ->
168.
Создаем свою игруШАГ 1
Как обычно, запускаем Delphi и конструируем форму
Положим на
форму панель
(Panel1) – это
будет наше
поле боя.
Подберем
цвет панели
Через
компонент
Image
помещаем на
панель
несколько
жучков (8),
которые будут
прыгать по
полю
169.
Создаем свою игруШАГ 1
Как обычно, запускаем Delphi и конструируем форму
Вставляем
Group Box, в
котором
размещаем
Label с
правилами
игры
Вставляем
Group Box, в
котором
размещаем 2
Label-a и 2
Memo для
вывода
результатов:
времени,
затраченного
на игру и
числа
попыток
170.
Создаем свою игруШАГ 1
Как обычно, запускаем Delphi и конструируем форму
В следующем
Group Box-e
вставляем Radio
Group на три
переключателя
для выбора
режима игры
Размещаем
кнопки СТАРТ
и ВЫХОД
171.
Создаем свою игруШАГ 1
Как обычно, запускаем Delphi и конструируем форму
Поместим на
форму два
таймера:
Первый будет
отсчитывать
время, которое
мы затратили
на игру
Второй будет
заставлять
прыгать
паучков через
определенные
промежутки
времени
172.
Создаем свою игруШАГ 2
Сейчас приступим к написанию кода игры и начнем с события
создания формы (On Create), возникающего каждый раз самым
первым при запуске приложения
Давайте сделаем, чтобы
при запуске игры панель1
(поле боя) было неактивным,
серым и на нем в качестве
логотипа в середине один
паучок. Время игры идти не
должно
Красим панель серой
краской
Делаем ее недоступной
Оба таймера делаем СТОП
Паучков, которые будут
прыгать, делаем
невидимыми
Паучка – логотип делаем
видимым
173.
Создаем свою игруШАГ 2
Сейчас приступим к написанию кода игры и начнем с события
создания формы (On Create), возникающего каждый раз самым
первым при запуске приложения
В результате
при запуске
программы мы
увидим такую
форму
Чтобы во
время игры
нельзя было
изменить
размеры
формы (и
поля боя),
сделайте
свойство
формы Border
Style равным
Tool Window
174.
Создаем свою игруШАГ 3
Опишем процедуру нажатия на кнопку СТАРТ
Здесь мы видим три
переменных: k,s,p.
Для чего они введены?
1) В переменной k будет
храниться количество
попаданий по паучкам во
время игры
2) В переменной s будет
храниться время,
затраченное на игру
3) В переменной p будет
храниться число попыток
раздавить паучков (считая
число попаданий и число
промахов)
При каждом старте эти
переменные должны
обнуляться
175.
Создаем свою игруШАГ 3
Опишем процедуру нажатия на кнопку СТАРТ
Делаем Panel1 (поле боя)
доступной и красим ее
белым цветом
Все 7 паучков, которые
будут прыгать, делаем
видимыми
Восьмого паучка (логотип)
делаем невидимым
176.
Создаем свою игруШАГ 3
Опишем процедуру нажатия на кнопку СТАРТ
Запускаем оба таймера:
пошел отсчет времени и
паучки запрыгали
Очищаем все надписи на
панели и в Memo для
вывода результата (Эти
надписи у нас появятся в
конце игры)
177.
Создаем свою игруШАГ 3
Опишем процедуру нажатия на кнопку СТАРТ
А здесь идет проверка
условия:
Если выбран первый
переключатель(с индексом
0), то интервал прыгания
паучков устанавливается
0,8 сек – медленно
Если второй – 0,5 сек
(быстро)
Если третий – 0,3 сек
(очень быстро)
Таким образом каждый
может выбрать свой темп
игры
178.
Создаем свою игруШАГ 4
Опишем событие щелканья мышкой по паучку. Здесь может быть
два случая, для каждого из которых надо написать процедуру
обработки:
1. Мы попали по паучку (возникает событие ImageX.Click)
2. Мы не попали по паучку, но тогда мы попали по панели (возникает
событие Panel1.Click)
1. Процедура Image1.Click
(опишем для первого паучка, а
для остальных паучков будет то
же самое)
Паука, в которого попали,
делаем невидимым и он
выходит из игры
Считаем число попыток и
число попаданий (в случае
попадания число попыток
увеличиваем и число
попаданий тоже)
179.
Создаем свою игруШАГ 4
Опишем событие щелканья мышкой по паучку. Здесь может быть
два случая, для каждого из которых надо написать процедуру
обработки:
1. Мы попали по паучку (возникает событие ImageX.Click)
2. Мы не попали по паучку, но тогда мы попали по панели (возникает
событие Panel1.Click)
1. Процедура Image1.Click
(опишем для первого паучка, а
для остальных паучков будет то
же самое)
В Memo2 выводим число
попыток
Если это последний
убитый паук (k=7), то на
панели красным крупным
шрифтом выводим
окончание игры и
останавливаем таймеры
180.
Создаем свою игруШАГ 4
Опишем событие щелканья мышкой по паучку. Здесь может быть
два случая, для каждого из которых надо написать процедуру
обработки:
1. Мы попали по паучку (возникает событие ImageX.Click)
2. Мы не попали по паучку, но тогда мы попали по панели (возникает
событие Panel1.Click)
2. Процедура Panel1.Click
Увеличиваем счетчик
попыток
Выводим число
использованных попыток в
Memo2
181.
Создаем свою игруШАГ 5
Опишем процедуры тиканья таймеров (OnTimer)
Напомню, что Timer1 управляет частотой перемещения пауков, а Timer2
– считает время игры (в переменной S и отображает в Memo1)
Timer1
Инициализируем
генерацию случайных
чисел
Генерируем для каждого
паука его положение от
левого края и верха поля боя
случайным образом
(Здесь необходимо учесть,
чтобы в результате random
паук не выпрыгивал за поле
боя – для этого посмотрите
размеры панели в
инспекторе объектов и
подберите соответствующие
random-ы
182.
Создаем свою игруШАГ 5
Опишем процедуры тиканья таймеров (OnTimer)
Напомню, что Timer1 управляет частотой перемещения пауков, а Timer2
– считает время игры (в переменной S и отображает в Memo1)
Timer2
Увеличиваем значение S
на 0,1 секунды
Выводим в Memo1 показания
переменной s, в результате в
Memo1 идет динамический
подсчет времени игры с
точностью до десятых долей
секунды
183.
Создаем свою игруШАГ 6
Кнопка ВЫХОД комментариев на требует ( метод Close)
Но вместо обычной командной кнопки с надписью
ВЫХОД мы видим в приложении кнопку с
пиктограммой
Давайте разберемся, как ее сделать.
Это тоже командная кнопка, но с картинкой ( Bit Button), и находится она на
вкладке Дополнительно
184.
Создаем свою игруПомещаем кнопку на форму и в инспекторе объектов раскрываем
свойство кнопки Glyph, дальше – загрузить и находим маленькую
картинку (*.bmp) или рисуем сами
185.
Приложения, содержащие несколько формШАГ 7
И последний шаг: сохраняем проект и компилируем его.
Сейчас можно и поиграть
Поиграть ->
Итак, на этом уроке мы создали простую игровую программу
(обозначим ее версией 1.0). Вместо паучков мы могли взять,
например, уток, зайчиков ... – и тогда у нас получилась бы другая игра
(про охотников). Этих уток можно заставить появляться по очереди на
1-2 секунды, чтобы за это время успеть выстрелить, причем для
каждой картинки можно использовать свой таймер
Понятно, что здесь огромное поле творчества. Поэтому попробуйте
сделать свою версию игры , измените ее функциональность, внесите и
реализуйте свои идеи и мысли
186.
ИТОГИ УРОКА:На этом уроке мы создали свою игрушку для досуга, используя
знания, полученные на предыдущих уроках
НА СЛЕДУЮЩЕМ УРОКЕ:
ООП на Delphi – 8:
Мы познакомимся с созданием меню программы, статусной
панели, а также различными диалогами и сообщениями
187.
Объектно –ориентированное
программирование на
DELPHI - 8
188.
DELPHI - 8На этом уроке:
Мы должны научиться создавать и
использовать меню программы и
панель статуса, а также познакомиться
с диалогами
Вопросы:
1. Создание меню программы
2. Создание панели статуса
3. Использование диалогов
189.
Создание менюпрограммы
Объектно – ориентированное программирование на DELPHI - 8
190.
Создание меню программыМногие профессиональные программы содержать в своей верхней части главное
меню с раскрывающимися опциями (например пакет офисных программ MS OFFICE)
Система раскрывающихся меню стала своеобразным стандартом программ и
является очень удобной для доступа к всем функциям программы
Рассмотрим создание такого меню:
191.
Создание меню программыДля создания меню служит компонент Main Menu, находящийся на вкладке
Стандартные
ШАГ 1
Поместим на нашу форму
компонент Main Menu
ШАГ 2
Щелкнув правой по Main
Menu, выберем в контекстном
меню раздел Дизайнер меню –
раздел, с помощью которого
мы и сформируем нужное нам
меню
192.
Создание меню программыШАГ 3
Сейчас в дизайнере меню можно сформировать нужные разделы
Сначала давайте определимся, что мы хотим иметь.
Пусть меню содержит 3 раздела:
• Файл (с опциями Создать, открыть, сохранить)
• Правка (с опциями копировать, вырезать, вставить)
• Справка (с опциями о программе, помощь)
Печатаем слово Файл и нажимаем Enter
Печатаем Создать и снова Enter, и так же
открыть и сохранить
Для того чтобы создать разделяющую
полосу, группирующую сходные функции,
напечатаем знак «-» (минус и тоже Enter)
И так же Выход. (Наименование опций
соответствует свойству Caption в
инспекторе объектов)
193.
Создание меню программыШАГ 3
Щелкаем стрелку вправо на клавиатуре и таким же образом формируем раздел
меню Правка, а затем и Справка.
Таким образом мы получили систему раскрывающихся меню
Часто раскрывающие опции имеют
маленькие пиктограммы для пояснения
функции данной опции
Рассмотрим, как их сделать, например
для опции Помощь раздела Справка
194.
Создание меню программыШАГ 3
Находясь в опции Помощь, открываем свойство Bitmap этой
опции в инспекторе объектов и оказываемся в редакторе
изображения, где загружаем нужную пиктограмму (алгоритм
такой же, как и для командной кнопки Bit Button)
В результате мы получили систему раскрывающихся меню
Посмотреть ->
Как видно из примера, наше меню раскрывается, но при выборе
любой опции ничего не происходит т.к. мы еще не написали
процедуры для обработки событий выбора опций . Этим мы займемся
на следующем уроке, когда будем создавать текстовый редактор
195.
Создание панели статусаОбъектно – ориентированное программирование на DELPHI - 8
196.
Панель статусаПанель статуса (состояния) – Status Bar, как и система раскрывающихся меню
является неотъемлемой частью многих программ и располагается обычно внизу
рабочего окна программы
Компонент StatusBar находится на вкладке Win 32
В нашей программе с меню уже создана панель статуса (точнее полоса
состояния, состоящая из нескольких панелей (из четырех))
Это первая панель полосы состояния
(StatusBar.Panel[0]) – нумерация
панелей начинается с нуля !
Основное свойство панели –
отображаемый в ней текст, например
StatusBar.Panel[1].Text:=‘Время’;
означает, что во второй панели будет
выведен текст ‘Время’
Посмотрите в инспекторе объектов другие свойства StatusBar
197.
Панель статусаДля примера давайте создадим программу с полосой состояния из двух панелей, в
первой из которых отображается текст «Время работы с программой :», а во второй
идет отсчет времени работы с программой
ШАГ 1
Помещаем на форму компонент StatusBar
В инспекторе объектов
раскрываем свойство
Status Bar-a Panels
В редакторе панелей
добавляем 2 панели,
нажимая на
пиктограмму добавления
панели
198.
Панель статусаДля примера давайте создадим программу с полосой состояния из двух панелей, в
первой из которых отображается текст «Время работы с программой :», а во второй
идет отсчет времени работы с программой
ШАГ 1
Помещаем на форму компонент StatusBar
В свойстве первой
панели Text (Panel 0)
пишем текст «Время
работы с программой»
В свойстве Width
(ширина панели)
поставим нужную
ширину для
отображения этого
текста (этот текст
влазит в 200 пк)
199.
Панель статусаДля примера давайте создадим программу с полосой состояния из двух панелей, в
первой из которых отображается текст «Время работы с программой :», а во второй
идет отсчет времени работы с программой
ШАГ 1
Помещаем на форму компонент StatusBar
Для второй панели
(Panel 1) писать ничего
не будем, потому что в
ней будет идти время,
поэтому сделаем это
программно с
использованием
элемента Таймер
200.
Панель статусаШАГ 2
Поместим на форму компонент Таймер, сделаем его тикающим с
частотой 1 сек (Enabled=True, Interval=1000)
При выводе в вторую панель времени
работы программы нам придется
использовать две переменные типа
Дата/Время (TDateTime) – есть такой тип
данных в Delphi, как и других системах
разработки:
В первой переменной (обозначим ее S) –
будет храниться время (системное время
нашего компьютера) в момент старта
программы и изменяться оно при работе
программы не будет
Во второй переменной (обозначим ее d) –
будет храниться текущее время
компьютера, которое будет считываться
по таймеру каждую секунду с времени
операционной системы
А во второй панели (Panel 1) мы будем выводить разницу d и s, которую
преобразуем из типа Дата/Время к строковому типу, соответствующему свойству
Text в панели – получится время работы с программой, идущее с нуля
201.
Панель статусаШАГ 2
Рассмотрим программный код:
Объявим переменные d
и s типа Дата/Время
(TDateTime)
В процедуре создания
формы (запуска
приложения) присвоим s
текущее время
(зафиксируем момент
времени)
202.
Панель статусаШАГ 2
Рассмотрим программный код:
В процедуре OnTimer
с каждым «тиканьем»
таймера переменной
d будем присваивать
текущее время
операционной
системы. Ясно, что
значение d будет
увеличиваться
каждую секунду
Во второй панели
выводим разницу
идущего времени (d)
и стоящего на месте
(s), преобразуя эту
разницу из формата
времени (Time) в
формат строки
(string)
203.
Панель статусаШАГ 3
Сохраняем, компилируем и запускаем программу.
Мы видим, что во второй панели идет отсчет
времени работы с программой
Запускаем ->
При создании программного кода нам часто приходится
использовать различные типы данных. Также часто
приходится делать преобразование типов из одних в другие.
Поэтому удобно иметь под рукой справочник по работе с
различными типами данных, строками, файлами, памятью –
все это есть в прилагаемом к курсу справочнике «Типы
данных в Delphi»
204.
Использование диалоговОбъектно – ориентированное программирование на DELPHI - 8
205.
Использование диалоговА сейчас давайте познакомимся с организацией диалога компьютера и пользователя
в процессе работы программы.
Очень часто в программах применяются диалоговые окна – для подтверждения,
предупреждения, информирования пользователя – такие диалоги часто показывает
нам операционная система Windows
Сейчас мы научимся создавать такие диалоговые окна
Надо сказать, что здесь мы будем использовать функции самой операционной
системы Windows (WinApi)
Однако в Delphi существует большой набор компонент, реализующих стандартные
функции открытия (файла), сохранения, поиска ... но с ними мы познакомимся на
следующем уроке при создании собственного текстового редактора
206.
Использование диалоговИтак, диалоги:
Рассмотрим 3 способа организации диалогов
1. procedure ShowMessagе
2. function MessageDlg
3. function MessageBox
1 способ (ShowMessage)
Самый простой способ – использование процедуры ShowMessage (показать
сообщение)
Формат записи:
procedure ShowMessage(const Msg: String) – здесь const – выражение
строкового типа, которое будет «выдано» в сообщении (и конечно оно
записывается в апострофах). Этот способ не только самый простой, но и
функционально ограниченный, т.к. в окне диалога есть только кнопка ОК, которая
закрывает окно и больше никаких функций
Мы будем рассматривать диалоги на примере программы решения
квадратного уравнения, созданного нами на 5 уроке, где используем все три
вида диалогов для информации пользователя, обработки исключений и пр.
207.
Использование диалоговДавайте сначала запустим программу и посмотрим действие диалогов, а затем
разберем код
Запустите программу и попробуйте:
1. Ввести в Edit любого коэффициента не цифру, а букву
2. Нажать кнопку НАЙТИ, не введя все коэффициенты
Запустить ->
Мы видим, что выходят сообщения
• при ошибочном введении
буквы вместо цифры
при нажатии кнопки
НАЙТИ, если не все
коэффициенты введены
208.
Использование диалоговРассмотрим код
1. Попытка ввести в Edit вместо числа букву (страховка пользователя от
случайного нажатия «не той» клавиши
Здесь мы использовали событие Edit1.KeyPress (нажатие клавиши, когда фокус
ввода имеет Edit1) – находим его в инспекторе объектов
А дальше понятно:
Делаем проверку условия
Если нажата клавиша, соответствующая одной из множества русских или
латинских букв, то ничего не вводим (Key:=#0 – вспомните кодовую таблицу
ASCII) и выдаем сообщение, что надо ввести цифру
209.
Использование диалоговРассмотрим код
2. Попытка нажать кнопку НАЙТИ, когда еще не все коэффициенты введены
Здесь при нажатии кнопки НАЙТИ проверяется, а не является один из Edit-ов для
ввода коэффициентов «пустым»
Если ДА, то напоминаем о необходимости ввести все коэффициенты
ИНАЧЕ следует алгоритм расчета корней уравнения ...
210.
Использование диалогов2 способ (MessageDlg)
function MessageDlg (const Msg: String; DlgType: TMsgDlgType; Buttons:
TMsgDlgButtons; HelpCtx: integer): integer,
Здесь:
const Msg: String – это текст нашего сообщения
DlgType: TMsgDlgType –это вид диалогового окна
Название параметра
Значок
mtWarning
mtError
mtInformation
mtConfirmation
mtCustom
Значка нет
HelpCtx: integer – ставьте ноль
Buttons - кнопки диалогового
окна: mbYes, mbNo, MbCancel,
mbRetry, mbAbort, mbOk,
mbIgnore, mbHelp, mbAll,
mbYesToAll, mbNoToAll - словом,
все, какие ни есть и даже
готовые комбинации:
mbYesNoCancel, mbOKCancel,
mbYesAllNoAllCancel,
mbAbortRetryIgnore,
bmAbortIgnore.
211.
Использование диалогов2 способ (MessageDlg)
И опять давайте посмотрим пример, а затем разберем код
Запустите программу и попробуйте:
Нажать на кнопку ОЧИСТИТЬ
Запустить ->
В результате мы видим сообщение более функциональное
В сообщении присутствует
значок для привлечения
внимания и уже две кнопки,
дающие возможность выбора
Недостаток: кнопки не
русифицированы
212.
Использование диалоговРассмотрим код
Это текст нашего
сообщения
Ноль означает отказ
от справки
Здесь мы выбрали 2
кнопки: ОК и Cancel
Это вид значка в окне
213.
Использование диалоговРассмотрим код
В этом алгоритме мы
используем case –
выбор (вспомните
Паскаль)
Если нажата кнопка
ОК, то очищаем все
Edit -ы
Если нажата кнопка
Cancel, закрываем
диалог
214.
Использование диалогов3 способ (MessageBox)
function MessageBox (Parent: HWnd; Txt, Caption: PChar; TextType: Word):
Integer
Здесь:
Parent: HWnd– "хозяин" (окно, владеющее сообщением)
Txt - 'текст сообщения'
Caption – заголовок диалогового окна
TextType – параметр, определяющий вид иконки в окне и какие в нем будут
кнопки, например (некоторые из вариантов):
Значение TextType
Вид иконки
Кнопки
0
-
ОК
1
-
ОК, Отмена
2
-
Стоп, Повтор, Пропустить
3
-
Да, Нет, Отмена
19
Error
Да, Нет, Отмена
34
Confirmation
Стоп, Повтор, Пропустить
36
Confirmation
Да, Нет
51
Warning
Да, Нет, Отмена
52
Warning
Да, Нет
53
Warning
Повтор, Отмена
66
Information
Стоп, Повтор, Пропустить
215.
Использование диалогов3 способ (MessageBox)
Преимущества этого способа в том, что кнопки окна «русские» (точнее говоря – они
соответствуют языковой версии установленной на компьютере Windows)
Запустите программу и попробуйте:
Нажать на кнопку ВЫХОД
Запустить ->
В результате мы видим
сообщение с русскими кнопками
– это удобнее
216.
Использование диалоговРассмотрим код
Это текст
нашего
сообщения
Указываем, что
«хозяином» диалога
является форма
Form1
Это заголовок
диалогового окна
Это параметр,
указывающий, что в
окне 2 кнопки (ДА и
НЕТ) и иконка
предупреждения
52
Warning
Да, Нет
217.
Использование диалоговРассмотрим код
Если выбрана кнопка
ДА (Yes), то форма 1
закрывается
Если выбрана кнопка
НЕТ (no), диалог
прерывается
И на этом мы закончим знакомство с диалогами
218.
ИТОГИ УРОКА:На этом уроке мы научились создавать выпадающее меню
программы, использовать панель статуса, а также
познакомились с созданием диалогов пользователя и
программы
НА СЛЕДУЮЩЕМ УРОКЕ:
ООП на Delphi – 9:
Мы познакомимся с стандартными диалогами и создадим
свой текстовый редактор
219.
Объектно –ориентированное
программирование на
DELPHI - 9
@ Краснополянская школа № 1 Домнин Константин Михайлович 2006 год
220.
DELPHI - 9На этом уроке:
Мы научимся использовать
стандартные диалоги и создадим свой
текстовый редактор
Вопросы:
1. Использование стандартных
диалогов
2. Создаем текстовый редактор
221.
Использованиестандартных диалогов
Объектно – ориентированное программирование на DELPHI - 9
222.
Использование стандартных диалоговСреда разработки Delphi содержит несколько компонент для организации
стандартных диалогов для открытия, поиска, сохранения, выбора шрифтов,
настройки печати и т.д.(все эти диалоги мы хорошо знаем, работая с операционной
системой Windows)
Рассмотрим некоторые, наиболее часто применимые диалоги, и способы
их использования
Компоненты для организации диалогов находятся на вкладке ДИАЛОГИ,
и все они являются НЕВИЗУАЛЬНЫМИ, т.е. не видны на форме
(вспомните компонент таймер)
223.
Использование стандартных диалоговКомпонент
«Открыть
файл»
Предназначен
для создания
окна открытия
файла
Создание
окна для
выбора
шрифтов
Компонент
«Сохранить
файл как ...»
Предназначен
для создания
окна
сохранения
файла
Компоненты
для открытия
и сохранения
рисунков
224.
Использование стандартных диалоговКомпонент для
выбора цветов
Компоненты
настройки
печати и
установки
принтера
Компонент
для поиска
Компонент
замены текста
Компонент
установки
параметров
страницы
225.
Использование стандартных диалоговКак и все объекты Delphi, компоненты организации стандартных диалогов имеют
свои свойства и методы
Рассмотрим свойства компонента OpenDialog и его использование, остальные
компоненты имеют с ним много общего
Основные свойства:
1) FileName (выбранный пользователем файл)
2) Filter (позволяет выбрать нужный тип файлов)
3) DefaultExt (расширение файла по умолчанию)
4) InitialDir (начальный каталог в момент открытия
диалога)
5) Options (куча различных опций для диалогового
окна)
Рассмотрите внимательно набор свойств
компонента OpenDialog в инспекторе объектов,
при этом используйте справочник
А.Я.Архангельского, приложенный к курсу
226.
Использование стандартных диалоговОсновной метод, которым производится обращение к любому диалогу — Execute
Стандартное обращение к диалогу имеет вид:
if <имя компонента-диалога>.Execute then
<операторы, использующие выбор пользователя>;
Рассмотрим применение OpenDialog и SaveDialog на простом примере:
Создадим форму, на которой будет компонент Memo и кнопки ОТКРЫТЬ (для
открытия файла в Memo) и СОХРАНИТЬ (для сохранения содержимого Memo в
каком-то файле)
227.
Использование стандартных диалоговШАГ 1
Создадим форму и поместим на нее:
Memo для отображения текста (файла)
Компоненты OpenDialog и SaveDialog
Три кнопки: ОТКРЫТЬ, СОХРАНИТЬ, ВЫХОД
Для компонента Memo
установим :
свойство Scrollbars –
ssVertical (чтобы в Memo была
вертикальная полоса
прокрутки)
свойство WordWrap –
True (разрешим перенос слов в
Memo)
228.
Использование стандартных диалоговШАГ 2
Запишем код кнопок:
Кнопка ОТКРЫТЬ
Этот оператор вызывает
диалог, проверяет, выбрал
ли пользователь файл (если
выбрал, то функция
Execute возвращает true),
после чего имя выбранного
файла
(OpenDialog1.FileName)
сохраняется в переменной
FName и файл загружается
в текст Memo1 методом
LoadFromFile
Но для того, чтобы
процедура работала, нужно
объявить строковую
переменную FName
229.
Использование стандартных диалоговШАГ 2
Запишем код кнопок:
Кнопка СОХРАНИТЬ
Первый из этих операторов
присваивает свойству
FileName компонента
SaveDialog1 запомненное
имя файла. Это имя по
умолчанию будет
предложено пользователю
при открытии диалога
Сохранить как....
Следующий оператор
открывает диалог и, если
пользователь выбрал в нем
файл, запоминает новое имя
файла и сохраняет в файле
с этим именем текст
компонента Memo1
Кнопка ВЫХОД
Без комментариев
230.
Использование стандартных диалоговШАГ 3
Для компонента OpenDialog1 установим фильтр на типы
файлов и расширение открываемых файлов по
умолчанию
Раскроем в инспекторе объектов свойство Filter
компонента OpenDialog1
Укажем тип файла (слева) и его
расширение (справа) – сейчас в
диалоговом окне открытия файла
будут отображаться только файлы с
расширением *.txt
Если записать еще строку,
например Вордовcкие | *.doc , то
мы можем выбрать и вордовские
файлы (MS Word)
Установим тип файлов, отображаемых при запуске
диалога по умолчанию - txt
231.
Использование стандартных диалоговШАГ 3
Все то же сделаем и для компонента SaveDialog:
установим фильтр на типы файлов и расширение
сохраняемых файлов по умолчанию
ШАГ 4
Сохраняем и запускаем программу: программа уже умеет
открывать файлы и сохранять их (и конечно редактировать
содержимое файла)
Попробовать ->
Итак, мы рассмотрели стандартные диалоги, их свойства и методы.
Следующий вопрос – создание своего текстового редактора
232.
Создаем текстовыйредактор
Объектно – ориентированное программирование на DELPHI - 9
233.
Создаем текстовый редакторИтак, давайте попробуем создать свой текстовый редактор, подобный
WINDOWS-кому Блокноту (немного попроще)
Это виндовский блокнот
По его подобию наш текстовый
редактор должен иметь:
• Memo для отображения текста
файлов и печати
• Главное меню с раскрывающимися
опциями
• Функции создания, открытия и
сохранения файла
• Добавим статусную строку для
отображения некоторой информации
234.
Создаем текстовый редакторШАГ 1
Запускаем Delphi и размещаем на форме следующие компоненты:
1. MainMenu. Создадим с помощью дизайнера систему раскрывающихся меню
2. Memo для отображения текста. Установим свойство Align в AlClient (при
этом Memo будет занимать всю клиентскую область формы, что нам и
надо)
235.
Создаем текстовый редакторШАГ 1
Запускаем Delphi и размещаем на форме следующие компоненты:
3. OpenDialog. Установим фильтр для текстовых файлов и расширение по
умолчанию txt
4. SaveDialog. Также установим фильтр для текстовых файлов и расширение по
умолчанию txt
5. StatusBar. Сформируем в полосе
состояния 3 панели с помощью
редактора панелей
236.
Создаем текстовый редакторШАГ 1
Запускаем Delphi и размещаем на форме следующие компоненты:
Если скомпилировать проект, то к нас получается примерно
такая программа
237.
Создаем текстовый редакторШАГ 2
Сейчас опишем события выбора разделов меню (открыть,
создать, сохранить как ...)
1. СОЗДАТЬ. Для этого щелкнем по разделу создать и
запишем код:
Очищаем наш Memo, если
в нем что-то есть
В заголовке формы пишем
«Текстовый редактор»
238.
Создаем текстовый редакторШАГ 2
Сейчас опишем события выбора разделов меню (открыть,
создать, сохранить как ...)
2. ОТКРЫТЬ. Для этого щелкнем по разделу создать и
запишем код:
Запускаем диалог открытия
файла и, если в нем файл
выбран (<> ‘ ‘), то ...
Загружаем в наш Memo
текст из выбранного файла
В заголовке формы
записываем имя
выбранного в диалоге
файла + «Текстовый
редактор»
239.
Создаем текстовый редакторШАГ 2
Сейчас опишем события выбора разделов меню (открыть,
создать, сохранить как ...)
3. СОХРАНИТЬ КАК ....
Запускаем диалог
сохранения файла и
если файл выбран (дано
имя), то ...
Сохраняем в выбранном
файле содержимое Memo
В заголовке формы
записываем имя выбранного
(заданного нами) в диалоге
файла + «Текстовый
редактор»
240.
Создаем текстовый редакторШАГ 2
Сейчас опишем события выбора разделов меню (открыть,
создать, сохранить как ...)
3. ФОРМАТ -> ШРИФТ ....
Запускаем диалог
выбора формата
шрифта
Присваиваем шрифту
Memo тот шрифт, который
выбран нами в FontDialog
241.
Создаем текстовый редакторШАГ 2
Сейчас опишем события выбора разделов меню (открыть,
создать, сохранить как ...)
3. СПРАВКА - > О ПРОГРАММЕ ....
Открываем в модальном
режиме форму с
информацией о
программе
Не забудьте создать новую
форму (Form2) и разместить на
ней информацию о программе
Познакомьте формы друг с
другом. (Смотри предыдущие
уроки о многоформенных
приложениях)
242.
Создаем текстовый редакторШАГ 3
В панелях статусной строки можно вывести нужную
информацию (например дату, время, тип файла, режим работы
...) – см. предыдущие уроки
ШАГ 4
И последнее: сохраняем все, компилируем и запускаем
появившийся EXE - файл
Запускаем ->
Итак, мы создали свой текстовый редактор, который многое умеет и
вполне может заменить входящий в Windows блокнот. А сейчас
можете открыть MS Word и посмотреть на него глазами программиста:
Да! Чрезвычайно мощный текстовый редактор (не зря в Microsoft хлеб
едят ...)
На этом наш урок закончен
243.
ИТОГИ УРОКА:На этом уроке мы познакомились с организацией стандартных
диалогов и создали свой текстовый редактор
НА СЛЕДУЮЩЕМ УРОКЕ:
ООП на Delphi – 10:
Мы рассмотрим использование в Delphi баз данных и
создадим содержащее их приложение
244.
Объектно –ориентированное
программирование на
DELPHI - 10
@ Краснополянская школа № 1 Домнин Константин Михайлович 2006 год
245.
DELPHI - 10На этом уроке:
Мы научимся использовать базы
данных и создадим использующее их
приложение
Вопросы:
1. Использование компонент Delphi
для работы с базами данных
2. Создаем приложение,
использующее базу Access
246.
Использование компонентDelphi для работы с
базами данных
Объектно – ориентированное программирование на DELPHI - 10
247.
Использование компонент Delphi для работы с базами данныхРазработка приложений, использующих базы данных – сложный процесс. К тому
же существует множество различных баз данных, как локальных, так и удаленных,
со своими драйверами и компонентами.
Изучение всего этого займет очень много времени. Существует масса учебников и
пособий по различным базам данных.
На этом уроке мы рассмотрим только использование и простые действия с
локальными базами данных Paradox и MS Access. Предполагается, что Вы знаете
основные определения и устройство реляционных баз данных, работу в Access, в
противном случае сначала изучите этот материал ( можно использовать цикл
презентаций по базам данных, выложенных на сайте «Базы данных – 1,2,3,4,5»)
К презентации приложены электронные учебники по базам данных для
углубленного изучения :
Delphi 7 - БД (там вы найдете, как создать простую базу данных Paradox,
воспользовавшись входящей в состав Delphi утилитой Borland Database
Desktop)
Электронный учебник по базам данных (Шумаков) – здесь подробно
рассмотрены все основные функции работы с базами данных в Delphi
248.
Использование компонент Delphi для работы с базами данныхНачнем с обзора некоторых компонент, которые понадобятся нам для создания
приложения, использующего локальную базу данных
1. Компонент TTable –
основной компонент базы,
через который идет
обращение к конкретной
таблице конкретной базы
данных. Находится он на
вкладке BDE
2. Компонент TData Sourse –
он связывает наш компонент
TTable с конкретной таблицей
на нашем диске. Находится на
вкладке Доступ к Данным
249.
Использование компонент Delphi для работы с базами данныхНачнем с обзора некоторых компонент, которые понадобятся нам для создания
приложения, использующего локальную базу данных
3. Компонент TDBGrid –
визуальный компонент,
который отображает таблицу и
ее содержимое на форме (без
него мы не сможем увидеть
таблицу, хотя программно
можем с ней работать).
Находится на вкладке
Управление данными
2. Компонент TDBNavigator –
визуальный компонент,
который позволяет
осуществлять навигацию по
базе. Находится на вкладке
Управление данными
250.
Использование компонент Delphi для работы с базами данныхПосле знакомства с компонентами начнем создание приложения, причем в
качестве базы данных используем готовую базу с описанием и фото рыбок,
имеющуюся в Delphi в качестве демонстрационной базы
Начнем по шагам
ШАГ 1
Положим на форму компонент TTable с
вкладки BDE. Сейчас присоединим его к
конкретной базе данных на нашем диске
Для этого раскрываем свойство
DataBaseName и выбираем базу данных
DBDEMOS – это демонстрационная база,
входящая в состав Delphi
Дальше раскроем свойство TableName и
выберем среди нескольких входящих таблиц
файл biolife.db – это и есть таблица,
которая содержит описание и фото рыбок
251.
Использование компонент Delphi для работы с базами данныхШАГ 2
Ложим на форму компонент TDataSourse –
он будет связывать визуальные компоненты,
которые отображают содержимое таблицы с
компонентом TTable
Находим свойство DataSet у этого
компонента и в выпадающем списке
указываем на Table1
ШАГ 3
Ставим на форму компонент DBGrid
– он и будет отображать нашу
таблицу с рыбками
В свойстве DataSourse выбираем
источник данных – DataSourse1
252.
Использование компонент Delphi для работы с базами данныхШАГ 4
А сейчас делаем таблицу активной: у компонента TTable
устанавливаем свойство Active в True.
В результате в DBGrid мы видим содержание таблицы :
Можно откомпилировать приложение и поработать с таблицей – мы можем
просматривать и редактировать эту базу
ШАГ 5
Для удобства работы с таблицей
поместим на форму элемент
DBNavigator с вкладки Управление
данными и в инспекторе объектов
поставим его свойство DataSource
указывающим на тот же
DataSource1, что и для DBGrid сейчас работать с таблицей стало
гораздо удобнее
253.
Использование компонент Delphi для работы с базами данныхШАГ 6
В Delphi имеется ряд компонент для отображения содержания отдельных ячеек
– DBEdit, DBMemo, DBImage и др. Все они находятся на вкладке Управление
данными . Поместим их на форму и свяжем с определенными столбцами
таблицы: для каждого из этих компонентов укажем свойство DataSourse в
DataSourse1, а свойство DataField, следующим образом:
DBEdit - ассоциируем с полем Common_name
DBMemo - ассоциируем с полем Notes
DBImage - ассоциируем с полем Graphic
DBImage,
отображающий
ячейку с рисунком
рыбки
DBMemo,
отображающий
ячейку с описанием
DBEdit ,
отображающий
ячейку с именем
254.
Использование компонент Delphi для работы с базами данныхСейчас можно откомпилировать программу и поработать с нашей базой данных:
в компонентах DBEdit, DBMemo, DBImage отображаются соответственно имя,
описание и рисунок рыбки
! У Вас должен быть установлен Delphi (а с ней автоматически и
демонстрационная база рыбок), чтобы программа работала
Поработать ->
Итак, мы создали программу для работы с демонстрационной ( с готовой)
базой данных, но сами базу мы не создавали
Для создания базы данных (таблицы) существует программа Database
Desktop, входящая в состав Delphi
Использование этой программы подробно и по шагам рассмотрено в учебнике
Delphi 7 - БД , прилагаемом к презентации
Следующим шагом будет создание программы, использующей
базу MS Access. Создание самой базы в Access мы рассмотрели ранее
(см. презентации «Базы данных 1,2,3,4,5»)
255.
Создаем приложение сбазой данных MS Access
Объектно – ориентированное программирование на DELPHI - 10
256.
Создаем приложение с базой данных AccessДля работы с базой данных сначала создадим ее в MS Access. Пусть это
будет телефонный справочник с полями ФИО, ТЕЛЕФОН и АДРЕС
Заполним таблицу произвольными значениями и сохраним ее. Сейчас можно
приступать к созданию приложения. Нашим приложением будет электронный
телефонный справочник с функциями поиска по номеру или по
фамилии
257.
Создаем приложение с базой данных AccessРассмотрим структуру нашей программы:
О программе
(Form2)
Главная (стартовая) форма
(Form1)
Поиск по фамилии
Просмотр всей базы
Поиск по номеру
(Form3)
(Form5)
(Form4)
База
телефонов
MS Access
258.
Создаем приложение с базой данных AccessКак видно из схемы, наше приложение содержит 5 форм и опирается на базу Ms Access
ШАГ 1
Создадим 5 форм, познакомим их, назовем заголовки
форм, выберем размеры и стили форм
ШАГ 2
На главной (стартовой) форме (Form1) расположим компоненты:
1. Кнопка – Поиск по фамилии
2. Кнопка – Поиск по номеру
3. Кнопка – Посмотреть всю базу
4. Кнопка – Справка
5. Кнопка – Выход
6. Манифест XP
Для всех кнопок запишем
соответствующий код (открытие
соответствующей формы –
ShowModal, выход – close)
259.
Создаем приложение с базой данных AccessШАГ 3
Разработаем дизайн формы Справка
Расположим на ней
информацию по
работе с
программой с
помощью
соответствующих
компонент и кнопку
Закрыть, для
которой запишем
код выхода
260.
Создаем приложение с базой данных AccessШАГ 4
Разрабатываем форму Поиск по фамилии. Эта форма должна
быть связана с базой телефонов MS Access
Для связи формы с Access используем следующие компоненты:
1. Вместо TTable, которую мы
использовали в первом примере, для
связи с Access служит «свой»
компонент – ADOTable, который
находится на вкладке ADO.
Помещаем его на форму и
привязываем к таблице телефонных
номеров. Для этого раскрываем
свойство ConnectiоnString и
нажимаем кнопку Build
261.
Создаем приложение с базой данных Access2. Открывается окно связи с
данными, в котором на
вкладке Поставщик
данных выбираем
Microsoft Jet 4.0 Ole DB
Provider
3. Переходим на вкладку
Подключение и выбираем
через кнопку обзора нашу
базу (телефон.mdb)
Здесь же можно проверить
подключение, задать
пароль и права доступа к
базе
262.
Создаем приложение с базой данных Access4. Устанавливаем свойства ADOTable:
TableName – в раскрывающемся списке
выбираем нашу таблицу ( у меня она
названа Таблица1
IndexFieldName – ФИО (данные будут
сортированы по полю ФИО)
Свойство Active ставим в True
5. Помещаем на форму
элемент DataSourse и его
свойство DataSet
устанавливаем через
раскрывающийся список в
ADOTable1
263.
Создаем приложение с базой данных Access6. Ложим на форму компонент для
отображения данных таблицы – DBGrid,
у которого источником данных
выбираем DataSourse1 – и мы сразу
видим, что в DBGrid появились
данные из нашей таблицы
7. Помещаем на форму
кнопки Найти и
Выход, Label
«Введите фамилию»
и поле Edit для ввода
фамилии
8. В результате мы имеем
следующую форму
Свойство Visible у DBGrid – а сделаем False, чтобы при открытии формы поиска
не было видно содержимого таблицы
264.
Создаем приложение с базой данных AccessСейчас запишем код кнопки Найти
Если фамилия не
введена, то выводим об
этом сообщение
Ищем по
полю ФИО
Образец для поиска
берем из Edit – a, в
который вводится
фамилия для поиска
Параметр поиска,
позволяющий искать
по первым буквам
фамилии
Если фамилия введена,
то видимость грида
делаем True,
активизируем ADOTable и
осуществляем поиск по
полю ФИО с помощью
метода Locate
(Методы поиска описаны в
Электронном учебнике
по базам данных
(Шумаков), прилагаемом
к презентации )
265.
Создаем приложение с базой данных AccessИ последнее – код кнопки Выход
Очищаем Edit
для ввода
фамилии
Делаем грид
невидимым
Закрываем
форму
266.
Создаем приложение с базой данных AccessШАГ 5
Разрабатываем форму Поиск по номеру.
Для этой формы размещаем точно такие же компоненты, связываем их с
таблицей – т.е выполняем те же шаги, что и с формой Поиск по фамилии
(смотри шаг 4)
Аналогичны и коды кнопок Найти и Выход. Отличие в коде кнопки Найти в
том, что в качестве поля поиска указываем поле «Телефон»
267.
Создаем приложение с базой данных AccessШАГ 6
Последняя форма отображает всю базу, поэтому DBGrid на ней
можно развернуть на всю форму, а саму форму сделать побольше.
Естественно те же компоненты для отображения данных (ADOTable,
DataSourse и DBGrid, но кнопок никаких не ставим
268.
Создаем приложение с базой данных AccessШАГ 7
Все сохраняем, компилируем и пробуем работу приложения
Пробуем ->
269.
Создаем текстовый редакторИтак, на этом уроке мы попытались использовать в Delphi две
простые базы данных на базе Paradox и Access.
Повторюсь, что баз данных множество со своими компонентами,
драйверами … Мы ничего не сказали о клиент – серверных
приложениях – заблудиться там очень просто, а найтись сложно
Для углубления Ваших знаний на сайте выложены 2 пособия:
Delphi 7 - БД (там вы найдете, как создать простую базу данных Paradox,
воспользовавшись входящей в состав Delphi утилитой Borland Database
Desktop)
Электронный учебник по базам данных (Шумаков) – здесь
подробно рассмотрены все основные функции работы с базами данных в
Delphi
Множество информации по базам данных Вы найдете и В Интернет
На этом наш урок закончен
270.
ИТОГИ УРОКА:Мы научились использовать простые локальные базы данных
и создали использующие их приложения
НА СЛЕДУЮЩЕМ УРОКЕ:
ООП на Delphi – 11:
Мы создадим свой калькулятор, подобный встроенному в
ОС Windows
271.
Объектно –ориентированное
программирование на
DELPHI - 12
272.
DELPHI - 12На этом уроке:
Мы создадим тестирующую систему
для проверки знаний учащихся
Вопросы:
Весь урок мы посвятим созданию
тестирующей системы
273.
Создание тестирующейсистемы
Объектно – ориентированное программирование на DELPHI - 12
274.
Создание тестирующей системы275.
Создание тестирующей системыРассмотрим структуру нашей программы:
О программе
(Form2)
Главная (стартовая) форма
(Form1)
Поиск по фамилии
Просмотр всей базы
Поиск по номеру
(Form3)
(Form5)
(Form4)
Файл
Файл
вопросов
ответов
276.
Создание калькулятораШАГ 1
Итак, начнем:
Разместим на форме нужные нам
компоненты:
Кнопки цифр и
действий (Вместо
обычных кнопок Button
возьмем кнопки
BitButton – т.к на них
можно менять цвет
шрифта, а на обычных
кнопках Windows не дает
это сделать)
На кнопках сделаем
соответствующие
надписи, которые
раскрасим через
свойство Font кнопки
277.
Создание калькулятораШАГ 4
Сохраняем все, компилируем и смотрим результат
Смотрим ->
Итак, мы создали свой простой, но работоспособный калькулятор.
Конечно же, у него еще есть много необработанных исключений
(глюков) – попробуйте их выявить и исправить.
А пока наш проект закончен, присвоим ему версию 1.000. Понятно,
что функциональность программы можно значительно расширить до
уровня инженерного калькулятора и это Вам уже под силу –
пробуйте !
На этом наш урок закончен
278.
ИТОГИ УРОКА:На этом уроке мы создали Windows - приложение - свой
калькулятор и научились обрабатывать исключительные
ситуации
НА СЛЕДУЮЩЕМ УРОКЕ:
ООП на Delphi – 12:
Мы рассмотрим создание тестирующей системы
279.
Объектно –ориентированное
программирование на
DELPHI - 13
@ Краснополянская школа № 1 Домнин Константин Михайлович 2006 год
280.
DELPHI - 13На этом уроке:
Мы познакомимся с компонентами
для работы с графикой и создадим свой
графический редактор
Вопросы:
1. Введение в графику
2. Создаем свой графический
редактор
281.
Введение в графикуОбъектно – ориентированное программирование на DELPHI - 13
282.
Введение в графикуДля работы с графикой в Delphi есть много средств. Рассмотрим некоторые из
них.
У многих объектов Delphi есть свойство Canvas, что в переводе означает
холст. Если у объекта имеется такое свойство, то это значит, что на нем
можно рисовать. (Заметим, что работая в любой программе, да и в самой
операционной системе Windows, мы видим только графику – все кнопочки,
окна, инструменты … это всего лишь нарисованные, например на форме
объекты (вернее их картинки) и при нажатии на кнопку она перерисовывается,
показываясь нажатой)
Для рисования в Delphi есть два основных инструмента:
• Pen (карандаш) – для рисования линий
• Brush (кисть) – для раскраски объектов
У каждого из этих инструментов есть дополнительные свойства ( например
цвет карандаша, толщина линии, тип линии )
283.
Введение в графикуРассмотрим рисование линий, прямоугольников, эллипсов:
1. Линия
Сначала откроем событие для формы – OnPaint и запишем там код:
Устанавливаем
цвет карандаша красный
Устанавливаем
толщину
карандаша в 5
пикселей
Проводим линию
до точки с
координатами
200,20
Устанавливаем
карандаш в точку
с координатами
10,20
284.
Введение в графикуРассмотрим рисование линий, прямоугольников, эллипсов:
1. Линия
Проводим
зеленую линию
Проводим
синюю линию
В результате мы получаем на форме
следующую картинку:
285.
Введение в графикуРассмотрим рисование линий, прямоугольников, эллипсов:
2. Прямоугольник, эллипс
Выбираем
произвольный
цвет и рисуем
прямоугольник
Выбираем
произвольный
цвет и рисуем
эллипс
В результате мы
получаем на
форме
следующую
картинку:
Посмотреть ->
286.
Создаем свойграфический редактор
Объектно – ориентированное программирование на DELPHI - 13
287.
Создаем свой графический редакторА сейчас, используя средства Delphi, попробуем создать
графический редактор наподобие Paint (конечно менее
функциональный), однако умеющий следующее:
• Рисовать линии, прямоугольники, эллипсы и
просто карандашом
• Делать заливку фигур цветом
• Использовать ластик
• Выбирать толщину и цвет линий
• Открывать графические файлы и сохранять
нарисованное
Рассмотрим создание редактора по шагам:
288.
Создаем свой графический редакторШАГ 1
Откроем Delphi разместим на форме следующие элементы:
Компонент
MainMenu
Сформируем следующее меню программы:
289.
Создаем свой графический редакторШАГ 1
Откроем Delphi разместим на форме следующие элементы:
Компонент
OpenPictureDialog
для открытия
изображений
Компонент
ColorDialog для
выбора цвета
рисования
Компонент
SavePictureDialog
для сохранения
рисунков
Манифест XP для
стильности
290.
Создаем свой графический редакторШАГ 1
Откроем Delphi разместим на форме следующие элементы:
Компонент ToolBar
(инструментальная
панель для
размещения кнопок)
7 кнопок
(SpeedButton) для
выбора инструмента
рисования. Нанесем
на кнопки картинки
SpinEdit для выбора
толщины линии
В свойствах установим
min толщину линии
– 1 (пикс), а max 20
Сделаем так, чтобы из всех кнопок нажатой могла быть только одна (при
нажатии любой кнопки остальные становились отжатыми). Для этого
выделяем все кнопки. Установим свойство выделенных элементов
AllowAllUp в значение True.Свойство GroupIndex поставим равным 1.
Свойство Down для всех кнопок должно быть равно False, только для
отжатой кнопки инструмента карандаш свойство Down должно быть
равно True.
291.
Создаем свой графический редакторШАГ 1
Откроем Delphi разместим на форме следующие элементы:
Размещаем на форме компонент ScrollBox, на
который ложим компонент Image
(ScrollBox – это подложка для Image. Зададим
ему белый цвет и растянем его на все
свободное место)
У элемента Image свойство Align сделаем в
AlClient, чтобы он вписался полностью в
ScrollBox, а свойство Stretch –в True
292.
Создаем свой графический редакторШАГ 2
Займемся описанием событий:
Сначала давайте подумаем, какие события возникают, когда мы рисуем. Ясно,
что почти все мы делаем мышкой. Например для рисования линии мы ставим
курсор в какое-то место, нажимаем левую кнопку мыши, перемещаем мышь до
нужного места и отпускаем ее.
Таким образом в процессе рисования мы используем 3 основных события:
1. OnMouseDown (нажатие кнопки мыши)
2. On MouseMove (перемещение мыши)
3. OnMouseUp (отпускание кнопки мыши)
Рисование карандашом
При нажатии на кнопку (OnMouseDown) карандаш должен встать на точку с
координатами курсора , при перемещении мыши с нажатой клавишей (On
MouseMove ) должна рисоваться линия, при отпускании кнопки мыши
(OnMouseUp) должно прекратиться рисование.
Поэтому для рисования карандашом необходим код в каждом из событий для
мыши OnMouseDown, On MouseMove, OnMouseUp.
293.
Создаем свой графический редакторШАГ 2
Рассмотрим код рисования карандашом:
(Нажатие кнопки мыши - MouseDown)
Введем переменную
логического типа r – это
своеобразное
разрешение/запрет на
рисование. Если r – true,
то рисовать можно,
иначе нельзя.
Зачем это?
При нажатии кнопки
мыши даем добро на
рисование
Если нажата кнопка
рисования карандашом,
то на Image переходим к
точке с координатами
курсора
Мы можем перемещать
мышь (MouseMove) с
нажатой или
отпущенной клавишей: в
первом случае должно
рисоваться (r=true), а во
втором не должно
(r=false)
294.
Создаем свой графический редакторШАГ 2
Рассмотрим код рисования карандашом:
(Перемещение мыши - MouseMove)
Проверяем,
разрешено ли
рисовать
Если рисовать можно и нажата кнопка
рисования карандашом, то
устанавливаем цвет карандаша,
соответствующий выбранному в
ColorDialoge и проводим линию
295.
Создаем свой графический редакторШАГ 2
Рассмотрим код рисования карандашом:
(Отпускание мыши - MouseUp)
Проводим линию до
координаты отпускания мыши
и устанавливаем запрет на
рисование
296.
Создаем свой графический редакторШАГ 3
Стирание с помощью ластика
Что мы делаем при стирании ластиком? На самом-то деле мы ничего не
стираем, а рисуем точно так же, как и карандашом, только белым цветом.
Получается эффект стирания.
Это значит, что при нажатии кнопки ластика ему присваивается цвет
белый, толщина линии берется из значения SpinEdita, а код рисования
точно такой же.
ШАГ 4
Рисование прямоугольника, эллипса, заливка фигур
Не будем вдаваться в подробности рисования
прямоугольника, эллипса и заливки фигур – здесь
используются соответствующие методы Canvas: Rectangle,
Ellipse, FloodFill – посмотрите внимательно код,
соответствующий этим операциям в примере, приложенном к
презентации
297.
Создаем свой графический редакторШАГ 5
Выбор цвета
При нажатию на кнопку цвета запускается ColorDialog, где мы выбираем
нужный цвет и присваиваем его карандашу и кисти
(см. предыдущие уроки о диалогах)
298.
Создаем свой графический редакторШАГ 6
Очистка холста
Конечно, можно очистить рисунок с помощью ластика, но это долго,
поэтому при выборе меню Правка -> Очистить происходит очистка всего
холста.
И это опять обман, как и в случае с ластиком. На самом деле мы ничего
не очищаем, а рисуем белый прямоугольник размерами чуть больше
размера поля рисования – создается эффект очистки
Устанавливаем толщину линии = 1, цвет линии =
белый и рисуем прямоугольник с размерами на 5
пикселей больше размеров поля для рисования
(Image)
299.
Создаем свой графический редакторШАГ 7
Меню Файл -> Создать
Цвет кисти делаем белым, рисуем прямоугольник чуть больше Image, меняем
заголовок формы и устанавливаем начальный цвет карандаша - черный
ШАГ 8
Меню Файл -> Открыть
Диалоги рассмотрены нами ранее довольно подробно, поэтому комментарии излишни
300.
Создаем свой графический редакторШАГ 9
Меню Файл -> Сохранить
Тоже без комментариев
ШАГ 10
Меню Файл -> Выход – метод Close
ШАГ 11
Меню Помощь -> О программе
Здесь мы должны создать форму «О программе», познакомить с ней форму
редактора и открыть методом ShowModal
301.
Создаем свой графический редакторНа этом и остановимся. Давайте запустим наш редактор и порисуем.
Порисовать ->
Итак, мы создали свой графический редактор, где использовали графические
возможности Delphi, и не только графические – нам пригодились знания из
всех прошлых уроков Конечно это очень простой редактор с элементарными
функциями. Однако его разработка позволила нам понять суть работы с
графикой в Delphi. Ну а дальше можно наращивать его возможности,
добавлять новые функции – для этого надо читать литературу по Delphi,
разбираться и пробовать.
Мы же на этом закончим наш урок
302.
ИТОГИ УРОКА:На этом уроке мы научились работать с графикой в Delphi и
создали свой графический редактор
На этом цикл презентаций о
программировании в среде Delphi
закончен
programming