Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Процес створення програми в Visual Basic складається з двох кроків. Спочатку потрібно створити форму програми (діалогове вікно), потім написати процедури обробки подій. Форма додатка (так прийнято



Базові компоненти

Загальні зауваження

Процес створення програми в 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).

Таймер

JË iüLJ

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

IfInStr(Text3.Text, ".") 00 Then


KeyAscii =o End If

Case 13 ' клавіша <Enter>

при натисненні клавіші <Enter> встановлюється фокус на кнопку Обчислити

Cammandi.SetFocus Case Else

KeyAscii = о ’ решта символів не відображається End Select End Sub

Завдання 6. Програма обчислює дохід по вкладу. Вона забезпечує розрахунок простих і складних відсотків. Прості відсотки

нараховуються в кінці терміну вкладу, складні — щомісячно і додаються до первинної суми вкладу. В наступному місяці відсотки нараховуються на нову суму. Форма програми приведена на рис.1.4.

Puc.1.4. Форма програми «Дохід no вкладу»

клацання на кнопці Обчислити Private Sub Conmandi_ClickQ Dim sum As Single ' сума вкладу

Dim pr As Single ' процентна ставка Dim srok As Integer ' термін вкладу Dim dohod As Single ' дохід no вкладу Dim buf As Single Dim і As Integer

отримання початкових даних sum = Val(Texti.Text) srok = Val(Text2.Text)

pr = Val(Text3.Text)

If Optioni.Value = True Then

вибраний перемикач Прості відсотки

dohod» sum * (pr/ioo) * (srok/360)

Else

вибраний перемикач Складні відсотки buf = sum For i = 1 To srok buf= buf+ buf*(pr/ioo) сума в кінці терміну вкладу записується в buf dohod = buf - sum Next і End If

sum = sum + dohod

Labebt.Caption = "Дохід:" +Format$(dohod, "0.00") +. Chr(i3) +_

"Сума в кінці терміну вкладу: " +_ Format$(sum, "0.00")

End Sub

вибір перемикача Прості відсотки Private Sub Optioni_Click()

Labels.Caption = "Термін (днів):"

LabeLfCaption = ""

End Sub

вибір перемикача Складні відсотки Private Sub Option2_Cliek()

Labels.Caption = "Термін (міс.):" LabeLf.Caption =

End Sub


 


ШІЕМВД

 

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

Опір R1 (Ом): Опір R2 (Ом):

Тип з'єднання

Послідовне

Паралельне

Завдання 7* Програма обчислює опір електричному ланцюгу, що складається з двох опорів. Опори можуть бути сполучені послідовно або паралельно. Форма програми приведена на рис.1.5. Якщо величина опору ланцюгу перевищує юооОм, результат виводиться в кОм.


 


Обрамувати


Рис.1.5. Форма програми «Опір електричного ланцюга»

клацання на кнопці Обчислити

Private Sub Convnandi_Click Q

Dim rl, Г2 At Single ' значення опорів

Ri і R2

Dim r KB Single ’ опір ланцюгу Отримання початкових даних

Ri = Val(Texti.Text) гг = Val(Text2.Text)

If (ri = o)And (гг = o) Then

LabeLf.Caption = "Потрібно задати величину хоч би " + _ "одного опору."

Exit Sub End If

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

If Optioni.Value = True Then вибраний перемикач Послідовне з'єднання

Г = Г1 + Г2

Else

вибраний перемикач Паралельне з'єднання

Г =(п* Г2)/(Г1 + Г2)

End If

I.abeLf.Caption = "Опір ланцюгу: "

Ifr< іооо Then

Labe I4.Caption = La ЬеІ4- Cap lion + _

Format$(r/ "0.00") + "Ом"

Else

r = r / IOOO Label4.Caption = LabeL%. Caption +__

Format$(r, "0.00")+ " kOm"

End If End Sub

клацання на перемикачі "Послідовне з'єднання"

Private Sub Optioni_Click() користувач змінив типа з'єднання очистимо поле виводу від попереднього обчислення

Label4.Caption = ""

End Sub

клацання на перемикачі "Паралельне з'єднання”

Private Sub Option2_Click()

Label4.Caption = ""

End Sub


Завдання 8. Програма обчислює силу струму, напругу або опір електричному ланцюгу, використовуючи закон Ома. Форма програми приведена на рис.1.6.

ЦП

*■.. Закон Ома

Струм

Напруга

Опір

Напруга (Вольт) Опір (Ом)

Обрахувати

Рис.і.6. Форма програми «Закон Ома»

обчислення струму, напруги або опору Sub CalculateQ Dim I As Single ' струм

Dim U As Single ' напруга

Dim R As Single ' опір

If Optioni.Value = True Then ' струм U = Val(Textl. Text)

R = Val(Text2.Text)

IfR <> o Then I = U / R

Label3.Caption = "Струм: " + Format$(I, "o.oo") + "A"

Else

ЬаЬеїз.Caption = "Опір не має бути "+ "дорівнює нулю." End If Exit Sub End If

If Option2.Value = True Then ' напруга I = Val(Texti.Text)

R = Val(Text2.Text)

U= I * R

Label3.Caption = "Напруга: " + __Format$(U, "o.oo") + ” B" Exit Sub


End If

If Options-Value = True Then ' опір U= Val(Texti. Text)

I = Val(Text2.Text)

If I <> o Then R=U / I

Label3.Caption = "Опір: " +

Format$(R, "o.oo”) + " Ом"

Else

Labels.Caption = "Струм не має дорівнювати нулю. End If End If End Sub

клацання на кнопці Обчислити Private Sub Commandl_Click()

If Text і.Text <> "" And Text2.Text <> ""Then

Calculate

Else

ЬаЬеІз.Caption = "Потрібно ввести початкові дані "у обидва поля."

End If End Sub

вибір перемикача Струм

Private Sub Optionl_ClickQ

Labeli.Caption = "Напруга (Вольт):"

Labehi.Caption = "Опір (Ом):"

Labels.Caption = ""

End Sub

вибір перемикача Напруга

Private Sub Option2_Click()

Labeli.Caption = "Струм (Ампер):"

LabeІ2.Caption = "Опір (Ом):"

Label3.Caption =

End Sub

вибір перемикача Опір

Private Sub Option3_Click()

Labeli.Caption = "Напруга (Вольт):"

Label2 Caption = "Струм (Ампер):"

Labels.Caption = ""

End Sub

натиснення клавіші в полі Напруга/Струм

Private Sub TextUKeyPress(KeyAscii As Integer)

Select Case KeyAscii


Case 48 To 57, 8 ' цифри і <Backspace>

Case 13 ' клавіша <Enter>

Texts,SetFocus Case 44, 46 ' крапка і кома KeyAscii =46 не дозволяє вводити знак коми повторно

IfInStr(Texti.Text, ") про о Then KeyAscii =0 End If Case Else

KeyAscii = о 'решта символів не відображується End Select End Sub

натиснення клавіші в полі Опір/Струм

Private Sub Тexts_ KeyPress(KeyAscii As Integer)

Select Case KeyAscii

Case 48 To 57, 8 ’ цифри і <Backspace>

Case 13 ' клавіша <Enter>

Calculate

Case 44, 46 ' крапка і кома KeyAscii =46 не дозволяє вводити знак коми повторно

IfInStr(Text2.Text, о о Then KeyAscii =0 End If Case Else

KeyAscii = о 'решта символів не відображується End Select End Sub

Завдання 9* Програма обчислює вартість поїздки на автомобілі, наприклад, на дачу. Форма програми приведена на рис.1.7.

Відстань (км)

Ц іна бензину (грв^літр)

Використання бензину [літрів на 1 00км)

Обрахувати

Т уди і назад

Label5

Рис.7-1. Форма програми «Поїздка на дачу»

При ініціалізації форми властивості Tag компонентів Texti, Text2 і Text3 привласнюються відповідне значення і, 2 і 3. Властивість Tag використовується в процедурі KeyPress.

Private Sub Fomr\_Initialixe()

Texti.Tag = 1 ' значення властивості Tag поля Texti

Textz.Tag - 2 ' Tag поля Text2

Texts. Tag =3 ' Tag поля Texts

End Sub

клацання на кнопці Обчислити Private Sub Cammandi_Click()

Dim rast As Single ' відстань

Dim cena As Single ’ ціна

Dim potr As Single ' споживання на іоо km.

Dim summ As Single 1 сума Dim mes As String отримання початкових даних rast = Val(Textl.Text) cena = Val(Text2.Text) potr = Val(Text3.Text)

При читанні даних з полів введення можливий випадок, коли користувач залишить одне з полів введення незаповненим.

If rast = о Or cena = о Or potr = o Then

Labels.Caption = "Дані потрібно ввести у всі поля. "

If Len(Textl.Text) = о Then Texti SetFocus Else

If Len(Text2.Text) = o Then Text2.SetFocus Else Text3.SetFocus End If End If Exit Sub End If

sumn = (rast / 100) *potr *cena mes = "Поїздка на дачу "

If Cheeki.Value = Checked Then summ = summ * 2 mes = mes + "і назад "

End If

mes = mes + Chr(i3) + "обійдеться в " + _

Formats (suiran, "0.00") + "руб."


ЬаЬеЦ. Caption = mes End Sub

Процедура KeyPress обробляє натиснення клавіш в полях Відстань, Ціна і Споживання. Як вхідні параметри цієї процедури використовуються код клавіші KeyAscii і ім’я поля, для якого ця процедура повинна виконатися, що натискує.

Sub KeyPressÇKeyAsdi As Integer, Text As TextBox)

Select Case KeyAscii

Case 48 To 57, 8 ' цифри і <Backspace>

Case 44, 46 ' крапка і кома KeyAscii =46

не дозволяє вводити знак коми повторно IflnStr{Texti.Text, ".”) 00 Then KeyAscii =0 End If

Case 13 ' клавіша <Enter>

Select Case Text.Tag

Case 1 ' клавіша натискає в полі Texti Texts.SetFocus

Case 2 ' клавіша натискає в полі Texts Text3.SetFocus

Case 3 ' клавіша натискає в полі Tetx3 Commandi.SetFocus End Select Case Else

KeyAscii s= о ’решта символів не відображається End Select

End Sub

натиснення клавіші в полі Відстань

Private Sub Texti_KeyPress(KeyAscii A* Integer)

Call KeyPress(KeyAscii, Texti)

End Sub

натиснення клавіші в полі Ціна

Private Sub Texts_keypress(KeyAscii A* Integer)

Call KeyPress(KeyAscii, Text2)

End Sub

натиснення клавіші в полі Споживання

Private Sub Text3_KeyPress (KeyAscii A* Integer)

Call KeyPress(KeyAscii, Text3)

End Sub


Завдання Ю. Програма "Калькулятор" виконує складання і віднімання. Форма програми приведена на рис.1.8. Нижче представлено два варіанти програми. У першому варіанті для кожної цифрової кнопки створена окрема процедура обробки події click. У другому варіанті подію click всіх цифрових кнопок обробляє одна процедура, що дозволило скоротити текст програми.

4 5 є

1 2 І З

Рис 1.8. Форма програми «Калькулятор»

Варіант і. Подія Click на кожній цифровій кнопці обробляє окрема процедура

Dim сіссит As Single ' акумулятор Dim oper As Integer ' операція: і — 2 -

' о- "виконати” (кнопка "=")

Dim f As Integer

f = о очікування першої цифри нового числа, наприклад, після виконання операції, коли на індикаторі результат, f = і очікування введення решти цифр.

кнопка "о"

Private Sub Commando_Click()

Iff = o Then ' перша цифра числа Texti.Text = "о" f-i' очікування решти цифр Else

Наступна умова потрібна для того, щоб на індикаторі і не з'являлося декількох нулів на початку числа.

If Texti.Text о "о" Then Texti.Text = Texti.Text + "о"

End If End If End Sub

кнопка "i"

Private Sub Commandi.ClickQ

Iff= o Then ' перша цифра числа Texti.Text = "і"

f= і ' очікування решти цифр

Else

У випадку, коли після вибору операції користувач натискав "о", змінною f привласнюється значення і, очікується введення решти цифр числа. Для того, щоб в полі введення не з’являлося чисел, що починається з нуля та є дробами (наприклад "оі"), необхідне виконання наступної умови. IfTexti.Text про "О" Then Texti.Text = Texti.Text + "і"

Else: Texti.Text = "1 ”

End If End If End Sub

кнопка"2”

Private Sub Command2_ClickO Iff= o Then Texti.Text = "2" f=i Else

IfTexti.Text 0 "o" Then Texti.Text = Texti.Text + "2"

Else: Texti.Text = ’’2'’

End If End If End Sub

кнопка"з"

Private Sub Commands Click ()

Iff= o Then Texti.Text = "3"

f=*

Else

If Texti.Text 0 "o"Then Texti.Text = Texti.Text + "3"

Else: Texti.Text = "3”

End If End if End Sub

кнопка"4"

Private Sub Command4_Click()

Iff = o Then Texti.Text = "4"

/=1

Else

IfTexti.Text <> "o” Then


Texti.Text = Texti.Text + "4" Else: Texti.Text = "4"

End If End If End Sub

кнопка"5"

Private Sub Commands Click!) Iff= О Then Texti.Text = "5" f=i Else

If Texti.Text <> "o " Then Texti.Text = Texti.Text + "5" Else: Texti.Text = "5"

End If End If End Sub

кнопка"6"

Private Sub Command6__ClickO Iff = о Then Texti.Text = "6" f=i

Else

If Texti.Text <> "o" Then Texti.Text = Texti.Text + "6" Else: Texti.Text = "6"

End If End If End Sub

кнопка "7"

Private Sub Command7_Click()

Iff - о Then Texti.Text = "7" f=i Else

If Texti.Text < > "o " Then Texti.Text = Texti.Text + "7" Else: Texti.Text = ”7"

End If End If End Sub

кнопка"8"

Private Sub Command8_Click()

Iff = о Then


Texti.Text = "8"

f=i

Else

IfTexti.Text <> "o " Then Texti.Text = Texti.Text + "8”

Else: Texti.Text = "8"

End If End If End Sub

кнопка"9"

Private Sub Commandg__Click()

Iff= o Then Texti.Text = "9"

f=i

Else

If Texti.Text 0 "o" Then Texti.Text = Texti.Text + "9"

Else: Texti.Text = "9"

End If End If End Sub

кнопка "c" - очищення

Private Sub CommandC_Click ()

Texti.Text = "o" accum =0 oper=0

f- o' очікування першої цифри числа End Sub

кнопка"+"

Private Sub CommandPlus_Click()

При натисненні на кнопку "+ " потрібне: виконати попередню операцію, вивести результат на індикатор, запам'ятати поточну операцію і встановити режим очікування першої цифри нового числа.

Iff= о Then

користувач клацнув мишею по кнопці операції, але поле введення знаходиться в очікуванні введення першої цифри числа орег = і 'запам'ятовування операції Else

на індикаторі є число, користувач клацнув мишею по кнопці операції DoOper орег = і f=o End If End Sub

кнопка

Private Sub CommandMinus_Click()

дивитеся коментар до процедури обробки події Click на кнопці "+ "

Iff = о Then

ррег = 2 ' запам'ятовування операції Else

DoOper ' виконання попередньої операції орег = 2 ' запам'ятовування поточної операції /= о' очікування першої цифри нового числа End If End Sub

кнопка "="

Private Sub CommandEnter__Click()

IfJ = o Then oper = o Else DoOper oper - o f= o"

End End Sub

десяткова крапка ","

Private Sub CommandZ ClickQ If Texti.Text = "o"Then Texti.Text = "o."

f=i End If

IfInStr(Texti.Text, ".") = o Then Texti.Text = Texti.Text +

End If End Sub

процедура виконання операції Sub DoOperQ Dim numb As Single ' число на індикаторі accum містить результат попередньої операції, орег - код операції, яку потрібно виконати, операнд знаходиться на індикаторі, numb = Val(Texti.Text)

Select Case oper Case o: accum = numb Case l: accum = accum + numb Case 2: accum = accum - numb End Select

Texti.Text = Format$(accum)

End Sub

ініціалізація форми

Private Sub Form_Initialize() орег=o End Sub

натиснення клавіші в полі введення цифр

Private Sub Texti_KeyPress(KeyAscii As Integer) заборона введення даних з клавіатури KeyAscii = о End Sub

Варіант 2. Подія Click на всіх цифрових кнопках обробляє одна процедура.

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

2. Процедура DigitClick обробляє клацання на кнопках йди _ йди % якості вхідного параметра цієї процедури використовується ім'я кнопки, для якої ця процедура повинна виконатися.

3. Процедура OperClick обробляє клацання на кнопкахі "="

Dim ассит As Single ' акумулятор

Dim орег As Integer ' операція: і - "+", 2- "-"

' о - "виконати" (кнопка "=”)

Dim f As Integer

f = о очікування першої цифри нового числа, наприклад, після виконання операції, коли на індикаторі результат. / = і очікування введення решти цифр, процедура обробки клацання на кнопках "о" - "д"

Sub DigitClick(CommandAs CommandButton)

Select Case Command.Tag Case і To g

Iff = o Then ' перша цифра числа Texti.Text = Format$(Command.Tag) f = і ’ чекаєлю решту цифр Else

У випадку, коли після вибору операції користувач натискав "о", змінною f привласнюється значення і, очікується введення решти цифр числа. Для того, щоб в полі введення не з'являлося чисел, що починаються з нуля, немає дробами (наприклад "оі"), необхідне виконання наступної умови.

If Texti.Text о "О" Then Texti.Text = Texti.Text + Format$(Command.Tag)

Else: Texti.Text = Format$(Command.Tag)

End If End If Case o

Iff = o Then ' перша цифра числа Texti.Text = "О"

f - іочікування решти цифр Eise

Наступна умова потрібна для того, щоб на і індикаторі не з'являлося декількох нулів на початку числа.

If Texti.Text о "о" Then Texti.Text = Texti.Text + "о"

End If End If End Select End Sub

процедура обробки клацання на кнопках "+" і "="

Sub OperClick(det As Integer)

При натисненні кнопки або "=” потрібне: виконати попередню

операцію, вивести результат на індикатор, запам'ятати поточну операцію і встановити режим очікування тервой цифри нового числа, і det визначає кнопку: і - "+ ", a - о - "="

Iff - о Then

користувач клацнув мишею по кнопці операції, але поле введення знаходиться в очікуванні введення першої цифри числа Select Case det ' запам 'ятовування операції Case о: орег = о Case і: орег=і Case 2: орег = 2 End Select Else

на індикаторі є число, користувач клацнув на кнопці операції DoOper ’ виконання попередньої операції Select Case det ' запам’ятовування поточної операції Case о: орег = о Case і: орег-і Case 2: орег = 2 End Select

f=o’ очікування першої цифри нового числа End If End Sub

кнопка"о"

Private Sub Commando__ClickO Call DigitClick(Commando)

End Sub

кнопка ”i "

Private Sub Commandi__Click()

Call DigitClick(Commandi)

End Sub


кнопка"2"

Private Sub Command2_Click()

Call DigitClick(Command2)

End Sub

кнопка"з"

Private Sub Command3_Click()

Call DigitClick(Command3)

End Sub

кнопка"4”

Private Sub Command4__Click()

Call DigitClick(Command4)

End Sub

кнопка"5"

Private Sub Command,^ ClickQ Call DigitClick(Commands)

End Sub

кнопка"6"

Private Sub Commandb ClickQ Call DigitClick(Command6)

End Sub

кнопка"7"

Private Sub Command7__Click()

Call DigitClick(Command7)

End Sub

кнопка"8"

Private Sub Command8_Click()

Call DigitClick(Command8)

End Sub

кнопка"g"

Private Sub Commandg ClickQ Call DigitClick(Command9)

End Sub

кнопка "c" - очищення

Private Sub CommandC_ClickO Texti.Text = "o" accum - o oper =0

f = o' очікування першої цифри End Sub


кнопка "+"

Private Sub CommandPlus__Click()

Call OperClick(i)

End Sub

кнопка

Private Sub CommandMinus_Click() CallOperClick(2)

End Sub

кнопка "="

Private Sub CommandEnter_Click()

Call OperClick(o)

End Sub

десяткова крапка ","

Private Sub CommandZ_Click()

If Texti.Text = "o" Then Texti.Text = "o."/= EndIfJfInStr(Texti.Text, oThen

Texti.Text = Texti.Text + "."

End If End Sub

процедура виконання операції Sub DoOperQ Dim numb As Single ' число на індикаторі accum містить результат попередньої операції орег - код операції, яку потрібно виконати операнд відображається на індикаторі, numb = Val(Texti.Text)

Select Case oper Case o: accum = numb Case 1: accum = accum + numb Case 2: accum = accum - numb End Select

Texti.Text = Format$ (accum)

End Sub

ініціалізація форми

Private Sub Form_Initialize() задання значень властивості Tag для кнопок "о" - Commando.Tag =0 Commandi.Tag =1 Command2.Tag =2 Commands.Tag =3 СоттапсЦ.Тад =4 Commands.Tag =5 Command6.Tag =6


Command.7. Гад =7 Command8.Tag =8 Commandg. Tag =g oper = o End Sub

натиснення клавіші в полі введення цифр

Private Sub Texti_KeyPress(KeyAscii As Integer) заборона введення даних з клавіатури KeyAscii =о End Sub

Завдання 11. Програма "Електронний годинник", що відображує поточний час. Форма і вікно програми приведені на рис.і.д.


 


 


 


 

Рис.і.д. Форма та вікно програми «Час»

відображення поточного часу Sub ShowTimeQ Labeli. Caption = CStr(Time)

End Sub

ініціалізація форми

Private Sub Form_Initialize()

налаштування і запуск таймера

Тітеп.Interval =1000 1 період сигналів таймера - іс Timen.Enabled = True ' запуск таїїмера

Labell.Font.Size =20 ' установка розміру шрифту для поля виведення

часу

End Sub

обробка події Paint

Private Sub Form_Paint()

Call ShowTime End Sub

обробка сигналу таймера

Private Sub Timeri_ TimerQ

Call ShowTime ' відображення часу End Sub

Завдання. 12, Програма "Електронний годинник" відображує поточний час і дату. Форма і вікно профаммьі приведені на рис.і.ю.


 


 


 

12.10.2009

Pue.1.10 Форма та вікно програми «Час»

відображення поточного часу Sub ShowTimeO Labeli. Caption = CStr(Time)

End Sub

ініціалізація форми

Private Sub Form_Initialize()

налаштування і запуск таймера

Timen.Interval =1000 ' період сигналів таймера -іс Timen.Enabled = True ' запуск таймера налаштування полів

виводу

Labeli.Font.Size =ао ' установка розміру шрифту для поля виведення

часу

Labels.Font.Size = 10 ' установка розміру шрифту для поля

виведення дати Labeli Alignment = 2 'вирівнювання по центру для полів Label2~Alignment=2 відображення дати Label2.Caption = CStr(Date)

End Sub

обробка події Paint

Private Sub Form_Paint()

Call ShowTime ' відображення часу End Sub

обробка сигналу таймера

Private Sub Timeri__Timer()

Call ShowTime ' відображення часу.

End Sub

Завдання 13. Програма "Електронний годинник" відображує поточний час, дату і день тижня. Форма і вікно програми приведені нарис.і.и.

Рис.і.и Форма і вікно програми «Час»


 

відображення поточного часу Sub ShowTimeQ Labeli.Caption = CStr(Time)

End Sub

ініціалізація форми

Private Sub Form_Jnitialize()

Dim stDay, stMonth

stDay = Array ("неділя", "понеділок”, "вівторок" "середа", "четвер", "п’ятниця", "субота") stMonth = АггауС'січня", "лютого", "березня", "квітня"травня", "червня", "липня", "серпня" "вересня",_ "жовтня", "листопада", "грудня")

Labels. Caption = "Сьогодні " + Format$(Day(Date)) + " " +_ stMonth(Month(Date) — 1) + " " +

Format$(Year(Date)) + "роки” +_ stDay(Weekday(Date) - l) + "

віднімається і, оскільки нумерація елементів масиву починається з о

налаштування і запуск таймера

Timen.Interval =1000 ' період сигналів таймера -іс Тітеп.Enabled = True ' запуск таймера

налаштування полів виводу

Labeli.Font.Size = 20 ' установка розміру шрифту для поля

виведення часу

Label2.F0nt.Size = іо ' установка розміру шрифту для поля

виведення дати

Labelialignment = 2 ' вирівнювання по центру для полів

Label2 Alignment = 2 ' часу і дати

End Sub

обробка події Paint

Private Sub Form_Paint()

Call ShowTime ' відображення часу End Sub

обробка сигналу таймера

Private Sub Timerl_Timer Q Call ShowTime ' відображення часу End Sub

Завдання 14• Програма "Таймер" після закінчення заданого інтервалу часу виводить повідомлення. Є можливість припинити роботу таймера і потім пустити таймер знову. Форма і вікно програми приведені нарис.і.12.

ВВЕВВШ

05:58

Хвилини jp Сєкунаи

Стоп

Пуск

Рис.1.12 Форма та вікно програми «Таймер»

Dim тіп As Integer ' кількість хвилин Dim sec As Integer ' кількість секунд

клацання на кнопці "Пуск/стоп"

Private Sub Commandl_CliekQ If Timerl.Enabled Then таймер працює, потрібно зупинити

Тітеп.Enabled = False ' зупинка таймера

Commands. Caption = "Пуск"

Label'j.Visible = False ' приховування індикатора поля введення інтервалу і підпису полів потрібно зробити видимими Labeh. Visible = True Texti.Visible = True Labels. Visible = True Texts.Visible = True виведення кількості хвилин, що залишилися, і секунд Texti.Text = Format$(min)

Texts. Text = Format$(sec)

Else

таймер стоїть, необхідно запустити min = Val(Texti.Text) sec = Val(Text2.Text)

If (sec = o) And (min = o) Then

Call MsgBoxC'JIompiÖHo задати інтервал.", _ vbOKOnly, "Таймер ")

Exit Sub End If

Timer і.Enabled = True ' запуск таймера приховання полів введення

інтервалу і підписів

Labeh. Visible = False Texti.Visible = False Label2. Visible = False Texts.Visible = False Label3.Visible = True Command!.Caption = "Стоп"

Call ShowTime End If End Sub

ініціалізація форми

Private Sub Form_Initialize()

Label3. Visible = False ' індикатор не відображається на формі ІаЬеІзAlignment - 2 ' вирівнювання по центру для індикатора Label3.F0nt.Size = 20 'розмір шрифту для індикатора Тітеп.Interval =1000 ' період сигналів таймера ~іс Тітеп.Enabled = False ' таймер зупинений End Sub

процедура виводить залишок часу Sub ShowTimeO виведення хвилин і секунд здійснюється двома цифрами Label3.Caption = Format$(min, "00 ") + " + _

Format$(seс, "оо")

End Sub

обробка сигналу таймера

Private Sub Timen_Timer ()

Else

ms = Val(Textl.Text) ' введення початкових даних kmh = ms * 3.6 ’ перерахунок виведення результату ЬаЬеїз.Caption = Format$(ms) + "м/сек - це " +_ Format$(kmh)+ "км/ч”

End If End Sub


клацання на кнопці Перерахунок Private Sub Commandi_ClickO Call WindSpeed End Sub

натиснення клавіші в полі Editi

Private Sub Texti_KeyPress(KeyAsciiAs Integer)

KeyAscii - код клавіші 48-57- коди цифр від о до 9 8 - код клавіші <Backspace>

13 - код клавіші <Enter>

Select Case KeyAscii

Case 48 To 57, 8 ' цифри і <Backspace>

Case 13 ’ <Enter>

Call WindSpeed Case Else ' решта символів KeyAscii =0 End Select End Sub

Завдання 4. Програма перераховує вагу з фунтів в кілограми (іфуп г — 409,5г). Форма програми приведена на рис.1.2. Програма складена таким чином, що кнопка Перерахунок доступна тільки в тому випадку, якщо користувач ввів початкові дані.

ш

Рис.1.2. Форма програми «Фунти-Кілограми»

Фунти -Кіло г рами

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


 


 

клацання на кнопці Перерахунок Private Sub Commandt_Click()

Dim funt As Single ' вага у фунтах Dim kg As Single ' вага в кілограмах

Кнопка Перерахунок доступна тільки в тому випадку, якщо у полі Фунти є дані. Тому наявність інформацїіу полі можна не перевіряти.

Jimt = Val(Texti.Text) kg = funt * 0.4995

Labebi.Caption - Format$(funt) + "ф - це" + _ Format$(kg) + "кг" End Sub

ініціалізація форми

Private Sub Form__Initialize()

поле Фунти порожньо (користувач ще не ввів початкові дані), зробимо кнопку Перерахунок недоступною Cor amandi.Enabled = False End Sub

вміст поля Фунти змінилося Private Sub Texti_Change() перевіримо, чиє в полі Фунти початкові дані IfLen(Texti.Text) = о Then Commandi.Enabled = False ' кнопка Перерахунок недоступна Else

Commandi.Enabled = True ' кнопка Перерахунок доступна End If End Sub

натиснення клавіші в полі Фунти

Private Sub Texti_KeyPress(KeyAscii As Integer)

Select Case KeyAscii

Case 48 Те 57, 8 ' цифри o-gi <Backspace> обробка десяткового роздільника

Case 44, 46 ' 44 - код коми, 46 - код крапки якщо в полі Фунти введена кома, то замінимо її на десятковий роздільник

KeyAscii =46

перевіримо, чи введений вже в поле Фунти десятковий роздільник IfInStr(Texti.Text, '.") про о Then KeyAscii = О End If Саве Else

KeyAscii = о ' решта символів заборонена End Select End Sub

vbOKOnly, "Таймер")

Exit Sub End If

Timerl.Enabled = True ' запуск таймера приховування полів

введення інтервалу і підписів

Labeh. Visible = False

Texti.Visible = False

Label2. Visible = False

Text2.Visible = False

Label3. Visible = True

Commandi.Caption = "Стоп"

Call ShowTime End If End Sub

іціалізація форми

Private Sub Form_Initialize()

ЬаЬеїз. Visible = False ' індикатор не відображається на формі Labels jWignment = 2 ' вирівнювання по центру для індикатора

Label3.F0nt.Size = 20 'розмір шрифту для індикатора Timer і.Interval =1000 ' період сигналів таймера ~іс Timer і.Enabled = False ' таймер зупинений

End Sub

июдить, скільки часу залишилося Sub ShowTimeO плини і секунди виводимо двома цифрами

ІліЬеїз.Caption = Format$(min, "00")+

Format$(sec, "00”)

End Sub

1 пал під таймера

Private Sub Timen_Timer() tfsee< > o Then sec = sec - 1 Else sec = 59 min = min - 1 End If

Call ShowTime ' виведення часу, що залишився If (min = o) And (sec = o) Then даний інтервал витік

Timer і.Enabled = False ’ зупинка таймера

дниюрення звуку:

CallPlaySound(CStr(CurDir) + "\ringer.wav”, о

SND_FILENAME Or SND_ASYNC)

' CallPlaySoundC'SystemStart", о_ SND_ALIASOrSND__ASYNC) - приклад відтворення системного звуку Запуск Windows (звук, відповідний цій події в Звуковій схемі’ Windows)

Commandi.Caption - "Пуск"

ЬаЬеїз.Visible = False ’ приховування індикатора поля введення

інтервалу і підпису полів потрібно зробити видимими

Labeh.Visible = True

Texti. Visible = True

Labels.Visible = True

Texts.Visible = True

Texti.Text = "o"

Textz.Text = "o”

End If End Sub

Завдання l6. Програма "Таймер". Для введення інтервалу часу використовується компонент UpDown. Форма і вікно програми приведені на рис.1.13.

Інгарвзл

/нтереал

Секунди


%


Стоп


Пуск.


03**5»


 


Рис.1.13 Форма та вікно програми «Таймер»

Якщо проект створювався як Standart, то можливо, що на панелі ТооІВох компоненту UpDown не буде. Для того, щоб він з'явився, необхідно в меню Project вибрати команду Components і підключити бібліотеку Microsoft Windows Common Controls-26.0 Щоб забезпечити синхронізацію компонентів UpDown і Text, потрібно властивості Buddy Control компоненту UpDown привласнити ім’я відповідного компоненту Text (для UpDownl- Texti, для UpDowns - Text2), а в Buddy Property вибрати закладку Text. Властивості Мах і Min компоненту UpDown визначають максимальне і мінімальне можливі значення.

Dim min As Integer ' кількість хвилин Dim sec As Integer ' кількість секунд


клацання на кнопці "Пуск/стоп"

Private Sub Commandi_Click()

If Timerl.Enabled Then таймер працює, потрібно зупинити

Timer l.Enabled = False ' зупинка таймера Commandi. Caption = "Пуск"

Labelj. Visible = False ’ приховування індикатора поля введення

інтервалу і підпису полів потрібно зробити видимими Labeh. Visible = True Texti.Visible = True Labels. Visible = True Texts.Visible = True UpDowni.Visible = True UpDowns. Visible = True виведення кількості хвилин, що залишилися, і секунд Texti.Text = Format$(min)

Texts.Text = Format$(sec)

Else

таймер стоїть, потрібно запустити min = Val(Texti. Text) sec = Val(Texts.Text)

If (sec = o)And (min = o) Then

Call MsgBox(''IIoтрібно задати інтервал.", _ vbOKOnly, "Таймер")

Exit Sub End If

Timer l.Enabled ~ True ' запуск таймера приховування полів введення інтервалу і підписів Labeh.Visible ~ False Texti.Visible = False Labels.Visible = False Texts.Visible = False Label3.Visible = True UpDowni. Visible = False UpDowns. Visible = False Command l.Caption = "Стоп"

Call ShowTime End If End Sub

ініціалізація форми

Private Sub Form_Initialize()

Labels.Visible = False ' індикатор не відображається на формі Label3JUignment - s ' вирівнювання по центру ч для індикатора Label3.F0nt.Size = so 'розмір шрифту для індикатора Тітеп-Interval =1000 ' період сигналів таймера -іс Timen.Enabled = False ’ таймер зупинений

UpDoivni.Max = бо 'максимальне значення для поля "Хвилини" UpDoums.Max =59 'максимальне значення для поля "Секунди" UpDoums.Wrap = True ' якщо в полі "Секунди" знаходиться значення

59, то після натиснення кнопки Up (вгору) в полі з'явиться о, при натисненні Down (вниз) - 59-

UpDowni.Wrap = True ' теж саме для поля "Хеш/ішш"

End Sub

процедура виводить залишок часу Sub ShowTimeQ виведення хвилин і секунд здійснюється двома цифрами Label3.Caption = Format$(min, "оо") + " +

Format$(sec, "оо")

End Sub

обробка сигналу таймера

Private Sub Timerі_ Timer ()

If sec <> o Then sec = sec - і Else sec =59 min = min -1 End If

Call ShowTime ' виведення часу, що залишився

If (min = o) And (sec = o) Then

заданий інтервал витік

Timerl.Enabled = False ' зупинка таймера

Call MsgBox ("Заданий інтервал витік. ”, _ vbOKOnly, 'Таймер ") "Заданий інтервал витік." - текст повідомлення, vbOKOnly - вікно повідомлення міститиме тільки кнопку "ОК" '"Таймер" - заголовок повідомлення.

Commandi.Caption = "Пуск"

Label з. Visible = False ' утаєння індикатора поля введення

інтервалу і підпису полів потрібно зробити видимим

Labeli.Visible = True

Texti.Visible = True

Labels. Visible = True

Texts.Visible = True

Texti.Text = "o"

Texts.Text = "o"

UpDowni.Visible = True UpDowns. Visible = True End If End Sub

Private Sub Texti_KeyPress(KeyAscii As Integer)


заборона введення даних з клавіатури KeyAscii =о End Sub

Private Sub Text2_KeyPress(KeyAsrii As Integer)

заборона введення даних з клавіатури KeyAscii =о End Sub


Дата добавления: 2015-08-27; просмотров: 144 | Нарушение авторских прав




<== предыдущая лекция | следующая лекция ==>
Изготовление Ключей всех видов Продажа Замков, Сердцевин, | 19. 06. 2014. Занимательная аналитика. Статья для тех, кто изучает украинский конфликт наиболее глубоко. В материале отображены настроения людей в разных регионах бывшей Украины. Назовем всё это

mybiblioteka.su - 2015-2024 год. (0.204 сек.)