
- •5.05150104 "Дизайн друкованої продукції"
- •Робота з модулями і класами
- •Модулі і класи
- •Створення програмної бібліотеки
- •Створення модулів
- •Мал. 4.1. Діалогове вікно Add Procedure.
- •Прискорений спосіб додавання процедур
- •Процедури
- •Функції
- •Мал. 4.2. Вікно програми з функцією для обчислення кубічного кореня.
- •Мал. 4.3. Код виклику функції CubeRoot.
- •Мал. 4.4. Функція повертає кубічний корінь 3.
- •Мал. 4.5. Змінене вікно програми і форма.
- •Мал. 4.6. Новий варіант додатка. Тестування у вікні відпадки
- •Оновлення програмної бібліотеки
- •Передача параметрів
- •Мал. 4.7. Вікно додатка-прикладу.
- •Мал. 4.8. Зміна властивості Caption в програмі.
- •Ключове слово Optional
- •Ключове слово ByRef
- •Ключове слово ByVal
- •Ключове слово ParamArray
- •Ключові слова Public і Private
- •Закриті процедури (Private)
- •Мал. 4.9. Сім форм у вікні проекту.
- •Відкриті процедури (Public)
- •Робота з модулями класів
- •Властивості
- •Створення класу SmartForm
- •Використання Class Builder
- •Мал. 4.10. Утиліта Class Builder.
- •Мал. 4.12. Діалогове вікно Property Builder.
- •Мал. 4.13. Діалогове вікно Event Builder.
- •Мал. 4.14. Клас Person з властивостями, подіями і методами.
- •Що нового ми дізналися?
- •5. Створення і використання меню і панелей інструментів
- •Для чого потрібні меню і панелі інструментів
- •Мал. 5.1. Меню і панелі інструментів Visual Basic.
- •Об'єкт меню
- •Мал. 5.2. Редактор меню.
- •Властивості меню
- •Методи меню
- •Створення меню в редакторові меню
- •Мал. 5.3 Створення меню в редакторові меню.
- •Мал. 5.4. Працююче меню.
- •Проектування меню
- •Створення панелей інструментів
- •Мал. 5.5. Завдання властивості Style. Створення кнопок на панелі інструментів
- •Мал. 5.6. Форма із панеллю інструментів. Створення малюнків на кнопках
- •Мал. 5.7. Вставка растрових зображень в список зображень.
- •Мал. 5.8. Зв'язування панелі інструментів із списком зображень.
- •Мал. 5.9. Панель інструментів зі значками.
- •Використання вдосконаленої панелі
- •Мал. 5.11. Вкладка General в сторінках властивостей вдосконаленої панелі.
- •5.12. Вкладка Bands в сторінках властивостей вдосконаленої панелі.
- •Мал. 5.14. Вдосконалена панель у дії.
- •Що нового ми дізналися?
- •Урок 6. Логіка і послідовність виконання програми
- •Як "думає" комп'ютер?
- •Логічні оператори
- •Логічний оператор and
- •Логічний оператор eqv
- •Логічний оператор or
- •Логічний оператор xor
- •Логічний оператор not
- •Порівняння
- •Перевірка умови "рівно"
- •Мал. 6.1. Гра із вгадуванням числа
- •Перевірка умови "більше"
- •Мал. 6.2. Назване число більше за загадане.
- •Перевірка умови "менше"
- •Мал. 6.3. Назване число менше за загадане. Перевірка умови "не рівно"
- •Перевірка умови "більше або рівно"
- •Мал. 6.5. Перевищення граничної швидкості. Перевірка умови "менше або рівно"
- •Ухвалення рішень в програмі
- •Оператор If..Then..Else
- •Функція iIf
- •Оператор Select Case..End Select
- •Виконання дій, що повторюються
- •Цикл For..Next
- •Цикл Do..Loop
- •Цикл While..Wend
- •Перебір колекцій
- •Приклад використання циклів
- •Мал. 6.7. Створення команди меню.
- •Мал. 6.8. Створення масиву елементів.
- •Мал. 6.9. Форма з масивом текстових полів.
- •Мал. 6.10. Приклад роботи з циклами. Що нового ми дізналися?
- •Урок 7. Змінні
- •Перше знайомство із змінними
- •Що таке пам'ять?
- •Типи змінних
- •Байтові змінні
- •Строкові змінні
- •Puc. 7.3. Діалогове вікно Options.
- •Мал. 7.4. Вікно програми для прикладу.
- •Мал. 7.5. Вікно додатка-прикладу.
- •Універсальні змінні
- •Зона видимості змінних
- •Мал. 7.6. Зона видимості змінних.
- •Мал. 7.7. Форма для реєстрації користувачів.
- •Ключове слово Static
- •Мал. 7.8. Використання циклу For..Next.
- •Динамічні масиви
- •Константи
- •Мал. 7.10. Результат обчислення площі круга.
- •Що нового ми дізналися?
Мал. 6.3. Назване число менше за загадане. Перевірка умови "не рівно"
Якщо ви хочете переконатися в тому, що одне значення відмінне від іншого, слід скористатися оператором <>:
if x <> 3 Then
MsgBox "x не дорівнює 3"
End If
Цей оператор буває особливо корисним в ситуаціях, коли вимагається перевірити, що користувач ввів значення. Щоб зрозуміти, чому це так, Запустіть програму з попереднього прикладу:
1. Натисніть кнопку Загадати число, щоб згенерувати випадкове число від 1 до 10.
2. Натисніть кнопку Вгадати.
3. У вікні введення, що відкрилося, натисніть кнопку OK або Cancel
З'являється повідомлення про помилку – не співпадіння типів. Натисніть кнопку End, щоб завершити роботу програми. Не вдаючись до подробиць процесу відладки, скажу, що помилка виникла в наступному рядку:
guess = CInt(InputBox(msg))
Річ у тому, що функція CInt() повинна отримувати дані, що перетворюються в ціле число. Якщо функція викликається для порожнього рядка, видається повідомлення про помилку.
Щоб запобігти помилці, перед перевіркою слід переконатися в тому, що користувач ввів деяке значення. Оператор <> ідеально підходить для цієї мети! Перевірку можна виконати наступною командою:
If rс <> "" Then
У перекладі людською мовою це означає: "Якщо значення guess не рівно порожньому рядку, то зробити щось".
4. Відредагуйте процедуру події Click кнопки cmdGuess і приведіть її до наступного виду:
Private Sub cmdGuess__Click()
Dim guess As Integer
Dim msg As String
Dim cap As String
Dim rc As String
'Створити повідомлення
msg = "Введіть число від 1 до 10"
'Отримати число від користувача
rс = InputBox(msg)
'Переконатися в тому, що користувач ввів значення..
If rс <> "" Then
'Перетворити рядок в ціле число
guess = CInt(rc)
' Число вгадане вірно?
Select Case guess
Case Is = SecretNumber
' Так! Користувач вгадав!
msg = "Ви вгадали"!
cap = "Вірно"!
' Вивести повідомлення
MsgBox msg, vbExclamation, cap
' Закінчити гру
End
Case Is > SecretNumber
' Ні. Наступна спроба..
msg = "Невірно. Загадане число менше".
cap = "Спробуйте знову"!
MsgBox msg, vbInformation, cap
Case Is < SecretNumber
' Ні. Наступна спроба..
msg = "Невірно. Загадане число більше".
cap = "Спробуйте знову"!
MsgBox msg, vbInformatidn, cap
End Select
Else
msg = "Ви повинні ввести число"!
cap = "Введіть число"!
MsgBox msg, vbInformation, cap
End If
End Sub
5. Збережете і Запустіть проект
Перевірка умови "більше або рівно"
Іноді доводиться перевіряти, що деяка величина більше іншої або дорівнює їй. Для цієї мети використовується оператор >=:
if x >= 3 Then
MsgBox "x більше або рівне 3"
End If
Приведений фрагмент надзвичайно простий. Якщо значення x більше або рівне 3, програма виводить вікно повідомлення.
Ймовірно, ви вже зрозуміли, як користуватися цим оператором. Припустимо, ви пишете програму для управління пасажирським літаком. Звичайно, якщо пілот летить занадто швидко, його необхідно попередити. Перевищення швидкості може привести до перевантаження і викликати катастрофічні ушкодження літака. Проте на літаку працює ваша (звичайно ж, чудова!) програма; вона перевіряє швидкість і переконується в тому, що пілот не перевищив максимальну рекомендовану швидкість. Виконаєте наступні дії:
1. Створіть новий проект командою File > New Project.
2. У діалоговому вікні New Project виберіть значок Standard EXE. Натисніть кнопку ОК.
3. Задайте властивості Name форми значення frmMain, а властивості Caption - значення Датчик швидкості.
4. Створіть на формі вертикальну смугу прокрутки і задайте її властивості Name значення vscThrottle. Розташуєте смугу в правій частині форми і розтягніть її на усю висоту форми.
5. Задайте властивості Мах смуги vscThrottle значення 100.
6. Створіть на формі frmMain напис. Задайте її властивості Name значення lbl Airspeed, а властивості Caption - значення Поточна швидкість:.
7. Двічі клацніть на формі frmMain в конструкторі форм, щоб відкрити вікно програми.
8. Вставте наступний фрагмент в секцію(Declarations) форми frmMain:
Option Explicit
Private Throttle As Integer ' Поточне значення газу
Private Const VNE = 427 ' Гранична швидкість
9. Ініціалізуйте значення газу в наступному фрагменті, який необхідно вставити в процедуру події Load форми frmMain,:
Private Sub Form_Load()
vscThrottle.Value = 100
End Sub
10. Вставте наступний фрагмент в процедуру події Change елементу vscThrottle:
Private Sub vsc_Throttle_Change()
Dim ias As Integer ' Поточна швидкість
' Відстань до верхньої позиції смуги прокрутки
Throttle = 100 - vscThrottle.Value
' Вичислити поточну швидкість за значенням газу
ias = Throttle * 4.5
' Відновити датчик швидкості
lblAirspeed.Caption = "Поточна швидкість: " & Trim$(Str$(ias))
' Перевірити поточну швидкість і переконатися, що вона не перевищує граничної
If ias >= VNE Then
MsgBox "Зменшити газ"!, vbCritical, "Перевищення швидкості"
End If
End Sub
Цю процедуру варто розглянути детальніше. Перша частина, в якій ми обчислюємо значення Throttle, потрібна через те, що при знаходженні бігунка у верхній позиції смуги прокрутки її властивість Value за умовчанням дорівнює 0. Максимальному газу на літаку, навпаки, відповідає верхнє положення руків'я ("від себе"). Наша програма імітує літакове руків'я газу за допомогою смуги прокрутки.
Рядок, в якому розраховується поточна швидкість (ias), не занадто точний. Обчислення швидкості справжнього літака - завдання складна і така, що виходить далеко за рамки цієї книги. Я скористався простою формулою, яка дозволяє літаку розганятися до 400 вузлів. Попередження виводиться в наступному фрагменті:
' Перевірити поточну швидкість і переконатися,
' що вона не перевищує граничної
If ias >= VNE Then
MsgBox "Зменшити газ"!, vbCritical, "Перевищення швидкості"
End If
Якщо поточна швидкість перевищує граничну або дорівнює їй, програма виводить застережливе повідомлення.
11. Збережете і Запустіть проект. Переміщайте бігунок на смузі прокрутки і стежите за тим, як росте поточна швидкість. Коли вона досягне граничної, з'являється попередження (мал. 6.5).