- •Розділ 1. Об’єктно-орієнтоване програмування
- •Тема 1.1. Візуальне програмування.
- •Тема 1.2. Приклади та застосування інкапсуляції, успадкування, поліморфізму.
- •Тема 1.3. Бібліотека візуальних компонентів vcl та її базові класи.
- •1. Клас tWinControl.
- •2. Клас tСustomControl.
- •3. Клас tGraphicControl.
- •Тема 1.4. Обробка виняткових ситуацій.
- •1. Використовування виняткових ситуацій.
- •2. Протоколювання виняткових ситуацій.
- •3. Коди помилок у виняткових ситуаціях.
- •4. Виняткова ситуація eAbort. Функція Assert.
- •Розділ 2. Мова програмування Object Pascal.
- •Тема 2.1. Середовище Delphi.
- •Тема 2.2. Елементи мови Object Pascal.
- •1. Коментарі.
- •2. Логічні вирази.
- •Тема 2.3. Типи даних, процедури та функції.
- •1. Вказівники та динамічна пам'ять. Динамічна пам'ять
- •Вказівники
- •Виділення і звільнення динамічної пам'яті
- •Процедури і функції для роботи з динамічною пам'яттю
- •Тема 2.4. Управляючі структури Object Pascal.
- •Розділ 3. Програмування в середовищі Delphi.
- •Тема 3.1. Застосування списків. Способи запису/читання зі списків.
- •Є списком CheckBox елементів.
- •Тема 3.2. Масиви.
- •1. Пошук мінімального (максимального) елементу масиву.
- •2. Пошук в масиві заданого елементу.
- •Тема 3.3. Робота з файлами.
- •Тема 3.4. Типи даних визначені програмістом.
- •1. Показники.
- •2. Динамічні змінні.
- •Тема 3.5. Графічні програми.
- •1. Бітові образи.
- •2. Мультиплікація.
- •Властивості компоненту Timer
- •Тема 3.6. Приклади застосування анімацій у Delphi.
- •Тема 3.7. Рекурсія.
- •1. Крива Гільберта.
- •2. Пошук шляху.|колії|
- •Значення властивостей компоненту stringGrid1
- •3. Пошук найкоротшого шляху.|колії|
- •Тема 3.8. Компоненти для інтернету. Компонента tSocketConnection
- •Розділ 4. Бази даних.
- •Тема 4.1. Види баз даних. Структура та зв’язки між таблицями. Бази даних
- •Класифікація баз даних
- •Структура бази даних
- •Модель бази даних в Delphi
- •Тема 4.2. Модифікація структури таблиці в bde.
- •1. Зміна структури таблиці.
- •2. Встановлення перевірок правильності даних.
- •3. Завдання вторинних індексів.
- •Тема 4.3. Об’єкти відображення даних бази даних Delphi.
- •1. Класифікація компонентів відображення даних.
- •2. Елемент керування тdbGrid.
- •3. Компонент tdbEdit.
- •4. Компонент tdNavigator.
- •Тема 4.4. Обчислювальні поля і поля підстановки в Delphi.
- •1. Створення поля підстановки (поля синхронного перегляду).
- •2. Обчислювальні поля.
- •Тема 4.5. Компонента tdbEdit.
- •Тема 4.6. Переміщення по записам таблиці. Набір методів і властивостей tDataSet. Огляд
- •Клас tDataSet
- •Відкриття і закриття DataSet
- •Тема 4.7. Налаштування фільтрів.|
- •Тема 4.8. Приклади застосування пошуку.
- •Тема 4.9. Поєднання різних видів пошуку.
- •Тема 4.10. Типи даних та пошук в діапазоні.
- •Список літератури
2. Мультиплікація.
Під мультиплікацією зазвичай|звично| розуміється рухомий і змінний малюнок. У простому випадку малюнок може тільки|лише| рухатися|сунути| або тільки|лише| мінятися.
Як було показано вище, малюнок може бути сформований з|із| графічних примітивів (ліній, кіл, дуг, багатокутників і т. д.). Забезпечити переміщення малюнка задоволено просто: треба спочатку вивести малюнок на екран, потім через деякий час стерти його і знову вивести цей же малюнок, але|та| вже на деякій відстані від його первинного|початкового| положення|становища|. Підбором часу між виводом|висновком| і видаленням|віддаленням| малюнка, а також відстані між старим і новим положенням|становищем| малюнка (кроку переміщення), можна добитися того, що у спостерігача складатиметься враження, що малюнок рівномірно рухається|суне| по екрану.
Наступна|така| проста програма, текст якої приведений в лістингу, а вид форми – на малюнку, демонструє рух кола від лівої до правої межі|кордону| вікна програми.
Форма програми Рухоме коло
Лістинг. Рухоме коло
unit mcircle_;
interface|
uses|
Windows|, Messages|, SysUtils|, Classes|
Graphics|, Controls|, Forms|
Dialogs|, ExtCtrls|, StdCtrls|;
type|
TForm1 = class(TForm) Timer1: TTimer;
procedure Timer1Timer(Sender: TObject};
procedure FormActivate(Sender: TObject);
private|
{ Private| declarations| }
public|
{ Public| declarations| }
end|;
implementation|
{$R *.DFM}
var|
Form1|: TForml|;
x,y|: byte|; // координати центру кола
dx|: byte|; // приріст координати x при русі кола
// стирає|пере| і малює коло на новому місці|місце-милі|
procedure| Ris|;
begin|
// стерти коло
form1|.Canvas.Pen.Color:=form1.Color;
form1|.Canvas.Ellipse(x,y,x+10,y+10|);
x:=x+dx|;
// намалювати коло на новому місці|місце-милі|
form1|.Canvas.Pen.Color:=clBlack;
form1|.Canvas.Ellipse(x,y|, x+10|, y+10|) ;
end|;
// сигнал від таймера
procedure TForm1.Timer1Timer(Sender: TObject);
begin|
Ris|;
end|;
procedure TForm1.FormActivate(Sender: TObject);
begin|
x:=0|;
y:=10|;
dx:=5|;
timer1|.Interval:=50;
// період виникнення події OnTimer| – 0.5 сек
form1|.canvas.brush.color:=forml.color;
end|;
end|.
Основну роботу виконує процедура Ris|, яка стирає|пере| коло і виводить його на новому місці|місце-милі|. Стирання кола виконується шляхом перемальовування кола поверх намальованої, але|та| кольором|цвітом| фону.
Для забезпечення періодичного виклику процедури Ris у форму програми доданий невізуальний компонент Timer (таймер), значок якого знаходиться на вкладці System палітри компонентів. Властивості компоненту Timer, перераховані в нижче.
Значок компоненту Timer
Властивості компоненту Timer
|
|
|
|
|
|
||
|
Name| Interval|
Enabled
|
Ім'я компоненту. Використовується для доступу до компоненту Період генерації події OnTimer|. Задається в мілісекундах Дозвіл роботи. Вирішує (значення True) або забороняє (значення False) генерацію події OnTimer
|
|
|
|
|
|
Додається|добавляє| компонент Timer| до форми звичайним способом, проте|однак|, оскільки компонент Timer| є|з'являється| невізуальним, тобто під час роботи програми не відображається|відображує| на формі, його значок можна помістити в будь-яке місце|місце-милю| форми.
Компонент Timer| генерує подія OnTimer|. Період виникнення події OnTimer| вимірюється в мілісекундах і визначається значенням властивості Interval|. Слід звернути увагу на властивість Enabled|. Воно дає можливість|спроможність| програмі "запустити" або "зупинити" таймер. Якщо значення властивості Enabled| рівне False|, то подія OnTimer| не виникає.
Подія onTimer| в даній програмі обробляється процедурою TimeriTimer|, яка, у свою чергу|своєю чергою|, викликає|спричиняє| процедуру Ris|. Таким чином, в програмі реалізований механізм періодичного виклику процедури Ris|.
Зауваження. |тлумачення|Змінні х, у|біля| (координати центру кола) і dx| (приріст координати х при русі кола) оголошені поза|зовні| процедурою Ris|, тобто вони є|з'являються| глобальними. Тому треба не забути виконати їх ініціалізацію (у програмі ініціалізацію глобальних змінних реалізує процедура FormActivate|).
Питання для самоконтролю:
Який об’єкт зручно використовувати при роботі з графікою?
За допомогою якого методу можна завантажити малюнок з файлу?
Як вивести вміст бітового образу (картинку) на поверхню форми або області виведення ілюстрації?
Що розуміють під мультиплікацією?
Назвіть властивості компоненту таймер.
