
- •05:58 Хвилини :q Секунди о
- •Puc.X.Is Форма та вікно програми «Таймер»
- •IfInStr(Text3.Text, ".") 00 Then
- •Десяткова крапка ","
- •Під час ініціалізації форми властивості Tag кожній цифровій кнопці треба привласнити значення, рівне цифрі, яка повинна з'явиться на індикаторі калькулятора.
- •Процедура DigitClick обробляє клацання на кнопках йди _ йди % якості вхідного параметра цієї процедури використовується ім'я кнопки, для якої ця процедура повинна виконатися.
- •Pue.1.10 Форма та вікно програми «Час»
- •VbOkOnly, "Таймер")
- •1 Пал під таймера
Базові компоненти
Загальні зауваження
Процес створення програми в Visual Basic складається з двох кроків. Спочатку потрібно створити форму програми (діалогове вікно), потім написати процедури обробки подій. Форма додатка (так прийнято називати прикладні програми, що працюють в Windows) створюється шляхом додавання у форму компонентів і подальшій їх налаштування. У формі практично будь-якого застосування є компоненти, які забезпечують інтерфейс (взаємодія) між програмою і користувачем. Такі компоненти називають базовими. До базових компонентів можна віднести наступні:
Label — поле виведення тексту;
TextBox — поле введення/редагування тексту;
CommandButton — командна кнопка;
Checkbox — незалежна кнопка вибору;
OptionButton — залежна кнопка вибору;
ListBox — список вибору;
ComboBox — комбінований список вибору.
Вид компоненту, його розмір і поведінку визначають значення властивостей (характеристик) компоненту. Основну роботу в програмі виконують процедури обробки подій. Початкову інформацію програма може отримати з полів введення/редагування (компонент — TextBox), списку вибору (компонент — ListBox) або комбінованого списку (компонент — Combo Box).
Для введення значень логічного типа можна використовувати компоненти CheckBox і OptionButton. Кінцеві або проміжні результати програма може вивести в полі виведення тексту (компонент — Label) або у вікно повідомлення (функція — MsgBox).
Для перетворення тексту, що знаходиться, наприклад, в йолі введення/редагування, в число потрібно використовувати функцію Val. Для перетворення числа, наприклад значення змінної, в рядок можна використовувати функцію Format або CStr.
Завдання 1. Програма перераховує швидкість вітру з "метрів в секунду" в "кілометри в годину". Форма програми приведена на рис. 1.1.
ч. Швидкість вітру
Програма перераховує швидкість з метрів/секунду у кілометри/годину. Введіть швидкість (ціле число] і клацнггь по кнопці Перерахунок.
Перерахунок
Label3
Рис.1.1. Форма програми «Швидкість вітру»
клацання на кнопці Перерахунок Private Sub Commandi_Click()
Dim ms As Integer ' швидкість м/сек
Dim kmh As Single ' швидкість км/ч
ms = Val(Texti.Text) ' введення початкових даних kmh = ms *3. 6 ' перерахунок виведення результату Label3.Caption = Format$(ms)+ "л«/сек - це " + _ Format$(kmh)+ " км/ч"
End Sub
Завдання 2. Програма, як і в прикладі і, перераховує швидкість вітру з "метрів в секунду" в "кілометри в годину". Форма програми приведена на рис.і.і. Програма складена таким чином, що
користувач зміг ввести в поле Швидкість [м/сік] тільки ціле
позитивне число.
клацання на кнопці Перерахунок Private Sub Commandi _Click()
Dim ms As Integer ' швидкість м/сек
перевіримо, чи ввів користувач число в полі Швидкість JfLen(Texti.Text) = о Then
якщо число не введене, то виводиться повідомлення "Потрібно ввести швидкість''
Label3.Caption = "Потрібно ввести швидкість"
Else
ms = Val(Texti.Text) ' введення початкових даних kmh = ms *3.6’ перерахунок виведенню результату ЬаЬеїз.СарНоп = Format$(ms)+ п м/сек - це " +_ Format$(kmh)+ "км/ч"
End If End Sub
натиснення клавіші в полі Швидкість
Private Sub Texti_KeyPress(KeyAscii As Integer)
До поля Швидкість можна вводити тільки цифри. Дана процедура перевіряє, чи є введений символ цифрою. Якщо немає, то введений символ замінюється нульовим і в молі редагування не відображається. KeyAscii - це код клавіші, що натискає. 48 - 51 - коди цифр від одо д, 8- код клавіші <Backspace>.
If Not (KeyAscii >= 48 And KeyAscii <=57 Or KeyAscii=8)
Then KeyAscii=o End If End Sub
Завдання 3. Програма перераховує швидкість вітру з "метрів в секунду" в "кілометри в годину". Форма програми приведена на рис.і.і. Програма складена таким чином, що користувач може ввести в поле Швидкість тільки ціле позитивне число. Обчислення виконується як в результаті клацання мишею на кнопці Перерахунок, так і в результаті натиснення клавіші < Enter>, після введення останньої цифри даних в полі Швидкість.
процедура перераховує швидкість з м/сек в км/ч Private Sub WindSpeedQ Dim ms As Integer ' швидкість м/сек
Dim kmh As Single ' швидкість км/ч
перевіримо, чи ввів користувач число в полі Швидкість
IfLen(Texti.Text)= о Then якщо число не введене то виводиться повідомлення "Потрібно ввести швидкість"
ЬаЬеІз.Сарііоп = " Потрібно ввести швидкість "
If sec <> o Then sec = sec - і Else sec =59 min = min - і End If
Call ShowTime ’ виведення часу, що залишився If (min = o) And (sec = o) Then заданий інтервал витік
Timen.Enabled = False ' зупинка таймера
Call MsgBox("Заданий інтервал витік,", _ vbOKOnly, "Таймер")
"Заданий інтервал витік." -текст повідомлення vbOKOnly - вікно повідомлення міститиме тільки кнопку "ОК" "Таймер" - заголовок повідомлення.
Commandi.Caption = "Пуск"
Labels.Visible = False ' приховування індикатора поля введення
інтервалу і підпису полів потрібно зробити видимими
Labeli. Visible = True
Texti.Visible = True
Labels.Visible = True
Texts.Visible = True
Texti.Text = "o"
Texts.Text = "o"
End If End Sub
Завдання 15. Програма "Таймер". Після закінчення заданого інтервалу часу, відтворюється звуковий сигнал. Форма і вікно програми приведені на рис.1.12. Відтворення звуку здійснюється за допомогою АРІ-функции Playsound з бібліотеки winmm.dll (бібліотека Windows Multimedia).
Таймер
05:58 Хвилини :q Секунди о
Стоп
Puc.X.Is Форма та вікно програми «Таймер»
функція відтворення звукового файлу
Private Declare Function PlaySound Lib "winmm.dll"_ Alias "PlaySoundA" (ByVal IpszSoundName As String _ ByVal hModule As Long, ByVal uFlags As Long) As Long
IpszSoundName - ім'я файлу або інший ідентифікатор, hModule - номер модуля прикладної програми, що містить звук (якщо даний параметр не потрібний, то йому встановлюється ' значення о), uFlags - прапори специфікації відтворного файлу, наприклад: SND ALIAS - &Н10000 - відтворення системного звуку, SND_ASYNC = &Ні - асинхронне відтворення, тобто додаток не чекає завершення відтворення звуку, а паралельно продовжує роботу, SND_FILENAME = &Н20000 - вказівка повного шляху до файлу, SND_LOOP " &Н8 - відтворення файлу по кругу до тих пір, поки не буде викликана команда зупинки відтворення звуку, SND_NODEFAULT " &Н2 - у випадку, якщо вказаний файл не знайдений, не програється стандартний звук Windows, SND PURGE = &Н40 - зупинка відтворення всіх звуків, при цьому полі IpszSoundName повинно бути порожньо (""), SND_SYNC = &Но - синхронне відтворення, тобто додаток чекає завершення відтворення звуку, перш ніж продовжити роботу, і ін.
Const SND_ALIAS = &Н10000
Const SND_ASYNC = &Hi
Const SND_FILENAME = &H20000
Const SND_LOOP = &H8
Const SNDNODEFAІЛЛ' = &II2
Const SND_PURGE = &H40
Const SND_SYNC = &Ho
Dim min As Integer ’ кількість хвилин
Dim sec As Integer ' кількість секунд
клацання на кнопці "Пуск/стоп"
Private Sub Commandl_Click()
IfTimen.Enabled Then таймер працює, потрібно зупинити
Timen.Enabled - False ' зупинка таймера
Commandi.Caption = "Пуск"
Labelß. Visible = False ’ приховування індикатора поля введення інтервалу і підпису полів потрібно зробити видимими Labeli.Visible = True Texti.Visible = True Label2.Visible = True Text2.Visible = True виведення кількості хвилин, що залишилися, і секунд Texti.Text - Format$(min)
Text2.Text = Format$(sec)
Else
таймер стоїть, потрібно запустити min = Val(Texti.Text) sec = Val(Text2.Text)
If (sec = o)And (min = o) Then
Call MsgBox("Потрібно задати інтервал.
Завдання 5. Програма обчислює швидкість (км/год), з якою бігун пробіг дистанцію. Форма програми приведена на рис.1.3. Кількість хвилин задається цілим числом, кількість секунд - дробом.
Програма
обрамовує швидкість з якою спортсмен
пробіг дистанцію.
Дистанція [м]
Обрамувати
Завершити
Хвилини
Секунди
Рис. 3.1 Форма програми «Швидкість бігу»
клацання на кнопці Обчислити Private Sub Commandi_Click()
Dim dist As Integer 'дистанція, метрів Dim min As Integer ' час, хвилини Dim sek As Single ' час, секунди Dim u As Single ' швидкість
отримання початкових даних з полів введення dist = Val(Texti.Text) min = Val(Text2.Text) sek = Val(Text3.Text)
дистанція і час не мають дорівнювати нулю If (dist = о) Or ((min = о) And (sek = o)) Then Labelß.Caption = "Потрібно задати дистанцію і час."
Exit Sub End If
обчислення
v = (dist /1000) / ((min *60 + sek) / 3600)
виведення результату
Label5.Caption = "Дистанція: " + Format$(dist) + _ "м " + СИг(із) + _ "Час: " + Format$(min) + "мін" + _ Vorrnat$(sek) +
"сек" + СНг(із) + _ "Швидкість: " + Format$(v, "о.оо") + _ "км/год" функція ChrQ повертає символ за значенням числової коди в Ascii End Sub
клацання на кнопці Завершити Private Sub Command2__Click() закриття головної форми Unload Formi End Sub
натиснення клавіші в полі Дистанція
Private Sub Texti__KeyPress(KeyAscii As Integer)
KeyAscii - код символу, відповідного що натискає клавіші. Якщо символ неприпустимий, то процедура замінює його на символ з кодом о. В результаті цього символ в полі редагування не з'являється.
Select Case KeyAscii
Case 48 To 57, 8 ' цифри о - 9 і <Backspace>
Case 13
при натисненні клавіші <Enter> курсор переводиться у поле Время:мінут
Text2.SetFocus Case Else
KeyAscii = о ' решта символів не відображається End Select End Sub
натиснення клавіші в полі Час:хвилин
Private Sub Text2__KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 48 To 57, 8 ' цифри Про - 9 і <Backspace>
Case 13
при натисненні клавіші <Enter> курсор переводиться у полі Час:секунд Text3.SetFocus Case Else
KeyAscii = о ' решта символів не відображається
End Select End Sub
натиснення клавіші в полі Час:секунд
Private Sub Text3_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 48 To 57, 8 ' цифри Про -9І <Backspaee>
Case 44, 46 ' десятковий роздільник KeyAscii =46