OpenDialog - діалог завантаження



Основна властивість - FileName: string, основний метод - Execute.

 При виклику з програми методу Execute відбувається виведення на екран діалогу. Параметри виводу визначаються властивостями компонента: Title, Options, Filter і ін Якщо користувач вибере файл для відкриття і натисне "Відкрити", то у властивість FileName компонента буде записано
ім'я цього файлу у форматі string, а результатом методу Execute буде значення true. Інакше, якщо користувач натисне в діалозі кнопку "Скасувати", результат Execute буде false, тобто Execute є булевоюї функцією.

MediaPlayer - медіапрогравач.

Основна властивість - FileName: string, основні методи - Play, Pause, Stop. Після того як у властивість FileName поміщено ім'я файлу мультимедіа, цей файл потрібно відкрити з допомогою методу Open (якщо встановлено властивість AutoOpen, то відкриття відбувається автоматично, але це не завжди добре, оскільки, якщо FileName не задано або задано
невірно, то при автовідкритті відбудеться помилка).

Коли файл відкритий, він може бути відтворений. Це можна зробити за допомогою кнопок самого компонента, або викликавши метод Play. Те ж стосується зупинки і паузи - методів Stop і Pause. Для налаштування зовнішнього вигляду компоненту використовується безліч властивостей, наприклад, можна приховати частину кнопок, налаштовуючи властивість VisibleButtons.
4. У обробнику натиснення на Button1 викликається метод діалогу Execute, і якщо він видає результат true (користувач вибрав файл і натиснув "Відкрити"), то медіапрогравачу передається ім'я цього файлу і файл відкривається. Тепер користувач може відтворити його, натиснувши кнопки програвача.

procedure TForm1.Button1Click (Sender: TObject);
begin
if OpenDialog1.Execute then
begin
MediaPlayer1.FileName: = OpenDialog1.FileName;
MediaPlayer1.Open;
end;
end;

5. При запуску програми користувач бачить кнопку і програвач.
Програвач не є активним, оскільки файл, який він повинен відтворювати, не відкрито.

 

                                                                   

 

                                                                                                                              

 

 

                                                                                                                                    

 

При натисканні на кнопку активізується діалог. Параметри діалогу відповідають значенням властивостей, заданих попередньо в Інспекторі Об'єктів. Приміром, обраний фільтр звукових файлів приховує всі файли з відмінним розширенням. Після вибору в музичній папці файлу при натисканні кнопки "Відкрити" програвач став доступним. Файл відкритий, і можна відтворити його.

Якщо необхідно відтворити відеофайл, то при запуску автоматично буде створено окреме вікно, в якому відобразиться зображення.

6.Програвач готовий. Збережіть проект та протестуйте його.

7. Створіть для програвача картинку-фон, наприклад:

 

 

 

8.Збережіть її у файлі, наприклад, Фон.bmp

9.Встановіть у програвач у якості фону.

 

 

                                                                                                                    


 

Практичне заняття № 12

Тема:Графіка в Delphi. Побудова графіків. Переміщення малюнків.

   Мета:Ознайомити студентів з поняттям графіки. Розглянути компоненти Delphi, що використовуються для побудови зображень. Закріпити отримані знання на практиці.

Література

1. М.С.Львов, О.В.Співаковський. Основи алгоритмізації та програмування. Навчальний посібник – Херсон, 1997. – 122с.

2. Львов М.С., Співаковський О.В. Вступ до об¢єктно-орієнтованого програмування.–Херсон:ХДПУ.-240 с.

3. Фаронов В.В. Delphi 6.Учебний курс.-М.:Издатель Молгачева С.В.,-672с.,ил.

4. Т.Бадд.. Объектно-ориентированное программирование в действии / пер. с англ. - СПб.:Питер, 1997.- 464 с. ил.

5. http://www.programmersclub.ru/book/ - електронні підручники по Delphi

6. http://pitbooks.ru/delphi/ - електронні підручники по Delphi

Завдання для виконання

Графіка

Для малювання статичних малюнків використовується компонент PaintBox (панель System). Цей компонент розміщується на формі у вигляді прозорого пунктирного квадрата, і в його межах можна малювати. Малювання виконується зверненням до властивості Canvas
(Графічна канва) цього компонента: PaintBox1.Canvas. У нього в свою чергу є властивість Pixels (PaintBox1.Canvas.Pixels), яке представляє собою матрицю, двовимірний масив заданого розміру - поточечний образ канви, кожний елемент - окрема точка. В Pixels [] відлік точок (пікселів екрану) починається з 0.

Координати x, y відраховуються від верхнього лівого кута, тобто він вважається точкою з координатою (0, 0), збільшення по осі x йде зліва направо, а по осі y - зверху вниз. Для конкретної точки вказується колір. Функція RGB () формує колір комбінацією інтенсивності червоного, зеленого і синього (інтенсивність задається числом від 0 до 255). Наприклад, чорний - RGB (0,0,0), червоний - rgb (255,0,0), синій - rgb (0,0,255), білий - rgb (255,255,255).

Мета роботи - створити програму, що виконує наступні дії:
1. Розмістити на формі компонент PaintBox.
2. Заповнити доступну канву 300 червоними крапками в випадкових позиціях при натисненні на деяку кнопку.
3. Для виходу з програми необхідно натиснути мишею на закриваючій кнопці в рядку заголовка.

4. Записати код в обробнику натиснення.

 

procedure TForm1.Button1Click(Sender: TObject);

var i,x,y: Integer;

Begin

randomize;

for i := 1 to 300 do

Begin

x := random(100);

y := random(100);

PaintBox1.Canvas.Pixels[x,y] := RGB(255,0,0);

End

end;

 

5.Змінити RGB(255,0,0) на RGB(random(255),random(255),random(255) ).


7. Заповнити фон чорним кольором перед початком виконання програми за допомогою методу канви FillRect. Метод викликається із зазначенням прямокутної області заливки кольором: FillRect (Rect (0, 0, 100, 100)) / / координати верхнього лівого і правого нижнього кутів

Вкладене слово Rect формує дане типу "прямокутник". Перед викликом FillRect треба вказати колір заливки: PaintBox1.Canvas.Brush.Color: = RGB (0,0,0);

 

 

procedure TForm1.Button1Click(Sender: TObject);

var i,x,y: Integer;

Begin

PaintBox1.Canvas.Brush.Color := RGB(0,0,0);

PaintBox1.Canvas.FillRect(Rect(0,0,100,100));

for i := 1 to 300 do

Begin

x := random(100);

y := random(100);

PaintBox1.Canvas.Pixels[x,y] := RGB(random(255),random(255),random(255));

End

end;

7. Заповнити канву випадковими різнокольоровими лініями різної товщини.

Лінія малюється за допомогою методів (спочатку задається початкова точка, потім кінцева): PaintBox1.Canvas.MoveTo (10,10); PaintBox1.Canvas.LineTo (50,50);

Колір лінії і товщина задаються властивістю канви Pen (олівець). Pen.Color – колір олівця), Pen.Width - товщина лінії в пікселях (за замовчуванням - 1).

 

 

 

 

fori := 1 to300 do

Begin

PaintBox1.Canvas.Pen.Color := RGB(random(255),random(255),random(255));

PaintBox1.Canvas.Pen.Width := random(3)+1;

x := random(100);

y := random(100);

PaintBox1.Canvas.MoveTo(x,y);

x := random(100);

y := random(100);

PaintBox1.Canvas.LineTo(x,y);

End

8. Заповнити канву еліпсами випадковим чином (круги, кола - окремий випадок еліпса). Еліпси малюються методом Ellipse () з чотирма параметрами – координатами верхнього лівого і правого нижнього кутів прямокутника, в який еліпс вписується. Облямівка еліпса малюється у відповідності з параметрами властивості Pen канви, а заливається еліпс всередині кольором кисті Brush канви.

 

for i := 1 to 300 do

Begin

// цвет и ширина каймы будущего эллипса

PaintBox1.Canvas.Pen.Color := RGB(random(255),random(255),random(255)) ;

PaintBox1.Canvas.Pen.Width := random(3)+1;

// цвет заливки внутренности эллипса

PaintBox1.Canvas.Brush.Color := rgb(random(255),random(255),random(255)) ;

Рис. 52.

Рис. 53.

74

// координаты углов прямоугольника, в который вписывается эллипс

x := random(150);

y := random(150);

x2 := random(150);

y2 := random(150);

// вписываем эллипс

PaintBox1.Canvas.Ellipse(x,y,x2,y2);

end;

9. Зробити канву на весь екран. Заповнити різнокольоровими прямокутниками в випадкових позиціях і випадкових розмірів за допомогою FillRect ().

10. Створити графічний образ так званогї множини Жюліа.

 

procedureTForm1.Button1Click(Sender: TObject);

varRE,IM,RE1,IM1: REAL ;

V,X,Y : INTEGER;

// вывод точки заданного цвета

procedurePUTPIXEL(x,y,c:Integer);

varcc: TColor;

Begin

casec mod8 of

0:cc:=clBlack;

1:cc:=clRed;

2:cc:=clLime;

3:cc:=clYellow;

4:cc:=clBlue;

5:cc:=clFuchsia;

6:cc:=clAqua;

7:cc:=clWhite;

end;

PaintBox1.Canvas.Pixels[x,y] := cc;

end;

procedureQWA ;

Begin

RE1:=RE*RE-IM*IM;

IM1:=2*RE*IM;

RE:=RE1;

IM:=IM1;

end;

procedureKUB;

Begin

RE1:=RE*(RE*RE-3*IM*IM);

IM1:=IM*(3*RE*RE-IM*IM);

RE:=RE1;

IM:=IM1;

end;

Begin

PaintBox1.Canvas.Brush.Color := rgb(0,0,0);

PaintBox1.Canvas.FillRect(Rect(0,0,640,480));

X:=-320 ;

REPEAT Y:=-240 ;

REPEAT V:=0 ; RE:=-1.+0.001*X ; IM:=0+0.001*Y ;

REPEAT KUB; RE:=RE+1.00003 ; IM:=IM+1.01828201638 ;

ifRE*RE > 50 thenbreak;

75

ifIM*IM > 50 thenbreak;

V:=V+1 ;

UNTIL V>40 ;

if( ABS(RE) > 10 ) or( ABS(IM) > 1000)

Then

Begin

PUTPIXEL((X+320),(Y+240),TRUNC(V)) ;

End

elsePUTPIXEL((X+320),(Y+240),0);

Y:=Y+1 ;

UNTIL Y > 241 ;

X:=X+1 ;

UNTIL X>320 ;

End;

Переміщення малюнків

Мета роботи - створити програму, в якій на поверхні вікна переміщається випадковим чином зображення м’яча.

Користувач повинен зробити клацання кнопкою миші по зображенню. Програма повинна завершити роботу після того, як користувач зробить 10 клацань кнопкою миші.

Початок гри здійснюється після натискання на кнопку Ok.
Властивість WordWrap компонента Label - ознака того, що слова, які не поміщаються в поточному рядку, автоматично переносяться на наступний рядок (значення властивості AutoSize має бути False).

 

 

 

             Лістинг програми

unitUnit1;

Interface

Uses

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

Dialogs, StdCtrls, ExtCtrls;

Type

TForm1 = class(TForm)

Timer: TTimer;

Label1: TLabel;

Button1: TButton;

procedureTimerTimer(Sender: TObject);

procedureFormCreate(Sender: TObject);

procedureFormMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

{ объявление процедур помещено сюда,

чтобы процедуры имели прямой доступ

к форме, на которой они рисуют}

procedurePaintFace (x,y: integer); {рисует рожицу}

procedureEraseFace(x,y: integer); {стирает рожицу}

end;

Var

Form1: TForm1;

fx,fy: integer; { координаты рожицы}

n: integer; { количество щелчков кнопкой мыши}

p: integer; { количество попаданий}

Implementation

{ рисует рожицу}

procedureTForm1.PaintFace(x,y: integer);

Begin

Canvas.Pen.Color := clBlack; { цвет линий}

Canvas.Brush.Color := clRed; { цвет закраски}

{ рисуем рожицу}

Canvas.Ellipse(x,y,x+30,Y+30); { лицо}

Canvas.Ellipse(x+9,y+10,x+11,y+13); { левый глаз}

Canvas.Ellipse(x+19,y+10,x+21,y+13); { правый глаз}

Canvas.Arc(x+4,y+4,x+26,y+26,x,y+20,x+30,y+20); {улыбка}

end;

{ стирает рожицу}

procedureTForm1.EraseFace(x,y: integer);

Begin

{ зададим цвет границы и цвет закраски, совпадающий с цветом формы.}

{ По умолчанию цвет формы - clBtnFace }

Canvas.Pen.Color := clBtnFace; { цвет окружности}

Canvas.Brush.Color := clBtnFace; { цвет закраски}

Canvas.Ellipse(x,y,x+30,y+30);

end;

{$R *.dfm}

procedureTForm1.TimerTimer(Sender: TObject);

Begin

EraseFace(fx,fy);

{ новое положение рожицы}

fx:= Random(ClientWidth-30); { 30 - это диаметр рожицы}

fy:= Random(ClientHeight-30);

PaintFace(fx,fy);

end;

procedureTForm1.FormCreate(Sender: TObject);

Begin

{ исходное положение рожицы}

fx:=100;

fy:=100;

Randomize; { инициализация генератора случайных чисел}

end;

procedureTForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

Begin

inc(n); { кол-во щелчков}

if(x > fx) and(x < fx+30) and(y > fy) and(y < fy+30)

Then begin

{ щелчок по рожице}

inc(p);

end;

ifn = 10 then

Begin

{ игра закончена}

Timer.Enabled := False; { остановить таймер}

ShowMessage('Щелчков: 10. Попаданий: ' + IntToStr(p)+'.');

EraseFace(fx,fy);

Label1.Visible := True;

Button1.Visible := True;

{ теперь кнопка и сообщение снова видны}

end;

end;

procedureTForm1.Button1Click(Sender: TObject);

Begin

Label1.Visible := False; { скрыть сообщение}

Button1.Visible := False; { скрыть кнопку}

Timer.Enabled := True; { пуск таймера}

end;

end.


 

Практичне заняття № 13

Тема:Проектування та реалізація власного проекту «Середовище тестування»

   Мета:Ознайомлення студентів з поняттям проектування. Створення багатовіконного проекту та закріплення отриманих знань на практиці.

Література

1. М.С.Львов, О.В.Співаковський. Основи алгоритмізації та програмування. Навчальний посібник – Херсон, 1997. – 122с.

2. Львов М.С., Співаковський О.В. Вступ до об¢єктно-орієнтованого програмування.–Херсон:ХДПУ.-240 с.

3. Фаронов В.В. Delphi 6.Учебний курс.-М.:Издатель Молгачева С.В.,-672с.,ил.

4. Т.Бадд.. Объектно-ориентированное программирование в действии / пер. с англ. - СПб.:Питер, 1997.- 464 с. ил.

5. http://www.programmersclub.ru/book/ - електронні підручники по Delphi

6. http://pitbooks.ru/delphi/ - електронні підручники по Delphi

Завдання для виконання

Мета роботи - створити програму, яка тестує учня по інформатиці та математиці.

Проект повинен містити послідовність форм, що реалізують діалог з учнем.

На першій формі відбувається реєстрація учня.

Фрагмент программы (unit1):

uses Unit2;

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);

Begin

Close;

end;

procedure TForm1.Button1Click(Sender: TObject);

Begin

Form2.Label3.Caption:=Form1.Edit1.Text;

Form2.ShowModal;

end;

На другій формі пропонується вибрати один з тестів.

Фрагмент программы (unit2):

uses Unit3, Unit6;

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);

Begin

Form3.ShowModal;

end;

Рис. 65.

Рис. 66.

106

procedure TForm2.Button2Click(Sender: TObject);

Begin

Form2.Close;

end;

procedure TForm2.Button3Click(Sender: TObject);

Begin

Form6.Edit2.Text:='';

Form6.ShowModal;

end;

 

На третій формі пропонується Пройти тест з інформатики.

Фрагмент программы (unit3):

uses Unit4, Unit2;

{$R *.dfm}

procedure TForm3.Button1Click(Sender: TObject);

Begin

k:=0;

if (Form3.Edit1.Text='монитор') or (Form3.Edit1.Text='Монитор') or

(Form3.Edit1.Text='МОНИТОР') then k:=k+1;

if (Form3.Edit2.Text='Клавиатура') or (Form3.Edit2.Text='клавиатура')

or (Form3.Edit2.Text='КЛАВИАТУРА') then k:=k+1;

if Form3.Edit3.Text='8' then k:=k+1;

Form4.Label2.Caption:=IntToStr(k);

if k=0 then Form4.Label1.Caption:='Очень плохо' else

if k=1 then Form4.Label1.Caption:='Плохо' else

if k=2 then Form4.Label1.Caption:='Хорошо' else

if k=3 then Form4.Label1.Caption:='Очень хорошо';

Form3.Edit1.Text:='';

Form3.Edit2.Text:='';

Form3.Edit3.Text:='';

Form4.ShowModal;

end;

procedure TForm3.Button2Click(Sender: TObject);

Begin

Form3.Close;

end;

На наступній формі відображається результат тестування і пропозиція про перегляд відповіді.

 

Фрагмент программы (unit4):

uses Unit1, Unit5, Unit3, Unit2;

{$R *.dfm}

procedure TForm4.Button2Click(Sender: TObject);

Begin

Form4.Close;

end;

procedure TForm4.Button1Click(Sender: TObject);

Begin

Form4.Close;

Form3.Close;

end;

procedure TForm4.Button3Click(Sender: TObject);

Begin

Form5.ShowModal;

end;

На наступній формі відображаються правильні відповіді

 

 

Фрагмент программы (unit5):

uses Unit4, Unit3, Unit2, Unit1;

{$R *.dfm}

procedure TForm5.Button1Click(Sender: TObject);

Begin

Form4.Close;

Form3.Close;

Form2.Close;

Form1.Close;

Рис. 68.

Рис. 69.

108

Form5.Close;

end;

Якщо учень вибрав тест з математики, то йому пропонується перевірити свої знання таблиці множення. На наступній формі випадковим чином вибираються числа.

Учень повинен ввести значення добутку в текстове поле. За допомогою кнопки «Перевірка» з'ясовується правильність введеної відповіді. Якщо відповідь правильна, то можна згенерувати наступний приклад. Після кількох прикладів можна перевірити свій рейтинг.

Alpha

 

 

Фрагмент программы (unit6):

uses Unit7, Unit1;

{$R *.dfm}

procedure TForm6.Button1Click(Sender: TObject);

var n,i:integer;

begin

randomize;

a:=random(10)-0;

b:=random(10)-0;

Form6.Label1.Caption:=IntToStr(a);

Form6.Label2.Caption:=IntToStr(b);

Form6.Edit2.Text:='';

Form6.Label6.Caption:='';

end;

procedure TForm6.Button2Click(Sender: TObject);

begin

if (a*b=StrToInt(Form6.Edit2.Text)) then

begin

Form6.Label6.Caption:='Правильно';

m:=m+1;

r:=r+1;

q:=q+1;

end

else

begin

Form6.Label6.Caption:='Не правильно';

r:=r-1;

q:=q+1;

end;

Form6.Label1.Caption:='';

Form6.Label2.Caption:='';

end;

procedure TForm6.Button3Click(Sender: TObject);

var

c:real;

begin

Form7.Label2.Caption:=Form1.Edit1.Text;

Form7.Label1.Caption:='Вы ответили на '+IntToStr(q)+' вопросов, из них правильно

'+IntToStr(m);

Form7.Label4.Caption:='Ваш рейтинг = '+IntToStr(r);

c:=m/q;

if c=0 then Form7.Label3.Caption:='Очень плохо' else

if (c>0)and(c<0.5) then Form7.Label3.Caption:='Плохо' else

if c=0.5 then Form7.Label3.Caption:='Надо доучить' else

if (c>0.5) and (c<1) then Form7.Label3.Caption:='Хорошо' else

if c=1 then Form7.Label3.Caption:='Молодец!';

Form7.ShowModal;

end;

 

При натисканні на кнопці «Ваш рейтинг» на наступній формі з'являється результат рейтенгу. Тестування можна завершити.

 

 

                  Фрагмент программы (unit7):

uses Unit6;

{$R *.dfm}

procedure TForm7.Button1Click(Sender: TObject);

Begin

Form7.Close;

Form6.Close;

end;

Зверніть увагу на підключення модулів в рядку Uses. Таким чином, відбувається звернення до відповідної формі. Для відображення форми використовується функція function ShowModal: Integer;

Ця функція дозволяє показувати форму в роботі режиму діалогу.


Дата добавления: 2018-02-15; просмотров: 733; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!