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



ЗНАЕТЕ ЛИ ВЫ?

Опишіть етапи створення та тестування власних компонент у Delphi.

Поиск

Компонентою вважають будь-якого нащадка (прямого або непрямого) стандартного класу TComponent оскільки цей клас здатний взаємодіяти з IDE.

Для того щоб створити власну компоненту потрібно виконати наступні кроки:

- Видалити нестандартні пакети:

* Component -> Install Packages->в списку Design Packages->обираємо зайві пакети і натискаємо Remove

- Вибираємо в меню Component -> New Component

- у вікні, що з’явиться обираємо клас-предок для нашої компоненти та натискаємо Next

- далі пишемо ім’я класу нашої компоненти в полі Class Name, а в полі Palette Page – записуємо назву палітри куди буде поміщена наша компонента, в полі Unit Name – шлях до файлу(свій) в якому вона буде зберігатися Next.

- вибираємо Install To New Package. Next.

- в Package Name записуємо ім’я пакунку (свої ініціали) в який буде встановлено компоненту. Поле Description – можна залишити пустим. Finish.

- зберігаємо у свій каталог

- Інсталювання компоненти завершується появою вікна з відповідною інформацією.

- справа у вікні Project Manager з’явиться дерево нашого пакунку. З папки Contains відкриваємо нашу компоненту і пишемо в ній код.

- зберігаємо все. Клікаємо правою кнопкою мишки на імені проекту і вибираємо Build. Після цього в тому самому меню вибираємо Install.

- якщо в каталозі з пункту 6 з’явився файл ІНІЦІАЛИ_PKG.bpi, то інсталяція пройшла успішно.

Для тестування створеної компоненти:

Створюємо віконний проект, «кидаємо» на форму наше компоненту і тестуємо.

GDI та принципи побудови графічних зображень у Delphi.

Для роботи в графіці на сучасних комп’ютерах використ. 2 бібліотеки:

1. WinAPI – стосується стандартного ПЗ

2. VCL – бібліотека візуальних компонентів Делфі, які об’єднані в модулі Graphics.

Частиною WinAPI є так званий GDI. GDI – відповідає за відображення кривих та ліній, відображення шрифтів і обробку палітри.

GDI – це набір ф-й 2-вимірної графіки, які забезпечують взаємодію із драйверами графічних пристроїв.

GDI – не відповідає за відображення вікон меню і т.д. – це завдання закріплене за підсистемою в uses32.dll і ґрунтується на GDI.

Ф-ї GDI закріплені в системній бібліотеці gdi32.dll і експортуються в Делфі.

Найпоширеніші об’єкти VCL:

- Олівець (pen)-використовується для викреслювання крапок, ліній, контурів геометричних фігур. Вид лінії, яку залишає олівець на поверхні полотна, визначають властивості:

Color Колір лінії
Width Товщина лінії
Style Вид лінії
Mode Режим відображення

 

- пензлик (brush)- використовується методами, що забезпечують викреслювання замкнутих областей, наприклад геометричних фігур, для заливки (закрашення) цих областей. Він володіє двома властивостями

Color Колір закрашення замкнутої області
Style Стиль (тип) заповнення області

 

- шрифт - Для виведення тексту на поверхню графічного об'єкту використовується метод TextOut. Інструкція виклику методу TextOut в загальному така: Об'єкт.Canvas.TextOut(x, у, Текст)

де:

- об'єкт – ім'я об'єкту, на поверхню якого виводиться текст;

- х, у – координати точки графічної поверхні, від якої виконується виведення тексту;

- текст – змінна або константа символьного типу, значення якої визначає текст, що виводиться методом.

Шрифт, який використовується для виведення тексту, визначається значенням властивості Font відповідного об'єкту Сanvas. Властивістю Font є об'єкт типу TFont.

OpenGL – призначення, основні поняття та правила використання.

OpenGL – (це стандартна для багатьох платформ і ОС бібліотека) набір низько-рівневих функцій дво- і тьох- вимірної графіки, які у Delphi записані в 2-х бібліотеках DLL-файла: Opengl32.dll та glu32.dll. Перша бібліотека містить набір функцій OpenGL, а друга – це додатковий набір сервісних функцій для спрощення процесу програмування графіки. Не дивлячись на те, що бібліотеки входять в склад Delphi, ми повинні в Uses прописати OpenGL. Для роботи в OpenGL потрібно розуміти і вміти використовувати такі поняття як подія, повідомлення, контекст приросту.

Код який написаний в проекті Delphi як обробник подій OnCreate виконується при отриманні додатковим повідомленням WM_CREATE, повідомленню WM_PAINT відповідає подія OnPaint і т. д.

Всі вікна при своєму створенні реєструються в ОС і отримують унікальний ідентифікатор: «посилання на вікно». Тип цієї величини в Delphi – HWND (посилання на вікно). HWND може використовуватися не тільки ОС, але додатковими для індексації вікнами, з якими необхідно спілкуватися. Властивість Handel форми і є посилання, значення якого форма отримує при виконанні API-функції CreateWindow – створеного вікна.

HDC (посилання на контекст відтворення). Для задання значення якої необхідно мати величину типу HWND – посилання на вікно, унікальний ідентифікатор свіх задається в системі вікон.

Графічна система OpenGL також використовує посилання на вікно на якому буде здійснюватися відтворення,-спец. Посилання на контекст відтворення- величина типу HGLRC. Для отримання контексту OpenGL потребує значення типу HDC вікна, який здійснюватиме вивід.

 

Поясніть принципи динамічного створення елементів інтерфейсу Delphi.

Складні проекти мають багато режимів своєї роботи причому кожен з цих режимів має десятки своїх компонент на вікні форми. І під час візуального програмування на вікні форми розмістити їх фізично неможливо. Тому ми будемо формувати компоненти динамічно.

Для створення компонентів під час програми необхідно виконати такі дії:

- Створити екземпляр класу за допомогою конструктора Create, передавши, при необхідності силку на компонент, який буде нести відповідальність за руйнування створюваного компонента. Якщо компонент буде зруйнований (звільнений) в тексті програми, то силку можна не передавати, використавши значення nil

- Для візуальних компонентів встановити властивість Parent, присвоївши йому силку на контейнер, в якому буде відображатися створюваний компонент

- Для візуальних компонентів встановити властивості, яка визначає положення, розміри та інші необхідні візуальні характеристики елементів управління

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

- Якщо при створенні компонента не був указаний власник Owner, зруйнувати (звільнити) компоненту, викликавши його метод Free. Якщо компонент має власника, то він буде звільнений автоматично.

 

Динамічні масиви, синтаксис оголошення та правила використання.

Масив – це впорядкований набір даних, як правило кількість елементів обмежена. Масиви бувають статичні та динамічні. Номери елементів наз. індексами. Тип компонентів наз. базовим типом(крім файлового). Кожна компонента моє свій індекс. Всі компоненти мають один і той самий тип.

Статичні: var <ім’я масиву>:array[<діапазон> <вимірність>]

of < тип елементів масиву>;

статичні масиви мають недолік. В більшості випадків ми не знаємо скільки елементів нам потрібно.

Динамічні масиви не мають фіксованого розміру або довжини

Var MyArray: array of real;

В такому оголошенні пам’яті не виділяється. Для виділення пам’яті для динамічного масиву використовується процедура:

SetLength (MyArray,100)

Тобто масиву MyArray задається довжина 100, індексування від 0.

Динамічні масиви – це неявні вказівники. Щоб звільнити пам’ять, яку займає динамічний масив потрібно масиву присвоїти nil: MyArray:=nil;

Щоб оголосити двомірний масив:

Var MyArray: array of array of integer;

Для виділення пам’яті: SetLength (MyArray,10,5);

Працювати з двовимірними масивами так само як із статичними. Ми можемо створювати не тільки прямокутні масиви. Зубчасті масиви

Var MyArray: array of array of integer;

Потім створимо n рядків але без колонок, наприклад:

SetLength (MyArray,n);

Тепер можна створити стовпці різної довжини:

SetLength (MyArray[0],5);

SetLength (MyArray[1],8);

SetLength (MyArray[2],4);



Поделиться:


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

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