If SavePictureDialog.Execute Then 


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



ЗНАЕТЕ ЛИ ВЫ?

If SavePictureDialog.Execute Then



TChild(ActiveMDIChild).Image.Picture.SaveToFile (SavePictureDialog.FileName);

Змінна ActiveMDIChild є покажчиком на активне дочірнє вікно додатка. Якщо таке існує, викликається діалог збереження файлу, після чого рисунок зберігається з ім’ям, обраним у діалозі збереження (SavePictureDialog.FileName). Для того, щоб за покажчиком ActiveMDIChild (типу TForm)здобути доступ до дочірнього вікна Child (типу TChild)використовується операція явного приведення до типу TChild(ActiveMDIChild).

Запустіть додаток, відкрийте довільний графічний файл і збережіть його під іншим ім’ям в особистій папці.

Крок 5. Написання коду для меню Window головного вікна

Згенеруйте процедури оброблення команд меню Window: Tile, Cascade, Arrange All і вставте туди методи Tile; Cascade; ArrangeIcons; відповідно.

Запустіть додаток і вивчіть можливості введених команд.

Крок 6. Створення діалогу вибору кольору

Помістіть на головну форму компонент Panel (вкладка Standard), встановіть значення властивості Height рівним 32; значення властивості Align установіть в alTop; змініть Name на ToolBar і зітріть значення властивості Caption.

Помістіть на панель (не на форму!) компонент SpeedButton (вкладка Additional). Змініть ім’я кнопки на Color і зчитайте відповідний рисунок.

Розташуйте на формі компонент ColorDialog (вкладка Dialogs) і змініть його ім’я на ColorDialog.

Створіть процедуру оброблення натискання на кнопку Color і введіть туди наступний код.

if ActiveMDIChild <> Nil Then

If ColorDialog.Execute Then

TChild(ActiveMDIChild).Image.Canvas.Pen.Color:= ColorDialog.Color;

Якщо існує активне дочірнє вікно (ActiveMDIChild <> Nil), то викликається діалог вибору кольору. Обраний у діалозі колір (ColorDialog.Color) присвоюється олівцю (Pen) полотна (Canvas) зображення (Image) поточного вікна ActiveMDIChild, що дозволяє вибрати різний колір малювання для різних вікон.

Методи малювання будуть розглянуті у наступній лабораторній роботі.

 

Зміст звіту

1. Назва і мета роботи.

2. Код програми.

3. Відповісти на питання.

 

Контрольні питання

1. Як створюється багатодокументний інтерфейс Windows (Multiple Document Interface)?

2. Поясніть значення властивості Stretch компонента Image. Назвіть найважливіші властивості та методи класу TPicture.

3. Поясніть значення параметра Action процедури оброблення події OnClose.

4. Поясніть значення списків Автоматично створювані форми та Доступні форми.

5. Поясніть рядок коду Child:= TChild.Create(Self);

6. Як використовується властивість DefaultExt компонента SavePictureDialog та OpenPictureDialog? Для чого використовується функція ExtractFileName?

7. Поясніть значення змінної ActiveMDIChild;

8. Для чого використовуються методи Tile; Cascade; ArrangeIcons;?

 

Література

1. Александровский А. Delphi 5. Разработка корпоративных приложений. – М.: ДМК, 2000. – 512 с.

2. Архангельский А. Я. Object Pascal в Delphi. – М.: ЗАО «Издательство Бином», 1999. – 224 с.

3. Архангельский А. Я. Программирование в Delphi 6. – М.: ЗАО «Издательство Бином», 2002. – 1120 с.

4. Бобровский С. Delphi 5: Учебный курс. – СПб.: Питер, 2002. – 640 с.

5. Вирт Н. Алгоритмы + структуры данных = программы. – М.: Мир, 1985. – 406 с.


 

 

Лабораторна робота № 11

Тема: Створення графічного редактора.

Мета: Ознайомитись із технологією програмування графіки в ОС Windows.

 

Завдання

Крок 1. Відкриття проекту

Запустіть систему програмування Delphi. Відкрийте проект зі створення програми для перегляду рисунків, що Ви розробляли на попередньому занятті.

Крок 2. Написання коду для малювання ліній

Деякі візуальні компоненти надають у розпорядження програміста полотно (Canvas), призначене для малювання. Наприклад, щоб намалювати на формі Form1 лінію з поточної позиції графічного курсору (PenPos) у точку (100, 100), необхідно записати:

Form1.Canvas.LineTo(100, 100);

Де LineTo є одним із методів вбудованого у форму полотна Canvas.

Для того, щоб на полотні компонента залишався слід у процесі переміщення вздовж нього покажчика миші, необхідно згенерувати для компонента процедуру оброблення події OnMouseMove (при переміщенні миші).

У дочірню форму нашого додатка вмонтований компонент Image, що також має полотно для малювання. Згенеруйте процедуру оброблення події OnMouseMove для компонента Image і вставте туди наступний рядок:

Image.Canvas.LineTo(X, Y);

Перегляньте результати програмування. Зверніть увагу, як параметри X і Y (координати миші) передаються в згенеровану процедуру оброблення ImageMouseMove.

Ще одним параметром процедури ImageMouseMove є Shift: TShiftState, тобто набір, що містить стан натиснутих кнопок миші та клавіатури. Якщо необхідно, щоб лінія малювалася при натиснутій лівій кнопці миші, то процедуру оброблення події OnMouseMove треба змінити на наступну:

If ssLeft in Shift Then

Image.Canvas.LineTo(X, Y);

Операція in перевіряє, чи міститься елемент ssLeft у наборі Shift, тобто, чи була натиснута ліва кнопка миші.

Для того, щоб змінити колір лінії при малюванні на полотні, треба вибрати олівець (Pen):

Image.Canvas.Pen.Color:= clRed;

Цей запис встановлює колір (Color) олівця (Pen) у червоний (clRed). Додайте цей рядок в процедуру оброблення і перегляньте результати програмування. Після цього видаліть рядок.

Примітка. Зверніть увагу, що у випадку необхідності компонент Image самостійно перерисовує (відновлює) зображення: наприклад, якщо форму згорнути та розгорнути, то малюнок компонента Image зберігається. Це і є основною перевагою використання компонента Image для малювання (при малюванні на полотні інших компонентів зображення треба відновлювати програмно при виникненні події OnPaint).

Крок 3. Малювання графічних примітивів

Додайте на панель інструментів ще одну кнопку швидкого доступу, назвіть її Circle (коло). Властивість GroupIndex установіть в 1: тепер кнопка кольору Color і кнопка малювання кола Circle відносяться до різних груп і їх поведінка незалежна. Властивість AllowAllUp установіть в true, що дозволить використовувати кнопку Circle як перемикач (натиснутий/віджатий стан).

Натискання кнопки Circle переводить програму в режим малювання кола, що здійснюється при натисканні лівої кнопки миші на рисунку.

Введіть у модулі ChildUnit дві нові глобальні змінні, які визначать координати кола:

xc, yc: Integer;

Згенеруйте для Image процедуру оброблення події OnMouseDown і введіть туди наступний код:

//Якщо натиснута кнопка Circle

If MainForm.Circle.Down Then

Begin

xc:= X; // Присвоїти координатам кола

yc:= Y; // координати миші

Image.Canvas.Ellipse(xc-100, yc-100, xc+100, yc+100);

end;

Примітка. Для того, щоб властивість Down (натиснута) кнопки Circle, описаної у модулі головної форми, була доступна й у модулі дочірньої форми, необхідно в останньому зробити запис uses MainUnit;

Запустіть програму і перегляньте результати програмування. При натисканні лівої кнопки миші виводиться коло, при русі миші рисується лінія.

Для того, щоб переміщати коло, необхідно модифікувати процедуру оброблення події переміщення миші:

if ssLeft in Shift Then // Якщо натиснута ліва кнопка миші

//Якщо натиснута кнопка Circle

If MainForm.Circle.Down Then

Begin

// Стерти старе коло

Image.Canvas.Ellipse(xc-100, yc-100, xc+100, yc+100);

xc:= X; // Присвоїти координатам кола

yc:= Y; // нові координати

// Намалювати нове коло

Image.Canvas.Ellipse(xc-100, yc-100, xc+100, yc+100);

end // Інакше намалювати лінію

else Image.Canvas.LineTo(X, Y);

Зверніть увагу, що для стирання кола використовується той саме код, як і для малювання. Такий підхід здійснюється завдяки встановлення інвертованого стилю виведення:

Image.Canvas.Pen.Mode:= pmNotXor;

Цей рядок треба помістити в процедуру оброблення події OnCreate (при створенні) форми Child.

 

Завдання.

1. Реалізувати метод для рисування прямокутника (один кут прямокутника фіксується першим натисканням кнопки миші, другий кут слідує за курсором миші до наступного натискання кнопки миші).

2. Реалізувати метод для переміщення мишею виведеного на полотно прямокутника.

 

Зміст звіту

1. Назва і мета роботи.

2. Код програми.

 

Контрольні питання

1. Що таке Canvas? Назвіть основні властивості та методи класу TCanvas.

2. Поясніть рядок коду If ssLeft in Shift Then Image. Canvas. LineTo (X, Y);

3. У чому полягає перевага використання компонента Image для малювання графічних примітивів?

4. Поясніть значення властивостей Down, GroupIndex та AllowAllUp кнопок швидкого доступу.

5. У чому полягають переваги інвертованого стилю виведення графічних об’єктів?

 

Література

1. Александровский А. Delphi 5. Разработка корпоративных приложений. – М.: ДМК, 2000. – 512 с.

2. Архангельский А. Я. Object Pascal в Delphi. – М.: ЗАО «Издательство Бином», 1999. – 224 с.

3. Архангельский А. Я. Программирование в Delphi 6. – М.: ЗАО «Издательство Бином», 2002. – 1120 с.

4. Бобровский С. Delphi 5: Учебный курс. – СПб.: Питер, 2002. – 640 с.

5. Вирт Н. Алгоритмы + структуры данных = программы. – М.: Мир, 1985. – 406 с.


 

 

Лабораторна робота № 12

 

Тема: Використання одновимірнихмасивів.

Мета: Практичне застосування одновимірнихмасивів при написанні програм на мові Object Pascal у системі Delphi.

 

Завдання

Розглянемо технологію створення програми, що вводить значення елементів одновимірного масиву a[10] дійсного типу і знаходить його максимальний елемент.

1. Зробіть опис масиву a із 10 елементів дійсного типу. Обробка елементів масиву буде здійснюватися у різних процедурах головного модуля програми, тому опис масиву a повинен бути глобальним (інший шлях – здійснити опис масиву a як члену класу форми).

2. Розташуйте на формі компонент типу TEdit та компонент типу TButton – вони будуть слугувати для введення значень елементів масиву a[10]. Видаліть рядок, що за умовчання відображається на поверхні TEdit. На поверхні кнопки зробіть надпис “Введення значення”.

3. Введіть глобальну змінну цілого типу Count, що буде використовуватися як поточний номер елемента масиву.

Згенеруйте процедуру оброблення натискання на кнопку та введіть у неї наступний код:

Var

Code: Integer;

begin

// Збільшення поточного номера елемента масиву

inc(Count);

If Count ≤ 10 Then Val(Edit1.Text, a[Count], Code);

Edit1.Text:= ‘’; // Очищення рядка

end;

Якщо поточний номер елемента масиву (змінна Count) менший ніж кількість його елементів, введене у поле Edit1.Text значення заноситься у даний елемент масиву a[Count]. Для трансформації змісту рядка у дійсне значення використовується стандартна процедура Val. Примітка. Параметр Code використовується для фіксації номеру некоректного символу у рядку (якщо такий є). Якщо помилки немає, параметр Code містить 0.

4. Запустіть додаток та вивчіть його властивості.

5. Для виведення результату можна використати будь-який з елементів редагування або зображення тексту.

Розташуйте на формі компонент типу TListBox, що призначений для відображення масиву рядків. Основною властивістю TListBox є масив елементів Items.

6. Розташуйте на формі компонент типу TButton і на поверхні кнопки зробіть надпис “Пошук максимуму”. Згенеруйте процедуру оброблення натискання на кнопку та введіть у неї наступний код:

Var

i: Integer; // Змінна циклу

// Змінна для зберігання значення поточного максимуму

max: Real;

begin

max:= a[1];

for i:= 1 to 10 do // Для всіх елементів масиву

Begin

If a[i] > max Then max:= a[i];

ListBox1.Items.Add(IntToStr(i) + ‘ – ‘ + FloatToStr(a[i]));

end;

ListBox1.Items.Add(‘Максимальний елемент – ‘ + FloatToStr(max));

end ;

Алгоритм пошуку максимального елемента масиву є добре відомим. У процесі аналізу номери елементів масиву та їх значення трансформуються у рядковий тип за допомогою функцій IntToStr(i), FloatToStr(a[i]) та додаються у ListBox1 за допомогою методу Add. Примітка. Для трансформації рядка символів у ціле (дійсне) значення використовуються функції StrToInt, StrToFloat.

Завдання.

1. Ввести цілочисловий масив із 12 елементів. Знайти максимальний і мінімальний елементи масиву та поміняти їх місцями. Вивести на екран одержаний у результаті масив.

2. Ввести цілочисловий масив із 10 елементів. Знайти мінімальний і максимальний елементи масиву та поставити їх на місце першого та останнього елемента масиву. Вивести на екран одержаний у результаті масив.

 

Зміст звіту

1. Назва і мета роботи.

2. Код програми.

3. Відповісти на питання.

 

Контрольні питання

1. У чому полягає відмінність між глобальним та локальним описом змінних? У чому полягає особливість опису змінної як члену класу?

2. Які стандартні процедури та функції використовуються для трансформації дійсного (або цілого) значення у рядок символів та навпаки?

3. Для чого використовується компонент типу TListBox? Назвіть основні властивості та методи TListBox.

 

Література

1. Александровский А. Delphi 5. Разработка корпоративных приложений. – М.: ДМК, 2000. – 512 с.

2. Архангельский А. Я. Object Pascal в Delphi. – М.: ЗАО «Издательство Бином», 1999. – 224 с.

3. Архангельский А. Я. Программирование в Delphi 6. – М.: ЗАО «Издательство Бином», 2002. – 1120 с.

4. Бобровский С. Delphi 5: Учебный курс. – СПб.: Питер, 2002. – 640 с.

5. Вирт Н. Алгоритмы + структуры данных = программы. – М.: Мир, 1985. – 406 с.

 

 


 

Лабораторна робота № 13

Тема: Розв’язання числових задач.

Мета: Вдосконалення навичок програмування у процесі розв’язування задач, пов’язаних із властивостями чисел та числових рядів у системі Delphi.

Завдання.

Примітка. Всі програми повинні забезпечувати інтерфейс із користувачем у вигляді запрошення на введення вхідних даних та виведення пояснень до результатів підрахунків.

1. Числа Піфагора визначаються рівністю: с2 = а2 + b2, де a, b, c – цілі числа. Скласти програму для знаходження 5 чисел Піфагора.

2. Підрахувати факторіал введеного з клавіатури цілого числа. Факторіалом числа називається функція n! = 1×2×3×…×n.

Зміст звіту

1. Назва і мета роботи.

2. Код програми.

 

Література

1. Александровский А. Delphi 5. Разработка корпоративных приложений. – М.: ДМК, 2000. – 512 с.

2. Архангельский А. Я. Object Pascal в Delphi. – М.: ЗАО «Издательство Бином», 1999. – 224 с.

3. Архангельский А. Я. Программирование в Delphi 6. – М.: ЗАО «Издательство Бином», 2002. – 1120 с.

4. Бобровский С. Delphi 5: Учебный курс. – СПб.: Питер, 2002. – 640 с.

5. Вирт Н. Алгоритмы + структуры данных = программы. – М.: Мир, 1985. – 406 с.

 



Поделиться:


Последнее изменение этой страницы: 2016-04-18; просмотров: 216; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.129.67.26 (0.067 с.)