Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОБЩИЙ_файл_ПОСОБИЕ.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
22.69 Mб
Скачать

Оголошення динамічних масивів

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

Dim <Ім‘яМасива> () As <ТипЕлементів>.

Перед першим використанням масиву необхідно змінити його розміри й розмірність за допомогою оператора ReDim, що має такий же вид, як і оператор Dim, але в ньому тип елементів масиву можна не вказувати, тому що він був заданий в операторі Dim:

ReDim <ІмяМасива> (Kmax, Lmin To Lmax,…)...

У випадках необхідності збереження накопичених даних при перевизначенні масивів доцільно використовувати ключове слово Preserve (зберегти):

ReDim Preserve < ІмяМасива> (Kmax, Lmin To Lmax,…)...

Наприклад, нехай масив цін визначений у такий спосіб:

Dim CurZina (IntKilkTov).

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

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

ReDim CurZina(IntKilkTov, 6 То 9).

При перевизначенні масиву може відбутися втрата даних, що зберігаються в ньому. Щоб запобігти цьому, в операторі ReDim потрібно використовувати ключове слово Preserve (зберегти), наприклад:

ReDim Preserve CurZina(IntKilkTov), 6 Тo 9).

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

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

Erase Ім'я1[, Ім'я2…, Ім'яN, …]

де Ім'яN1, Ім'я2, Ім'яN – імена масивів.

Наприклад, для очищення пам'яті, що виділялася під масиви СurЦiна та IntKilkTov потрібно використовувати такий оператор:

Erase CurZina, IntKilkTov.

Для організації введення даних у масиви змінних, використання елементів масивів для обробки і виводу результатів обробки у вигляді масивів та вирішення інших задач в VB і VBA використовуються так звані масиви елементів управління.

Масив елементів управління – це група елементів управління одного або декількох типів (класів) з одним ім'ям (властивість Name), що відрізняються один від одного індексом (властивість Index).

Для створення масиву елементів управління на формі в програмному середовищі Visual Basic необхідно виконати наступну послідовність дій:

а) помістити на формі (або в контейнері, наприклад у межах рамки – Frame) один елемент управління, наприклад текстове поле;

б) установити його основні властивості, у тому числі властивість (Name), наприклад "TxtКілкість";

в) скопіювати даний елемент управління в буфер обміну, а потім вставити його на форму;

г) при вставці відповісти "Да" на запит системи:

"You already have a control named "TxtКількість". Do you want to create a control array?" (Ви вже маєте елемент управління з ім'ям "TxtКількість". Ви хочете створити масив елементів управління?);

д) при необхідності для узгодження індексів у масивах змінних і масивах елементів управління варто відредагувати індекси, починаючи з кінця масиву.

Це пов'язане з тим, що при використанні оператора Option Base 1 нумерація індексів у масивах змінних починається з 1, а у відповідних масивах елементів управління – з 0.

Приклад масиву елементів управління, у який вводиться кількість проданих товарів по днях тижня у вигляді масиву текстових полів TxtКількість(0), TxtКількість(1), TxtКількість(2), ... TxtКількість(6), розміщених на формі, представлений на рис. 5.56.

Технологія створення масиву елементів управління на формі в програмному середовищі Visual Basic for Applications відрізняється від розглянутої вище.

Рис. 5.56. Приклад масиву текстових полів в VB

У цьому випадку необхідно виконати наступну послідовність дій:

а) помістити на формі контейнер, наприклад Frame (рамка для групи елементів управління);

б) установити основні властивості цього елемента управління, у тому числі (Name), наприклад "FraКількість";

в) розмістити на рамці (у фреймі) потрібну кількість елементів управління (текстових полів - Text або написів - Label);

г) звернути увагу на значення властивості Index даних елементів управління (для кожного контейнера індекс змінюється від 0 до Nmax-1, де Nmax – кількість елементів масиву);

Сукупність елементів управління в контейнері – це масив елементів управління з ім'ям FraКількість (i).

Приклад масивів елементів управління, у які вводяться (або виводяться) кількість проданих товарів і їхня вартість по днях тижня, представлений на рис. 5.57.

Рис. 5.57. Приклад масивів текстових полів і написів в VBA

При цьому для формування масиву елементів управління використані текстові поля (TextBox) для ціни, а для вартості -напису (Label).

В проектах як масиви елементів управління можуть використовуватися інші елементи управління, зокрема, може використовуватися список (ListBox) або поле зі списком (ComboBox). Їхні елементи нумеруються від 0 до Nmax-1, де Nmax – кількість елементів списку.

Доступ до елементів списку (ListBox) у коді забезпечується вказівкою номера елемента, наприклад, LstТиждень.List(3) – відповідає четвергу в списку днів тижня, а CmbМісяць.List(7) – серпню в списку місяців року.

Масиви елементів управління можуть використовуватися не тільки для вводу-виводу даних, але й для організації розгалужень.

Головною перевагою такого масиву елементів управління є те, що можна мати одну процедуру обробки подій для всіх елементів управління групи. На відміну від простого елемента управління в заголовку процедури обробки події елемента управління, що входить у масив, у дужках необхідно вказати параметр Index. Він може використовуватися, якщо обробка події залежить від номера елемента в масиві. Наприклад, якщо в групу зібрані перемикачі, то залежно від обраного перемикача розрахунки будуть виконуватися по-різному з використанням оператора Select Case (рис. 5.58).

Рис. 5.58. Масив елементів управління типу "Група перемикачів"

Для обробки події вибору перемикача в такій групі можна використовувати наступну процедуру, що буде виконуватися при натисканні по одному з елементів масиву (перемикачів) з ім'ям OptПокупці:

Private Sub OptПокупці _Click(Index As Integer)

Select Case Index

Case 0

TxtСплата.Text = Format(TxtВартість.Text, "# ##0.00")

Case 1

TxtСплата.Text = Format(TxtВартість.Text * 0.9, "# ##0.00")

Case 2

TxtСплата.Text = Format(TxtВартість.Text * 0.8, "# ##0.00")

End Select

End Sub

При запуску такого проекту на виконання при клацанні на обраному перемикачі в текстовому полі TxtСплата відображається результат розрахунків, що відповідає зазначеному типу покупця (рис. 5.59).

Рис. 5.59. Приклад використання групи перемикачів

Визначаючи властивості перемикачів OptionButtоn, одному з них,а саме властивості Value, доцільно привласнити значення True.