Реферат: Первый урок первая программа 8 Сохранение и запуск проекта на выполнение 11 Сохранение проекта 11



МОУ Межшкольный учебный комбинат № 1 г. Кирова

Объектно-ориентированное,
визуальное программирование
в Delphi на уроках
“ИНФОРМАТИКА и ИКТ”

2007 г.

Данная книга составлена для учителей и учеников, изучающих предмет “Информатика и ИКТ”. Здесь представлены уроки работы в среде Delphi 7 для всех разделов программирования основного базового курса. Уроки составлены так, что ученик, выполняя поурочные задания, научится основам программирования и познакомится с основными конструкциями объектно-ориентированного программирования языка Delphi 7 (Pascal). Кроме этого обучающийся самостоятельно может выполнить задания и подготовиться к уроку. Примеры программ, используемые в книге, представлены в электронном виде.

Данный сборник составил преподаватель МУК №1 г. Кирова Бурков В.С. для учителей информатики и ИКТ.

Оглавление

Введение 5

Некоторые специальные символы: 5

Знакомство со средой DELPHI 6

^ Первый урок – первая программа 8

Сохранение и запуск проекта на выполнение 11

Сохранение проекта 11

Запуск проекта на выполнение 11

Примерные задания для первого урока 12

Вопросы для самоконтроля 13

^ Второй урок – вычисление математических выражений 14

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

Примерные задания для второго урока 16

Вопросы для самоконтроля 17

^ Третий урок – ввод целочисленных данных 18

Компонент Edit 18

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

Примерные задания для третьего урока 19

Вопросы для самоконтроля 20

^ Четвёртый урок – использование оператора ветвления 21

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

Примерные задания для третьего урока 22

Вопросы для самоконтроля 24

^ Пятый урок – использование Shape для “рисования” 25

Как убрать часть графического примитива: 28

Примерные задания для пятого урока 28

Вопросы для самоконтроля 28

^ Шестой урок – использование Timer для “движения” объектов на форме 29

Объект Timer 29

Как заставить графический объект “двигаться”? 30

Примеры программ на движение 30

^ Первая программа – движение слева направо 30

Вторая программа – движение ракет вверх с использованием Shape, картинки и панели 33

Как выполнить движение по диагонали? 35

Примерные задания для шестого урока 35

Вопросы для самоконтроля 36

^ Седьмой урок – цикл с параметром (For) 37

Вопросы для самоконтроля 38

Восьмой урок – цикл с предусловием (While … do) 39

Вопросы для самоконтроля 40

^ Девятый урок – цикл с постусловием (Repeat … Until) 41

Вопросы для самоконтроля 42

Приложения 43

Приложение № 1
Некоторые параметры объектов и их использование
43

Приложение № 2
Математические операции и некоторые функции
в Pascal-е и Delphi 44

Приложение № 3
Стандартные математические функции Object Pascal 45

Приложение № 4
Типы числовых данных в Pascal-е и Delphi 46

Целые типы 46

Вещественные типы 46

Приложение № 5 Стандартные конструкции языка Pascal 47
Введение

Значительно более мощные системы Windows, OS/2 и другие привели к повсеместному вытеснению старой “доброй” DOS (MS DOS, DR DOS). В этих системах программировать было существенно сложнее, чем в MS-DOS. Разработчики систем программирования, и, прежде всего такие корпорации, как Microsoft и Borland, не замедлили выпустить соответствующие средства. Так Borland уже в 1991 году, т. е. сразу после появления Windows 3.1, выпускает Turbo Pascal for Windows, а в 1992 - усовершенствованную версию этой системы программирования – Borland Pascal with Objects 7.0. Эти первые специализированные инструменты требовали основательного знания Windows и были сложны в освоении. В 1993 году Microsoft выпустила первую визуальную среду программирования Visual Basic, и программирование для Windows стало даже проще, чем программирование для MS-DOS. В ответ на это Borland в 1995 году выпустила первую версию Delphi, а затем, с интервалом в 1 год, - еще 4 версии: 2, 3, и 5. Наконец, в середине 2001 г. выпускается 6-я версия, затем, через некоторое время, 7. Восьмая версия ориентирована на платформу Net и по виду отличается от стандартных. Здесь будет использована версия Delphi 7 для разбора заданий. Все эти примеры можно так же использовать и в 8-й версии, но состав компонентов и список их параметров будет иметь другой вид и находиться в другом месте.

Эта книга рассчитана на тех, кто уже познакомился со стандартными конструкциями языка Pascal. Если вы ещё не знакомы с ними, то в приложении № 5 они кратко описаны.
^ Некоторые специальные символы:
 – замечания, нужно запомнить.
Знакомство со средой DELPHI

Для загрузки Delphi нужно запустить файл Delphi32.exe из папки Bin каталога Delphi7. Можно также это сделать через кнопку “Пуск” (см. рисунок № 1).







рис. № 1


После загрузке Delphi вы увидите, примерно, следующее:











рис. № 2

Перечислим некоторые объекты и окна, с которыми вам придётся постоянно работать: окно формы, окно свойств и процедур-событий, линейка палитры компонентов, компоненты (объекты, интерфейсные элементы) конкретной закладки, кнопка запуск приложения ( или F9).

На форме выставляются интерфейсные элементы, в окне Inspector (см. рис. № 2) на вкладке Properties (свойства) можно установить их начальные значения для параметров. В приложении № 1 перечислены часто встречающиеся свойства компонентов.

Палитра компонентов содержит компоненты как стандартные, так и созданные независимыми пользователями (не поставляются фирмой Borland). На уроках мы познакомимся с некоторыми компонентами у палитр Standard, Additional, Win32 и System и возможными применениями их в программах.
^ Первый урок – первая программа

Задание:

На вашей форме после запуска должна появиться примерно следующая информация (см. рис. № 3):



рис. № 3

Естественно ФИО, класс, группа должны соответствовать вашим данным. При нажатии на кнопку “ВЫХОД” приложение должно закрыться.

Примерный порядок действий:

З


апускаем Delphi;

С помощью стандартных манипуляций с окном формы перемещаем его в центр экрана и изменяем размеры; Это должно выглядеть, примерно, так (см. рис № 4):

рис. № 4

Для замены заголовка Form1 на ваши фамилию, имя, отчество и урок № 1 нужно воспользоваться окном инспектора (Object Inspector) и закладкой параметры – Properties (см. рис № 5).

Если данного окна не оказалось на экране, то нажмите F11.

Выберите строчку Caption и замените Form1 на ваш текст. Данное свойство присутствует во многих компонентах, где есть надписи, заголовки.

 – нельзя менять Form1 в параметре Name. Значение свойства Name для любых компонентов является идентификатором и используется для обращения к объекту в коде программы. Вам пока не надо менять стандартные значения.


объект








Вкладка “свойства”



Выбранный параметр




рис. № 5

П


осле наших действий можно увидеть изменённую форму (см. рис № 6)

рис. № 6

Сейчас мы должны научиться выставлять компонент Label, на котором можно писать в параметре Caption любой текст. Выполним надпись ФИО в две строки: первая – фамилия, вторая – имя и отчество. Для этого:

Щелкните по иконке Label (см рис. № 7) в линейке интерфейсных элементов Standard.





^
метка

кнопка

рис. № 7

Компонент будет выделен, т.е. как бы вдавлен.

Выделите прямоугольную область под метку на форме. Можно не беспокоиться о размере, т.к. для метки параметр AutoSize (по размеру) по умолчанию равен True (истина).

В параметре Caption напишите свою фамилию и через пробел имя (см. рис. № 5). На форме отобразится введенный вами текст.

В параметре Font (шрифт) установите нужный вам размер и цвет текста.

В параметре WordWrap замените False на True – текст будет отображаться в несколько строк. Измените размер компонента Label1 так, чтобы текст отобразился согласно заданию, т.е. в две строки и переместите его на нужное место.

Повторите это для строки с “классом” и “первой программы”. Здесь параметр WordWarp можно оставить по умолчанию – False.

К



рис. № 8
омпонент кнопка (см. рис. № 7) выставляем на форму и, так же как для метки, определяем надпись “выход”, размер шрифта, положение и размер.

 – цвет фона и шрифта не изменяется для компонента Button вкладки Standard.

Что бы вставить действия на щелчок, дважды кликните на кнопке – Button1. Вы войдёте в код процедуры Click для данной кнопки (рис. № 9).



рис. № 9

В пустой строке между begin и end; напишите команду Close; – это команда закрытия активной формы. У вас должно получиться следующее:

Begin

Close; { место записи команд языка Pascal }

End;

Close не обязательно писать с заглавной буквы. Delphi понимает команды – английские слова, в любом сочетании, например: заглавная, прописная, заглавная … и т.д.

Сейчас нужно сохранить проект и форму, а затем запустить проект. Как это делать вы узнаете в следующем подразделе.
^ Сохранение и запуск проекта на выполнение Сохранение проекта
Возможны как минимум три варианта:

Меню File, строка Save All с подсказкой горячих клавиш Shift+Ctrl+S;

Щёлкнуть по иконке двух дискет ;

Shift+Ctrl+S.

После любого из этих вариантов в первый раз Delphi попросит вас сохранить с начала форму – Unit1 c расширением pas, а затем проект – Project1 c расширением dpr (Delphi project). В дальнейшем запросов на ввод имени проекта и формы не будет. Кнопка двух дискет будет недоступной, если не было никаких изменений ни в проекте, ни на/в форме. Если кнопка двух дискет будет доступна, следовательно, перед запуском нужно сохранить изменения – это хороший стиль отладки.

 – Сохраняйте каждый свой проект в отдельной папке.

 – Не переименовывайте пока стандартные названия проекта и форм.
^ Запуск проекта на выполнение
Возможны минимум три варианта:

Меню Run, строка Run с подсказкой горячих клавиш F9;

Щёлкнуть по иконке зелёного треугольника ;

F9.



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

^ Контрольный пример:

Грубым дается радость.

Нежным дается печаль.

Мне ничего не надо,

Мне ничего не жаль.


Сергей Есенин


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

^ Контрольный пример:

Вторник

1 – геометрия

2 – английский язык

3 – физика

4 – литература

5 – история


Школа N 15, 9 А класс


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

По тропинке на север до первой развилки.

Выбрать левую развилку и идти до поляны.

Поляну обойти по кромке леса слева и идти до развилки.

Выбрать левую тропинку и, пройдя 100 шагов, повернуть налево.

Пройти 200 шагов и окажитесь у озера.

^ Контрольный пример:

Инструкция для ослика Иа:

Выбрать южную часть озера.

По дороге пройти 200 шагов и т.д.


Название формы – ваши фамилия и имя, затем, через тире, программа № 1.
^ Вопросы для самоконтроля
Какой язык используется в Delphi?

Как запустить Delphi?

Изменяя какой параметр можно вывести различные надписи?

Как назначить действие клик – щелчок по кнопке?

Для запуска формы (проекта) нужно …

Для изменения параметров шрифта (цвет, размер, начертание, гарнитура) нужно …



^ Второй урок – вычисление математических выражений
Delphi можно использовать как калькулятор, хотя это не совсем удачная идея. Это всё равно, что на КАМАЗе перевозить спичечный коробок. Для этого есть специальные программы. На этом занятии мы познакомимся с вычислением математических выражений. Сначала посмотрите на таблицу соответствия математических операций и языка Pascal в приложении № 2. В языке Pascal и соответственно в Delphi нет операции возведения в степень. Это большое упущение. Можно воспользоваться математической формулой:

XY = exp(Y * Ln(X)),

например, 23 = exp(3 * ln(2)).

Так как надстрочные символы в коде программы не напишешь, то для степени при подсказках используют символ титла – ^. В нашем примере для отображения в метке 23 нужно записать 2 ^ 3.

Таблица с математическими операциями и некоторыми функциями
в Pascal-е и Delphi находятся в конце урока.

Рассмотрим первый пример из первого задания и h) из третьего (смотри в конце урока). Третий пример на вычисление корня пятой степени

При запуске формы можно увидеть следующее:



Можно заметить, что количество Label на одну больше, чем вариантов. Появилась кнопка “вычислить”, после нажатия на которую выводятся результаты вычисления математических выражений. Обычно номер задания указывается с закрывающей круглой скобкой.
^ Код программы

Рассмотрим код процедуры Click для кнопки “вычислить”:

procedure TForm1.Button1Click(Sender: TObject);

var

x : real; { вещественный тип переменной }

begin

x := 28.1 - 36.8 / (50.08 + 49.92);

Label2.Caption := 'a) ' + floattostr(x);

x := sqrt((89.6 - 133.72 / 33.3)/(888.8 + (48 -

396.1 * 1.1)));

Label3.Caption := 'h) ' + floattostr(x);

Label4.Caption := '3) 345025251 ^ (1/5) = '

+ floattostr(exp(1/5 * ln(345025251)));

end;

В выражениях используются вещественные числа, поэтому переменная Х объявлена как вещественное число. Для перевода вещественного числа в строку воспользуемся функцией FloatToStr()так как в параметре Caption компонента Label данные строкового типа.

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

 после вычисления первого примера скопируйте две строки и замените номер Label и математическое выражение (Ctrl+C, затем Ctrl+V).

 Для вывода нескольких строковых данных (переменных, констант) воспользуемся операцией сцепления (конкатенации) для строковых данных. Эта операция “+”. С помощью её данные как в паровозике образуют состав, который воспринимается как одна строковая величина.

 Если в математическом выражении есть обыкновенная дробь, то числитель и знаменатель заключите в круглые скобки. Правда, это не обязательно делать в некоторых случаях, но в большинстве случаях очень даже помогает.
^ Примерные задания для второго урока



Дмитрию задали на дом решить несколько примеров по математике. Помогите ему проверить свои вычисления:

28,1 – 36,8 : (50,08 + 49,92)

54 x 3465 – 9025 : 95 + 360 272 : 712

(32,24 x 0,32 + 366,032 x 0,1) : 23

62,92 : 5,2 – 4,2 x (7 – 6,3)

6,56 x 4,36 – 3,36 : (0,736 + 2,464)

7225 : 85 + 64 x 2345 – 248 878 : 613

Ответы: a) 27,732 b) 187 521 c) 2,04 d) 9,16 e) 27,5516 f) 149 759


Марианну попросили составить программу вычисления следующих математических выражений:









Ответы: а)  25,52 b)  197,476 c)  –2,13 d) 3


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






































Ответы: а)  22,822 b)  553,124 c)  41,072 d)  64,817 e)  8.768

f)  62.284 g)  1.435 h)  0.413
^ Вопросы для самоконтроля



Какой математической операции нет в Delphi?

Как изменить порядок выполнения операций Delphi?

В каком порядке выполняются операции одного приоритета?

Назовите стандартные математические функции в Delphi для извлечения квадрата из числа и получения квадрата числа.

Сколько “строк” можно использовать для записи математического выражения в Delphi?

Как обозначаются операции деления и умножения в Delphi?
^ Третий урок – ввод целочисленных данных
Пусть нам нужно выполнить следующую задачу:

Маша и Даша собирали грибы. Маша принесла a грибов, а Даша – b грибов. Сколько всего грибов собрали девочки?

Данные для переменных a и b нужно ввести с клавиатуры.

После запуска форма может выглядеть так:


^ Компоненты Edit1 и Edit2 для ввода данных

Метка Label5 пока невидима.

После щелчка на кнопке ОПРЕДЕЛИТЬ появится результат


П


о щелчку на кнопке ОПРЕДЕЛИТЬ появится результат:
^ Компонент Edit

Находится на вкладке Standard. Используется для ввода текстовых данных через параметр Text.


После изменения данных в любом из компонентов Edit можно снова пересчитать результат, нажав на кнопку ОПРЕДЕЛИТЬ.

 – при создании данного приложения мы будем опираться на знания и опыт предыдущего задания – первой программы. В дальнейшем разбираем только новый материал и, возможно, некоторые особенности задания.
^ Код программы

Рассмотрим код процедуры Click для кнопки “определить”:


procedure TForm1.Button1Click(Sender: TObject);

var

a, b : integer;

begin

// В переменные a и b заносим целочисленные

//значения

a := StrToInt(Edit1.Text);

b := StrToInt(Edit2.Text);

Label5.Caption := IntToStr(a + b);

end;

^ Примерные задания для третьего урока



Катя нашла A грибов, а Слава B. Среди этих грибов оказалось C несъедобных. Сколько съедобных грибов было собрано?

^ Контрольный пример:

А = 64, В = 89, С = 17, ответ: 136


Монгольский воин за 7 секунд выпускает обычную стрелу, а за 10 – зажженную. За какое время воин выпустит А обычных и В зажженных стрел?

^ Контрольный пример:

4 обычных, 5 зажженных – 78 секунд


У фермера дяди Вася в загоне паслись коровы и гуси. Каждый час дядя Вася заходил в загон и подсчитывал количество голов и общее количество ног и лап, не считая людские головы и конечности. После этого он сверял результаты со своими цифрами. Помогите подсчитать фермеру дяде Васе количество голов и количество ног и лап, если известно, что на данный момент в загоне А коров и В гусей.

Контрольный пример:

12 коров, 4 гуся, ответ: 16 голов и 56 ног и лап.
^ Вопросы для самоконтроля



С помощью какого компонента ввели числа в этой программе?

Какие данные хранит компонент Edit?

Какой функцией воспользовались для получения целых чисел?

Какой функцией воспользовались для получения из целых чисел строковой величины?

Как поменять цвет шрифта в Label и Edit?

Как создать процедуру Click (щелчок по кнопке)?
^ Четвёртый урок – использование оператора ветвления
До этого урока все алгоритмы программ (процедур) были линейными, т.е. все команды выполнялись друг за другом. В данном уроке рассмотрим задачи, в которых нужно, в зависимости от условия, выполнить различные действия. Перед вами следующая задача:

Константину нужно вычислить модуль введенной числовой величины (расстояние от начала координат) с помощью программы. Он не знает стандартной функции Pascal abs. Помогите ему это сделать (использовать стандартную функцию нельзя).

^ Контрольный пример:

-17,78 ответ: 17,78 3 ответ: 3

После запуска форма может выглядеть так:




Место для вывода результатов.
Пока не видно



По щелчку на кнопке ОПРЕДЕЛИТЬ появится результат:



После изменения данных в любом из компонентов Edit можно снова пересчитать результат, нажав на кнопку ОПРЕДЕЛИТЬ.
^ Код программы

Процедура Click для кнопки ОПРЕДЕЛИТЬ с дополнительным заданием

procedure TForm1.Button1Click(Sender: TObject);

begin

a := strtofloat(edit1.Text); { получаем число }

if a < 0 then { не полная форма оператора
ветвления }

a := -a;

Label5.Caption := floattostr(a);

end;


Дополнительное задание для тех, кто сделал задачу о модуле числа:

Вывести сообщение в следующем виде после нажатия на кнопку ОПРЕДЕЛИТЬ – “модуль числа | число | = модель числа”

Пример: модуль числа | -17,78 | = 17,78

 – символ | на кнопке, где \ / на английской раскладке

^ Примерные задания для третьего урока



Для созревания картофеля нужно 90 дней. Прошло N дней после посадки. Можно ли выкапывать картофель?

^ Контрольный пример:

N – 67, ответ: рано.

N – 90, ответ: можно выкапывать.


*Усложним предыдущую задачу.

До 85 – “рано”, от 85 до 89, “в принципе можно”, от 90 – 110 дней – “время выкапывать”, более 110 дней – “можешь все проспать”.


Молодой богатырь Данило Забияка решил мир посмотреть и себя показать. Взял с собой он сумму в A рублей (не менее 50). Вот подъезжает он к перекрестку и видит камень, на котором написано, – “налево пойдешь – пол суммы потеряешь и еще 20 рублей, направо пойдешь – утроишь свою сумму”. Данило подумал, что это вранье, да и не пристало добру молодцу кого-то бояться и поехал налево. Все случилось пописанному. Вернулся Данило к перекрестку и решил поехать направо. Снова все получилось, как написано на камне. Интересно – в проигрыше ли оказался Данило?

^ Контрольный пример:

A = 60 Ответ: в проигрыше

A = 200 Ответ: в выигрыше


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

^ Контрольный пример:

24,50 13, 48 ответ: первая сестра 5,51

20, 30 ответ: вторая сестра 5

Коля, Вася и Маша решили купить в столовой комплексный обед (фиксированный набор продуктов, следовательно, фиксированная цена одного обеда) стоимостью A рублей. Смогут ли они купить обед на каждого, если у Коли B рублей, Васи С рублей, а у Маши D рублей?

^ Контрольный пример:

A = 19,50; B = 4,8; C = 23,1; D = 20,1 Ответ: нет

A = 19,50; B = 14,8; C = 23,1; D = 20,1 Ответ: да

Коля, Вася и Маша собирали ягоды. После окончания сбора Маша решила отдать свои ягоды тому, кто меньше собрал ягод. Если же мальчики собрали одинаковое количество (в литрах), то разделить ягоды поровну. Сколько стало ягод у Коли и Васи, если ребята соответственно собрали A, B и C литров ягод?

^ Контрольный пример:

3 4,5 4 ответ: 7 4,5

4,5 4,5 6 ответ: 7,5 7,5


Кролик и бобер участвовали в одной команде по переноске воды из одного блюда в другое, используя соответственно чашку и кружку. Их команда проиграла. Кролик обвинил бобра в том, что тот медленно бегал. На это бобер ответил, что в кружке он за один раз переносил больше воды. Помогите им определить, кто из них прав, если кролик A раз вылил воду из чашки, бобр B раз из кружки? В кружку входило по C мл, а в чашку по D мл.

Контрольный пример:

A = 5 B = 3 C = 50 D = 70 – прав кролик

A = 5 B = 4 C = 50 D = 70 – прав бобёр

A = 7 B = 5 C = 50 D = 70 – оба ошиблись
^ Вопросы для самоконтроля



Какая функция переводит строковые данные в вещественные?

Какая функция переводит строковые данные в целые?

Какая функция переводит вещественные данные в строковые?

Какая функция переводит целые данные в строковые?

Для запуска формы нужно …?

Для сохранения формы и проекта нужно …?

Где нельзя ставить символ “;” в операторе ветвления?

Сколько операторов можно записать после ключевых слов then и else?
^ Пятый урок – использование Shape для “рисования”
На этом уроке попробуем рисовать графическими примитивами (Shape), которые есть в Delphi. Данный инструмент для рисования нормальной картинки, не говоря уже о хорошей, использовать, конечно, очень трудно. Обычно Shape используется для рисования нестандартных кнопок. Для изучения возможностей попробуем что-нибудь нарисовать.

Для начала познакомимся с графическими примитивами:

Они находятся в закладке Additional, компонент Shape (круг, треугольник, квадрат) – смотри рисунок № 1


компонент


рис. № 1

При щелчке на форме или выделении области после выбора Shape появится прямоугольник – один из графических примитивов. Всего их шесть:

В компоненте Shape выбираем параметр Shape (смотри рисунок № 2). Появится список графических примитивов:

stCircle – круг;

stEllipse – эллипс;

stRectangle – прямоугольник;

stRoundRect – прямоугольник с закруглёнными углами;

stRoundSquare – квадрат с закруглёнными углами;

stSquare – квадрат.

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

рис. № 2

В списке нет отрезков, хотя на иконке присутствует треугольник. Горизонтальные и вертикальные отрезки можно получить из прямоугольников, уменьшив высоту или длину до нужного значения.

Каждый графический примитив имеет контур и внутреннюю заливку:

контур – параметр Pen

Параметр Pen имеет четыре подпараметра

(смотри рисунок № 3):

Color – цвет контура, выбираем как обычно;

Mode –

Style – стиль линии, варианты смотри на рисунке № 4, запомни: psSolid – сплошная линия;

Width – толщина линии.





рис. № 3


рис. № 4

заливка – параметр Brush

Параметр Brush имеет два подпараметра:

Color – цвет

Style – стиль заливки



рис. № 5


При выставлении графических примитивов, являющихся вариантами Shape, все они на форме располагаются в порядке создания. Для изменения порядка нужно выполнить следующие действия:

вызвать контекстное меню на объекте;

из полученного списка выбрать строку Control;

из появившегося списка:

Bring to Front – на передний план,

Send to Back – на задний план.


Задание:

Нарисовать картину, содержащую минимум: пять прямоугольников, квадратов; пять кругов, эллипсов; три отрезка; фон формы не стандартный. Картина должна отображать какой-нибудь сюжет.

Пусть у вас получился примерно такой рисунок сразу после запуска программы (смотри рис. № 6):



рис. № 6

На рисунке можно заметить, что одни графические примитивы имеют контур, другие нет, некоторые как бы не полностью нарисованы, например, плавник у рыбы изображен частью эллипса.
^ Как убрать часть графического примитива:
рисуем графический примитив, например, эллипс у рыбки;

накладываем сверху на эллипс другой графический объект так, чтобы он закрывал часть эллипса;

убираем у него контур (psClear для Type в Pen) и выставляем цвет закраски в Brush как цвет фона, на котором нарисован плавник.



^ Примерные задания для пятого урока

Нарисовать картину, содержащую минимум: пять прямоугольников (квадратов); пять эллипсов (кругов); три отрезка; фон формы не стандартный.

Новый год

Лето

Морская или речная тема

Космос

Природа

Твоя комната
^ Вопросы для самоконтроля



Какие графические фигуры можно выбрать в Shape?

За что отвечают параметры Pen и Brush?

Как убрать контур?

Как нарисовать горизонтальную линию?

Как нарисовать вертикальную линию?

В каких границах находится Shape?

Что такое передний и задний планы объекта?



^ Шестой урок – использование Timer для “движения” объектов на форме Объект Timer

Познакомимся с новым компонентом Timer, который поможет нам выполнить движение объектов на форме. Timer находится на вкладке System и выглядит как часы (смотри рис. № 1).


вкладка

таймер


рис. № 1

Данный компонент является невидимым при выполнении программы, поэтому его можно разместить на форме в любом месте.

Рассмотрим параметры таймера и единственную процедуру (рис. № 2):


Активность таймера

Значение в миллисекундах,

1 сек = 1000 миллисекунд


рис. № 2

^ Enabled – логическая величина, следовательно имеет два значения: true и false. Если значение равно true, то через каждые миллисекунды интервала таймера (interval) выполняется процедура данного таймера. При значении false вызов процедуры таймера не происходит.

Interval – задается в миллисекундах. Использование параметра описано выше.

В закладке инспектора объекта Events – процедуры-события, находится всего одна процедура, которая вызывается, если параметр Enabled равен true.

Для движения объекта на форме воспользуемся возможностями таймера, применив, например, следующий алгоритм:

начальное значение параметра активности таймера равно false (чтобы графический объект при запуске формы не “поехал”);

интервал пусть будет 100 миллисекунд;

в процедуре-событии опишем движение объекта, используя параметры top и left для движения по вертикали или горизонтали;

запуск работы таймера по событию click на кнопке начало.
^ Как заставить графический объект “двигаться”?

Как это осуществить? Рассмотрим следующий пример: выполнить движение некоторого графического объекта слева направо.

Пусть картинка как на рисунке № 3 – пять объектов Shape: четыре круга и один прямоугольник. Кроме этого на форме есть кнопка “старт”, и таймер.



рис. № 3

Зададим начальные значения параметрам компонента Timer1 (смотри алгоритм);

В процедуре click для кнопки запишем команду:

Timer1.Enabled := true;

Включим таймер при нажатии на кнопку;

Определяем Shape, у которого самая “правая” часть картинки. В нашем примере это будет Shape3;

Записываем команды в процедуре таймера для движения картинки.



^ Примеры программ на движение Первая программа – движение слева направо

Просмотрите код Unit1.pas для нашего примера:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ExtCtrls, StdCtrls, Buttons;

type

TForm1 = class(TForm)

Timer1: TTimer; { таймер }

Shape1: TShape; { первое }

Shape2: TShape; { колесо }

Shape3: TShape; { второе }

Shape4: TShape; { колесо }

Shape5: TShape; { прямоугольник }

BitBtn1: TBitBtn; { кнопка с цветным текстом,}

{ находится в закладке Additional}

procedure BitBtn1Click(Sender: TObject);

procedure Timer1Timer(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;


var

Form1: TForm1;

implementation


{$R *.dfm}


// Таймер активен, следовательно, через каждые

// 100 миллисекунд будет происходить вызов процедуры // Timer1Timer

procedure TForm1.BitBtn1Click(Sender: TObject);

begin

Timer1.Enabled := true;

end;


// Ориентируемся по Shape, у которого самая

// правая граница.

// В нашем примере это Shape3.

// Правая граница Shape3 = левый отступ + длина

// шейп, т.е. Shape3.Left + Shape3.Width

// Timer1 активен пока не достигли почти правой

границы формы

procedure TForm1.Timer1Timer(Sender: TObject);

begin

// 30 пикселей не доходить до правой границы формы

if Shape3.Left + Shape3.Width <

Form1.Width – 30 then

begin

// передвигаем вправо на 3 пикселя все части

// движущейся картинки

Shape1.Left := Shape1.Left + 3;

Shape2.Left := Shape2.Left + 3;

Shape3.Left := Shape3.Left + 3;

Shape4.Left := Shape4.Left + 3;

Shape5.Left := Shape5.Left + 3;

end

else

// достигли правой границы движения –

// выключаем таймер

timer1.Enabled := false;

end;


end.


При движении по вертикали будем использовать параметр Top – отступ от верхней границы формы. Значение высоты объекта находится в параметре Height.


Разберите пример использования нескольких таймеров, а так же применение “подкладки” (Panel) под картинкой для простоты кодирования движения. В примере есть рисунок, который был нарисован в Paint и вставлен как объект Image из вкладки Additional. Для связи картинки с Image в параметре Picture


Выбор картинки – щелчок на …

Для вставки картинки на форме

Параметр отображения картинки в указанной области

Прозрачный или нет белый фон картинки
рис. № 4
^ Вторая программа – движение ракет вверх с использованием Shape, картинки и панели

Задание: три ракеты стартуют по очереди (старт следующей при достижении верхней границы), с помощью кнопок можно заставить стартовать ракеты раньше.

Расположение объектов на форме можно рассмотреть на рисунке № 5:

первая ракета из Shape;

вторая из таких же шейпов на панели (Panel находится в Standard);

третья нарисована в Paint и вставлена через Image.

После нажатия на кнопку старт она становится недоступной – параметр Enabled становиться равным false.

рис. № 4




рис. № 5

Просмотрите как работает программа с тремя ракетами.


var

Form1: TForm1;

step : byte = 3; { шаг смещения ракеты равен 3 пикселям }

implementation


{$R *.dfm}


// Пример движения графических объектов: Shape, Panel, Image

// Вторая ракета стартует после выхода на орбиту первой,

// то же самое и со второй.

// Вторая и третья ракета могут стартовать и при нажатии

// кнопок "старт"

// Обращение к объекту Timer происходит каждый раз по

// прошествии милисекунд, указанных в параметрах таймера.

// Если таймер имеет начальное значение параметра Enabled

// равным true, то он стартует одновременно с активизацией

// формы, иначе (значение false) только тогда, когда

// параметр Enabled будет равен true.


// Процедура движения стандартных графических образов -
// Shape

procedure TForm1.Timer1Timer(Sender: TObject);

begin

if Shape4.Top > 50 then { пока не долетели - сдвиг на шаг }

begin

Shape1.Top := Shape1.Top - step;

Shape2.Top := Shape2.Top - step;

Shape3.Top := Shape3.Top - step;

Shape4.Top := Shape4.Top - step;

Shape5.Top := Shape5.Top - step;

Shape6.Top := Shape6.Top - step;

Shape7.Top := Shape7.Top - step;

Shape8.Top := Shape8.Top - step;

end

else

begin

timer1.Enabled := false; { выключить таймер - стоп }

// Вызов процедуры-события Click на кнопке Button2

// для автоматического старта второй ракеты

Form1.Button2.Click; { старт второй ракеты }

end;

end;


// Кнопка старт для первой ракеты

procedure TForm1.Button1Click(Sender: TObject);

begin

timer1.Enabled := true; { включить таймер - старт }

Button1.Enabled := false; { кнопка старт неактивна }

end;


// Процедура движения панели (Panel)

procedure TForm1.Timer2Timer(Sender: TObject);

begin

if Panel1.Top > 50 then { пока не долетели - сдвиг на шаг }

Panel1.Top := Panel1.Top - step

else

begin

timer2.Enabled := false; { выключить таймер - стоп }

// Вызов процедуры-события Click на кнопке Button3

// для автоматического старта третьей ракеты

Form1.Button3.Click; { старт третьей ракеты }

end;

end;


// Кнопка старт для второй ракеты

procedure TForm1.Button2Click(Sender: TObject);

begin

timer2.Enabled := true; { включить таймер - старт }

Button2.Enabled := false; { кнопка старт неактивна }

end;


// Процедура движения графического образа (Image)

procedure TForm1.Timer3Timer(Sender: TObject);

begin

if Image1.Top > 50 then { пока не долетели - сдвиг на шаг }

Image1.Top := Image1.Top - step

else

timer2.Enabled := false;


end;


// Кнопка старт для третьей ракеты

procedure TForm1.Button3Click(Sender: TObject);

begin

timer3.Enabled := true; { включить таймер - старт }

Button3.Enabled := false; { кнопка старт неактивна }

end;

end.
^ Как выполнить движение по диагонали?

Для движения графического объекта по диагонали нужно в процедуре таймера одновременно выполнить смещение как влево (вправо), так и вниз (вверх).
^ Примерные задания для шестого урока

Нарисовать картину на форме или панели (минимум из 6-и Shapes) и выполнить движение:

направо, затем вверх из левого нижнего угла формы;

налево, затем вверх из правого нижнего угла формы;

вниз, затем вправо из левого верхнего угла формы;

вниз, затем влево из правого верхнего угла формы

Нарисовать в Paint:

Бабу Ягу в ступе,

космический корабль;

автомобиль;

вертолёт

и

а) выполнить движения как в вариантах 1 – 4;

б) выполнить движение по диагонали в направлении:

левый нижний – правый верхний;

левый верхний угол – правый нижний;

правый нижний угол – левый верхний;

правый верхний угол – левый нижний



^ Вопросы для самоконтроля



Какие новые компоненты Вы узнали?

Расскажите алгоритм движения картинки сверху вниз.

Почему параметр Enabled в Timer должен быть true при движении?

Зачем при достижении конца движения нужно выключить (сделать неактивным) Timer?

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

Как выполнить движение графического объекта из правого нижнего угла в левый верхний?

Опишите алгоритм программы движения графического объекта по периметру.
^ Седьмой урок – цикл с параметром (For)
Познакомимся с новым конструкцией – цикл с параметром:

For <1> := <2> to | downto <3> do

<4>;

1 – переменн
еще рефераты
Еще работы по разное