Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка_VB_Палагута.doc
Скачиваний:
2
Добавлен:
14.11.2019
Размер:
15.15 Mб
Скачать

4 Управління програмою за допомогою меню. Робота з масивами елементів управління, змінних

4.1 Управління програмою за допомогою меню

Мова програмування Visual Basic дає змогу помістити у програми, які розроблено її засобами, меню. Щоб додати до форми меню, слід її активізувати, виконати команду меню ToolsMenu Editor, у результаті відчиниться вікно редактору форм (рис.4.1).

У вікні редактору меню слід визначити складові елементи меню, їх властивості. Обов’язково треба ввести значення властивостей Caption – назва пункту меню, Name – ім’я елемента меню, з яким буде далі пов’язана відповідна процедура. Імена елементів меню починаються символами mnu, далі можуть йти будь-які букви латинського алфавіту, цифри. Імена повинні бути унікальними, не повторюватись. Щоб додати новий черговий елемент меню, слід скористатись кнопкою Next. Якщо новий елемент слід вставити у меню, яке вже існує, то слід виділити той пункт, перед яким додається новий, скористатись кнопкою Insert. Знищення активного елементу виконується з використанням кнопки Delete.

Рисунок 4.1 - Вікно редактору меню

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

Після визначення структури меню, можна починати створювати програмний код. Для цього у вікні форми треба обрати відповідний пункт меню, відчиниться вікно коду з заголовком процедури, яка має таке ім’я: ім’я елемента меню, знак підкреслення, ім’я події Click. Процедуру буде виконано, якщо під час роботи програми клацнути на відповідному пункті меню. Дії, які можуть виконуватись за допомогою команд меню, не відрізняються від операцій, що виконували розглянуті раніше командні кнопки.

Елементи меню на початку роботи програми можуть бути неактивними. Щоб визначити це, після створення програмного коду, можна для деяких елементів меню встановити значення властивості Enabled як False - виключити прапорець.

4.2 Робота з масивами елементів управління, змінних

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

Масивом є сукупність однотипних компонент, які мають подібні властивості, використовуються однаково. Масив повинен мати ім’я, як будь-який іншій об’єкт. Наприклад, масив текстових полів може мати назву txtName. Елементи масиву відрізняються між собою, як правило, лише значенням властивості Index. Ім’я кожного елементу масиву складається з імені, в якому в круглих дужках визначається значення властивості Index. Наприклад, елементом масиву текстових полів може бути поле txtName(3).

При роботі програми можна використовувати імена елементів масивів, визначаючи кожний окремий елемент, або використовуючи як індекс деяку змінну. Наприклад, у фрагменті коду програми знищується вміст таких елементів масиву txtName(1), txtName(2), txtName(3), txtName(4).

For i = 1 to 4

txtName(i).Text = “ ”

Next

Для створення масиву елементів управляння можна спочатку створити перший елемент, визначити усі його властивості (ім’я елементу повинно бути введено як ім’я масиву), скопіювати елемент у формі за допомогою буферу обміну. За замовчуванням середовище програмування Visual Basic створює при вставці з буферу обміну черговий елемент масиву, нумерація яких починається з 0.

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

Dim X(6) As String

Dim S(10)

Нумерація елементів масиву змінних починається з 0, тому наприклад, у масиві Х є такі елементи Х(0), Х(1), Х(2), Х(3), Х(4), Х(5).

У програми звернення до елементів масиву змінних, як і до елементів масивів об'єктів, може здійснюватись безпосередньо, або за допомогою змінної–індексу. Наприклад, у фрагменті коду програми обчислюється сума всіх елементів масиву Х

Sum = 0

For i = 0 to 5

Sum = Sum + X(i)

Next

Приклад програми

В икористання меню, масивів розглядається на прикладі програми обробки даних про реалізацію товарів. Під час роботи програми користувач повинен мати змогу ввести дані про реалізацію не менш 6 товарів: найменування, ціна, кількість. Управління роботою програми повинно здійснюватись за допомогою меню, в якому містяться режими Вікно, Розрахунок, Параметри. Команди меню Вікно призначені для очистки таблиці з попередніми даними і підсумкових значень, завершення роботи програми. За допомогою команд Меню Розрахунок користувач повинен мати змогу розрахувати суму по кожному товару (ціна*кількість), визначити загальну вартість усіх реалізованих товарів, підрахувати середню ціну товарів. У програму можна також помістити можливості зміни кольору символів усіх даних у вікні (можливі значення – чорний, синій, червоний), вибору кольору фону – білого чи жовтого, шрифту - звичайного або напівжирного. Вікно програми буде виглядати як на рис. 4.3.

Рисунок 4.3 - Вікно програми – приклада роботи з меню, масивами

На першому етапі розробки програми слід створити форму, помістити на неї такі елементи управління:

Об'єкт

Властивість

Значення

1

2

3

Форма (Form)

Name

frmMenu

Caption

Робота з меню, масивами

BackColor

білий

Етикетка (Label)

Name

lblZag

Caption

Відомість реалізації товарів

BackColor

білий

Font

14 пунктів, напівжирний курсив

AutoSize

True

Етикетка (Label)

Name

lblZ

Caption

Найменування

BackColor

білий

Font

12 пунктів, напівжирний

Alignment

2 - Center

BorderStyle

1 – Fixed Single

Далі слід клацнути на етикетці lblZ, скопіювати її в буфер обміну, виконати операцію вставки даних з буферу, на запитання системи відповісти Так. Етикетка lblZ після цієї операції стає об’єктом lblZ(0), тому що властивість Index елемента управління прийме значення 0. Новий об’єктом, який отримано з буферу обміну, буде мати ім’я lblZ(1), його властивість Index буде мати значення 1. Цю етикетку слід перетягти у відповідне місце, встановити значення властивості CaptionЦіна, налаштувати розмір об’єкта. Аналогічним чином слід створити об’єкти lblZ(2) - Кількість, lblZ(3)Сума. Таким чином, створено масив етикеток lblZ, у якому міститься 4 елемента.

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

  1. Створити поле txtN для введення найменування товару з такими властивостями:

    Текстове поле

    (Text Box)

    Name

    txtN

    Text

    

    Font

    12 пунктів, напівжирний

    BorderStyle

    1 – Fixed Single

  2. Скопіювати поле txtN у буфер обміну, вставити текстове поле з буферу 5 разів, пересвідчитись у правильності імен об’єктів: txtN(0), txtN(1), txtN(2), txtN(3), txtN(4), txtN(5). Створено масив текстових полів txtN, що нараховує 6 елементів.

  3. Створити поле txtС для введення ціни товару з такими властивостями:

    Текстове поле

    (Text Box)

    Name

    txtС

    Text

    

    Font

    12 пунктів, напівжирний

    BorderStyle

    1 – Fixed Single

  4. Скопіювати поле txtС у буфер обміну, вставити текстове поле з буферу 5 разів, пересвідчитись у правильності імен об’єктів: txtС(0), txtС(1), txtС(2), txtС(3), txtС(4), txtС(5). Створено масив текстових полів txtС, у якому є 6 елементів.

  5. Створити поле txtК для введення ціни товару з такими властивостями:

    Текстове поле

    (Text Box)

    Name

    txtК

    Text

    

    Font

    12 пунктів, напівжирний

    BorderStyle

    1 – Fixed Single

  6. Скопіювати поле txtК у буфер обміну, вставити текстове поле з буферу 5 разів, пересвідчитись у правильності імен об’єктів: txtК(0), txtК(1), txtК(2), txtК(3), txtК(4), txtК(5). Створено масив текстових полів txtК, що нараховує 6 елементів.

  7. Створити поле txtS для виведення вартості товару з такими властивостями:

    Текстове поле

    (Text Box)

    Name

    txtS

    Text

    

    Font

    12 пунктів, напівжирний

    BorderStyle

    1 – Fixed Single

    Enabled

    False

  8. Скопіювати поле txtS у буфер обміну, вставити текстове поле з буферу 5 разів, пересвідчитись у правильності імен об’єктів: txtS(0), txtS(1), txtS(2), txtS(3), txtS(4), txtS(5). Створено масив текстових полів txtS.

Додати до форми такі етикетки для виведення підсумкових значень:

Об'єкт

Властивість

Значення

Етикетка (Label)

Name

lblPid

Caption



BackColor

білий

Font

12 пунктів, напівжирний курсив

Етикетка (Label)

Name

lblSC

Caption



BackColor

білий

Font

12 пунктів, напівжирний курсив

Після визначення візуального вигляду форми можна приступити до створення меню. Для цього слід пересвідчитись, що вікно форми є активним, виконати команду ToolsMenu Editor, у вікні редактору меню визначити складові елементи меню, їх властивості, рівень підпорядкування як у таблиці. При створенні наступного елемента меню слід використовувати кнопку Next, для зміни рівня підпорядкування – кнопки , .

Caption

Name

Структура меню

Вікно

mnuWind

Вікно

Очистити

mnuClear

. . . . Очистити

Таблицю

mnuTabl

. . . . . . . . Таблицю

Підсумки

mnuPid

. . . . . . . . Підсумки

Вихід

mnuExit

. . . . Вихід

Розрахунок

mnuRoz

Розрахунок

Сума

mnuRSum

. . . . Сума

Підсумок

mnuRPid

. . . . Підсумок

Середня ціна

mnuRSC

. . . . Середня ціна

Далі можна починати розробку коду програми. Щоб створити процедуру, пов’язану з режимом меню, слід у вікні форми обрати відповідний режим у меню, клацнути на ньому лівою кнопкою миші. В наслідок цих дій відчиняється вікно коду з заголовком процедури, ім’я якої складається з імені пункту меню, знака підкреслення і назви події Click – процедуру буде виконано, якщо під час роботи програми клацнути на пункті меню.

Створимо процедуру для завершення роботи програм:

Private Sub mnuExit_Click()

End

End Sub

Дію програми вже можна перевірити, тобто можна запустити програму на виконання, завершити роботу програми.

Програма повинна працювати таким чином:

  1. Після завантаження програми користувач повинен мати змогу ввести дані для розрахунків.

  2. У меню Розрахунок активним є лише пункт Сума тому, що при виконанні розрахунку суми дані про кількість товару в кожному рядку таблиці та суму записуються в масиви змінних Sum, K, в яких по 6 елементів. Обчисленні значення будуть використовуватись для подальших розрахунків. Масиви змінних слід оголосити у розділі General Declaration оператором:

Dim Sum(6), K96)

  1. Після розрахунку сум по товарах користувач не повинен мати змогу змінювати значення текстових полів для введення даних, значення властивості Enabled зміниться на False. У меню команда РозрахунокСума повинна стати неактивною (значення властивості Enabled елементу меню зміниться на False), а команди РозрахунокПідсумок, РозрахунокСередня ціна навпаки повинні стати активними.

  2. Після очистки полів таблиці текстові поля для введення даних стають доступними, команда меню РозрахунокСума активною, команди меню РозрахунокПідсумок, РозрахунокСередня ціна неактивними.

Обов’язкові процедури програми повинні бути такими:

Дані в рядку коду

Коментар

1

2

Dim Sum(6), K(6)

Оголошення масивів Sum(6), K(6).

Private Sub mnuTabl_Click()

Процедура виконується, якщо клацнути на пункті Таблицю в режимі Очистити пункту меню Вікно.

For i = 0 To 5

Змінна циклу і використовується для роботи з індексами елементів масивів, тому вона може змінюватись від 0 до 5.

txtN(i).Text = " "

Властивості Text і-го елемента масиву txtN привласнюється значення – порожній рядок.

txtC(i).Text = " "

Знищується вміст чергового поля для введення ціни.

txtK(i).Text = " "

Знищується вміст чергового поля для введення кількості.

txtS(i).Text = " "

Знищується вміст поля для виведення суми.

txtN(i).Enabled = True

Властивості Enabled поля txtN(i) привласнюється значення True, після цього можна буде змінювати значення поля за допомогою клавіатури.

txtC(i).Enabled = True

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

txtK(i).Enabled = True

як у попередньому пункті

Next

І привласнюється значення і+1, якщо і менше або рівно 5, починається наступна ітерація циклу, в іншому випадку цикл завершує свою роботу.

1

2

mnuRSum.Enabled = True

Команда меню РозрахунокСума стає активною.

mnuRPid.Enabled = False

Команда меню РозрахунокПідсумок стає неактивною.

mnuRSC.Enabled = False

Команда меню РозрахунокСередня ціна стає неактивною.

End Sub

Кінець процедури.

Private Sub mnuPid_Click()

Заголовок процедури, які буде виконано якщо в меню обрати команду ВікноОчисткаПідсумки.

lblPid.Caption = " "

Знищується текст у етикетці lblPid.

lblSC.Caption = " "

Знищується текст у етикетці lblSC.

End Sub

Кінець процедури.

Private Sub mnuRSum_Click()

Заголовок процедури, яка пов’язана з командою меню РозрахунокСума.

For i = 0 To 5

Для і, що змінюється від 0 до 5 виконується такі дії:

C = Val(txtC(i).Text)

Змінній С привласнюється значення властивості Text чергового елемента масиву txtC(i), яке при цьому перетворюється з числового на текстове.

K(i) = Val(txtK(i).Text)

Елементу масиву змінних K(i) привласнюється значення, яке введено в елемент масиву полів txtK(i).

Sum(i) = K(i) * C

Елементу масиву змінних Sum(i) привласнюється значення добутку ціни на кількість.

If Sum(i) <> 0 Then

Якщо значення суми, яке отримано, не рівно 0, то

txtS(i).Text = Str(Sum(i))

виводиться значення суми у елементі масиву текстових полів txtS(i).

End If

txtN(i).Enabled = False

Елемент масиву txtN(i) для введення найменувань товарів стає недоступним для подальшого редагування.

txtC(i).Enabled = False

Елемент масиву txtC(i) для введення цін товарів стає недоступним для подальшого редагування.

txtK(i).Enabled = False

Елемент масиву txtК(i) для введення кількості стає недоступним для подальшого редагування.

Next

І привласнюється значення і+1, якщо і менше або рівно 5, починається наступна ітерація циклу, в іншому випадку цикл завершує свою роботу.

mnuRSum.Enabled = False

Команда меню РозрахунокСума стає неактивною.

mnuRPid.Enabled = True

Команда меню РозрахунокПідсумок стає активною.

mnuRSC.Enabled = True

Команда меню РозрахунокСередня ціна стає активною.

End Sub

Кінець процедури.

1

2

Private Sub mnuRPid_Click()

Заголовок процедури, яка пов’язана з командою меню РозрахунокПідсумок.

Pid = 0

Змінній Pid для накопичення підсумку надається значення 0.

For i = 0 To 5

Для і від 0 до 5

Pid = Pid + Sum(i)

змінній Pid привласнюється значення – попереднє значення Pid + значення поточного елементу масиву змінних Sum(i), в якому зберігаються розраховані суми по товарах.

Next

Перехід до наступної ітерації або кінець циклу.

lblPid.Caption = "Підсумок: " + Str(Pid) + " грн."

Друкування результату в етикетці lblPid.

End Sub

Кінець процедури.

Private Sub mnuRSC_Click()

Заголовок процедури, яка пов’язана з командою меню РозрахунокСередня ціна.

Pid = 0

Змінній Pid для накопичення підсумку надається значення 0.

Kol = 0

Змінній Kol для накопичення загальної кількості товарів привласнюється значення 0.

For i = 0 To 5

Для і від 0 до 5

Pid = Pid + Sum(i)

змінній Pid привласнюється значення – попереднє значення Pid + значення поточного елементу масиву змінних Sum(i), в якому зберігаються розраховані суми по товарах.

Kol = Kol + K(i)

змінній Kol привласнюється значення – попереднє значення Kol + значення поточного елементу масиву змінних К(i), в якому зберігаються дані про кількість реалізованих товарів по рядках таблиці.

Next

Перехід до наступної ітерації або кінець циклу.

lblSC.Caption = "Середня ціна: " + Str(Pid / Kol) + " грн."

Друкування результату в етикетці lblSC.

End Sub

Кінець процедури.

Для того, щоб встановити правильні значення параметрів, які визначають активність команд меню, слід перейти у вікно редактора меню, для елементів меню встановити такі значення властивості Enabled:

  • для елемента mnuRSum (РозрахунокСума) – True (включити прапорець, щоб визначити, що пункт меню є активним);

  • для елемента меню mnuRPid (РозрахунокПідсумок) – False (виключити прапорець, режим меню є неактивним, оскільки щоб підрахувати підсумки, слід спочатку обчислити суми реалізації товарів);

  • для елемента mnuRSC (РозрахунокСередня ціна) – False.

Після введення програмного коду програма виконує всі необхідні функції, може бути апробована.

Щоб розширити можливості програми за бажанням можна додати ще один режим меню Параметри. Для цього треба активізувати форму, перейти до редактору меню командою ToolsMenu Editor, у вікні редактору додати до меню такі елементи:

Caption

Name

Структура меню

Параметри

mnuParam

Параметри

Колір

mnuColor

. . . . Колір

Символ

mnuSimbl

. . . . . . . . Символ

чорний

mnuBlack

. . . . . . . . . . . . чорний

синій

mnuBlue

. . . . . . . . . . . . синій

червоний

mnuRed

. . . . . . . . . . . . червоний

Фон

mnuF

. . . . . . . . Фон

білий

mnuWhite

. . . . . . . . . . . . білий

жовтий

mnuYellow

. . . . . . . . . . . . жовтий

Шрифт

mnuFont

. . . . Шрифт

звичайний

mnuNormal

. . . . . . . . звичайний

напівжирний

mnuBold

. . . . . . . . напівжирний

Для зміни кольору символів, фону об’єктів, слід змінювати значення властивостей BackColor – колір фону, ForeColor – колір символів. Це можна зробити за допомогою функції QBColor(), параметрами якої є такі кольори:

Колір

Номер

Колір

Номер

Black

Чорний

0

Dark Gray

Темно - сірий

8

Blue

Синій

1

Light Blue

Голубий

9

Green

Зелений

2

Light Green

Світло - зелений

10

Cyan

Бірюзовий

3

Light Cyan

Світло - бірюзовий

11

Red

Червоний

4

Light Red

Рожевий

12

Magenta

Фіолетовий

5

Light Magenta

Світло - фіолетовий

13

Brown

Коричневий

6

Yellow

Жовтий

14

Light Gray

Сірий

7

White

Білий

15

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

Дані в рядку коду

Коментар

Private Sub mnuBlue_Click()

Процедура, яка виконується якщо обрати команду ПараметриКолірСимволсиній.

mnuBlack.Enabled = True

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

mnuBlue.Enabled = False

Пункт меню для вибору синього кольору символів стає неактивним.

mnuRed.Enabled = True

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

lblZ.ForeColor = QBColor(1)

Колір символів етикетки lblZ стає синім (код синього кольору - 1).

For i = 0 To 3

Для і від 0 до 3

lblZag(i).ForeColor = QBColor(1)

кожний і-ий елемент масиву етикеток lblZag змінює свій колір на синій.

Next

lblPid.ForeColor = QBColor(1)

Етикетка для виведення підсумку lblPid змінює колір символів на синій.

lblSC.ForeColor = QBColor(1)

Етикетка для виведення середньої ціни lblSC змінює колір символів на синій.

End Sub

Кінець процедури.

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

Private Sub mnuBlack_Click()

Private Sub mnuRed_Click()

mnuBlack.Enabled = False

mnuBlack.Enabled = True

mnuBlue.Enabled = True

mnuBlue.Enabled = True

mnuRed.Enabled = True

mnuRed.Enabled = False

lblZ.ForeColor = QBColor(0)

lblZ.ForeColor = QBColor(4)

For i = 0 To 3

For i = 0 To 3

lblZag(i).ForeColor = QBColor(0)

lblZag(i).ForeColor = QBColor(4)

Next

Next

lblPid.ForeColor = QBColor(0)

lblPid.ForeColor = QBColor(4)

lblSC.ForeColor = QBColor(0)

lblSC.ForeColor = QBColor(4)

End Sub

End Sub

Перед апробацією цієї гілки меню у вікні редактора меню слід визначити такі значення властивості Enabled:

  • для елемента mnuBlack False (виключити прапорець, щоб визначити, що пункт меню є неактивним);

  • для елемента меню mnuBlue - True;

  • для елемента mnuRed True.

Для зміни кольору фону треба створити такі процедури, пов’язані з командами меню ПараметриКолірФонбілий (mnuWhite), ПараметриКолірФонжовтий (mnuYellow):

Private Sub mnuWhite_Click()

Private Sub mnuYellow_Click()

mnuWhite.Enabled = False

mnuWhite.Enabled = True

mnuYellow.Enabled = True

mnuYellow.Enabled = False

frmMenu.BackColor = QBColor(15)

frmMenu.BackColor = QBColor(14)

lblZ.BackColor = QBColor(15)

lblZ.BackColor = QBColor(14)

For i = 0 To 3

For i = 0 To 3

lblZag(i).BackColor = QBColor(15)

lblZag(i).BackColor = QBColor(14)

Next

Next

For i = 0 To 5

For i = 0 To 5

txtN(i).BackColor = QBColor(15)

txtN(i).BackColor = QBColor(14)

txtC(i).BackColor = QBColor(15)

txtC(i).BackColor = QBColor(14)

txtK(i).BackColor = QBColor(15)

txtK(i).BackColor = QBColor(14)

txtS(i).BackColor = QBColor(15)

txtS(i).BackColor = QBColor(14)

Next

Next

lblPid.BackColor = QBColor(15)

lblPid.BackColor = QBColor(14)

lblSC.BackColor = QBColor(15)

lblSC.BackColor = QBColor(14)

End Sub

End Sub

Після створення процедур для зміни кольору фону необхідно правильно встановити властивості Enabled для елементів меню:

  • для елемента mnuWhiteFalse (виключити прапорець, щоб визначити, що пункт меню є неактивним);

  • для елемента mnuYellowTrue.

Встановити напівжирний або звичайний шрифт символів усіх об’єктів форми можна за допомогою властивості FontBold, яка може приймати значення True – напівжирний стиль шрифту, False – звичайний шрифт.

Для зміни шрифтів елементів управління в формі необхідно створити процедури для елементів меню mnuBold (ПараметриШрифтнапівжирний) і mnuNormal (ПараметриШрифтзвичайний).

Private Sub mnuBold_Click()

Private Sub mnuNormal_Click()

mnuNormal.Enabled = True

mnuNormal.Enabled = False

mnuBold.Enabled = False

mnuBold.Enabled = True

lblZ.FontBold = True

lblZ.FontBold = False

For i = 0 To 3

For i = 0 To 3

lblZag(i).FontBold = True

lblZag(i).FontBold = False

Next

Next

For i = 0 To 5

For i = 0 To 5

txtN(i).FontBold = True

txtN(i).FontBold = False

txtC(i).FontBold = True

txtC(i).FontBold = False

txtK(i).FontBold = True

txtK(i).FontBold = False

txtS(i).FontBold = True

txtS(i).FontBold = False

Next

Next

lblPid.FontBold = True

lblPid.FontBold = False

lblSC.FontBold = True

lblSC.FontBold = False

End Sub

End Sub

Перед використанням цієї функції програми слід визначити такі значення властивості Enabled для елементів меню:

  • для елемента mnuBoldFalse;

  • для елемента mnuNormalTrue.