t = 140, ширина. p align="justify">. Відразу після слова implementation в модулі вікна оголошуємо глобальні змінні, які будуть доступні з будь-якої процедури в цьому модулі. Var stop: boolean;// ознака малювання x: Integer;// координата осі X
. У обробнику події OnClick для кнопки Button1 (В«СтартВ») напишемо наступне:
procedure TForm1.Button1Click (Sender: TObject); Var y: Integer;// вісь Ybeginif x = 0 then// якщо точка на початку координат, то: beginPaintBox1.Canvas.Brush.Color: = clWhite;// колір фону белийPaintBox1.Canvas.FillRect (ClientRect);// заливка всієї робочої областіend; stop: = false;// прапор старту процесу рісованіяWhile not stop do// нескінченний цикл, поки прапор зупинки не піднято: beginif (RadioButton1 . Checked) or (CheckBox1.Checked) then// якщо встановлений "Sin" або "Всі", то: beginy: = Round (Sin (pi * x/100) * 50) +70;// обчислення положення сінусоідиPaintBox1 . Canvas.Pixels [x, y]: = clBlack;// намалювати чорну точкуend; if (RadioButton2.Checked) or (CheckBox1.Checked) then// якщо встановлений "Cos" або "Всі", то: beginy: = Round (Cos (pi * x/100) * 50) +70;// обчислення положення косінусоідиPaintBox1.Canvas.Pixels [x, y]: = clBlack;// намалювати чорну точкуend; inc (x);// збільшити значення X на едіціну. Аналог X: = X +1 if x> 500 then// якщо X вийшов за межі PaintBox1, то: beginx: = 0;// встановити X на початок коордінатPaintBox1.Canvas.Brush.Color: = clWhite;// Колір фону белийPaintBox1. Canvas.FillRect (ClientRect);// Очищення робочої області PaintBox1end; Sleep (TrackBar1.Position);// Процедура "засинає" на заданий час в миллисекундахApplication.ProcessMessages;// Обробка всієї черги сообщенійend; end;
Коротко розповімо роботу цієї процедури. Як тільки натиснута кнопка "Старт" Компонент PaintBox1 очищається і починається нескінченний цикл While, вийти з якого можна тільки, поки змінна Stop не прийме значення true. Це можна зробити кнопкою Button2, відповідна процедура якої обробиться під час Application.ProcessMessages. За допомогою бігунка TrackBar1 можна міняти швидкість малювання кривої. Цей параметр передається в команду Sleep. p align="justify"> 10. Процедура натискання на кнопку зупинки Button2:
procedure TForm1.Button2Click (Sender: TObject);
begin: = true;// встановити прапор зупинки процесу малювання;
. Процедура створення вікна Form1OnCreate:
procedure TForm1.FormCreate (Sender: TObject);
begin
x: = 0;// початкове значення X
end;
. Якщо натиснута кнопка "Вихід", то реакція на цю подію буде таким:
procedure TForm1.Button3Click (Sender: TObject); begin Close;// закрити вікно end;
13. І реакція перед закриттям вікна OnClose. Без цієї процедури, якщо малювання включено, то вікно НЕ закроется.TForm1.FormClose (Sender: TObject; var Action: TCloseAction); begin Stop: = true;// зупинити (якщо включений) цикл малювання end; Після запуску програми, установки прапорця "Усі" і натисненні на кнопку "Старт" на екрані відобразиться графік:
В
Виконати самостійно:
. Додайте CheckBox В«ІнвертуватиВ», при виборі якого колір галузі побудови стає чорним, а графіки функцій вимальовуються білим кольором. p align="justify"> 2. Зробіть так, щоб у неінвертірованном режимі синусоїда зображувалася червоним кольором, а косінусоіда - синім. p align="justify"> Результатом виконання даної лабораторної роботи є створений згідно із завданням програмний продукт. Виконане завдання повинне бути пред'явлено викладачеві в електронному вигляді. У ході захисту лабораторної роботи студент повинен продемонструвати свої навички роботи з вивченими компонентами та методами проектування інтерфейсу користувача. br/>
Лабораторна робота № 5 . Створення найпростішого калькулятора
Мета: Вивчення структури CASE і особливостей роботи з математичними функціями. Перетворення типів і обробка виняткових ситуацій.
Короткі теоретичні відомості.
Математичні функції мови Object Pascal
abs (x) Модуль аргументу - arctan (x) Арктангенс аргументу (кут в радіанах) sin (x) Сінусcos (x) Косінусexp (x) Експонента - span> sqr (x) Квадрат аргументу - sqrt (x) Корінь квадратний аргументу - ln (x) Логарифм натуральнийfrac (x) Дрібна частина чіслаint (x) Ціла частина чіслаtrunc (x) Відкидає дробову частину чіслаround (x) Заокруглює x до найближчого цілого значеніяpi