ТОП 10:

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



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

Масивом є сукупність однотипних компонент, які мають подібні властивості, використовуються однаково. Масив повинен мати ім’я, як будь-який іншій об’єкт. Наприклад, масив текстових полів може мати назву 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 - Вікно програми – приклада роботи з меню, масивами

 

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

Об'єкт Властивість Значення
Форма (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)

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

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

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

Дані в рядку коду Коментар
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, починається наступна ітерація циклу, в іншому випадку цикл завершує свою роботу.

 


 

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 Кінець процедури.

 

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 Чорний Dark Gray Темно - сірий
Blue Синій Light Blue Голубий
Green Зелений Light Green Світло - зелений
Cyan Бірюзовий Light Cyan Світло - бірюзовий
Red Червоний Light Red Рожевий
Magenta Фіолетовий Light Magenta Світло - фіолетовий
Brown Коричневий Yellow Жовтий
Light Gray Сірий White Білий

 


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

Дані в рядку коду Коментар
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:

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

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

· для елемента mnuRedTrue.

Для зміни кольору фону треба створити такі процедури, пов’язані з командами меню ПараметриКолірФонбілий (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.

 

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

1. Як створити меню в програмі? Які властивості елементів меню Вам відомі?

2. Що таке масив елементів управління?

3. Коли можна встановлювати значення False властивості Enabled елементу масиву?

4. Як відрізняються між собою елементи масиву об’єктів?

5. Яким чином можна звернутися до окремого елементу масиву?

6. Як оголосити масиви змінних?

7. Як працювати з масивами у коді програми?

 

4.4 Практичні завдання

Завдання

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

Меню програми повинно мати таку структуру:

Вікно   Розрахунок   ?  
     
             
  Очистка всієї таблиці     Інформаційні рядки     Інформація про автора
     
               
  Вихід     Підсумкові значення      
   
                     

У формі слід надати змогу користувачеві ввести 5 інформаційних рядків, розрахувати підсумкові значення по рядках і таблиці в цілому. Розрахункові показники помічено символом *.

Звіт про роботу повинен вміщувати:

- блок-схему алгоритмічного процесу розв’язання задачі;

- роздруковані форми програми;

- роздрукований код програми.

Варіант №1

Створити програму, що дозволяє обробити такі дані:







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

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