[Предыдущая страница] [Страница учителя Усольцева Б.М.] [Сайт Равнецкой школы]
Последний вариант исходного код программы «Восьмиклассник»
Код программы скопирован из встроенного текстового редактора Visual Studio 2005 и сохраняет все особенности его первоначального форматирования, в частности служебные слова Visual Basic выделены синим цветом.
Для большей наглядности автор разделил процедуры одинарной горизонтальной чертой, а части кода относящиеся к разным формам толстой синей линией. Кроме того, к исходной редакции добавлены краткие комментарии красного цвета, которые распологаются на участках выделенных желтым цветом
Public Class Form1
Private Sub AllButtons(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPlus.Click, _
btnMinus.Click, btnMult.Click, btnDiside.Click, btExp.Click, btFromMem.Click, btnComma.Click, _
btnSign.Click, btSqr.Click, btSquareEq.Click, btToMem.Click, _
btUp.Click, btRoot.Click, bt0.Click, bt1.Click, bt2.Click, bt3.Click, _
bt4.Click, bt5.Click, bt6.Click, bt7.Click, bt8.Click, bt9.Click, btDel1.Click, btDel2.Click, btDel3.Click, btSwap.Click
' Эта ключевая процедура программы обрабатывает клики на всех кнопках. Для распознавания кнопки получившей клик используется свойство tag, которое предназначено для хранения любых дополнительных данных
Dim objAllButtons As Button
objAllButtons = sender
Dim A As String
Select Case objAllButtons.Tag
Case "plus"
txtRez.Text = CSng(txtRez.Text) + CSng(txtSecondNumber.Text)
txtSecondNumber.Text = "0"
Case "minus"
txtRez.Text = -CSng(txtRez.Text) + CSng(txtSecondNumber.Text)
txtSecondNumber.Text = "0"
Case "mult"
txtRez.Text = CSng(txtRez.Text) * CSng(txtSecondNumber.Text)
txtSecondNumber.Text = "0"
Case "divide"
If txtRez.Text = "0" Then
GoTo DivZero
Else
txtRez.Text = CSng(txtSecondNumber.Text) / CSng(txtRez.Text)
txtSecondNumber.Text = "0"
End If
Case "sqr"
txtRez.Text = CSng(txtRez.Text) ^ 2
Case "exp"
txtRez.Text = CSng(txtSecondNumber.Text) ^ CSng(txtRez.Text)
txtSecondNumber.Text = 0
Case "tomem"
txtToMemory.Text = txtRez.Text
Case "frommem"
txtSecondNumber.Text = txtRez.Text
txtRez.Text = txtToMemory.Text
Case "del1"
txtToMemory.Text = "0"
Case "del2"
txtSecondNumber.Text = "0"
Case "del3"
txtRez.Text = "0"
Case "swap"
A = txtRez.Text
txtRez.Text = txtSecondNumber.Text
txtSecondNumber.Text = A
Case "squareeq"
Form2.Show()
Case "sign"
txtRez.Text = CSng(txtRez.Text) * (-1)
Case "comma"
If (txtRez.Text).IndexOf(",") = -1 Then
txtRez.Text = txtRez.Text & ","
Else
txtRez.Text = txtRez.Text
End If
Case "Root"
If CSng(txtRez.Text) < 0 Then
GoTo RootNegative
Else
txtRez.Text = CSng(Math.Sqrt(CSng(txtRez.Text)))
End If
Case "up"
txtSecondNumber.Text = txtRez.Text
txtRez.Text = "0"
Case Else
If txtRez.Text = "0" Then
txtRez.Text = objAllButtons.Text
Else
txtRez.Text = txtRez.Text & objAllButtons.Text
End If
End Select
Exit Sub
DivZero:
MsgBox("Делить на ноль нельзя", MsgBoxStyle.Information, "Ошибка")
Exit Sub
RootNegative: MsgBox("Извлечение корня из отрицательного числа невозможно", MsgBoxStyle.Information, "Ошибка")
End Sub
Private Sub tbr1_ValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles tbr1.ValueChanged
' Управление прозрачностью, через слайдер tbr1. Чтобы форма не исчезла полностью, предел прозрачности установлен в 40%.
Me.Opacity = (14 - tbr1.Value) / 10
End Sub
Private Sub ColorOn(ByVal sender As Object, ByVal e As System.EventArgs) Handles bt0.MouseEnter, _
bt1.MouseEnter, bt2.MouseEnter, bt3.MouseEnter, bt4.MouseEnter, bt5.MouseEnter, bt6.MouseEnter, _
bt7.MouseEnter, bt8.MouseEnter, bt9.MouseEnter, btExp.MouseEnter, btFromMem.MouseEnter, btnComma.MouseEnter, _
btnDiside.MouseEnter, btnMinus.MouseEnter, btnMult.MouseEnter, btnPlus.MouseEnter, btnSign.MouseEnter, _
btSqr.MouseEnter, btSquareEq.MouseEnter, btToMem.MouseEnter, btUp.MouseEnter
' При появлении курсора над любой кнопкой она окрашивается в жёлтый цвет
Dim objColorOn As Button
objColorOn = sender
objColorOn.BackColor = Color.Yellow
End Sub
Private Sub ColorOut(ByVal sender As Object, ByVal e As System.EventArgs) Handles bt0.MouseLeave, bt1.MouseLeave, _
bt2.MouseLeave, bt3.MouseLeave, bt4.MouseLeave, bt5.MouseLeave, bt6.MouseLeave, bt7.MouseLeave, bt8.MouseLeave, bt9.MouseLeave, _
btExp.MouseLeave, btFromMem.MouseLeave, btnComma.MouseLeave, btnDiside.MouseLeave, btnMinus.MouseLeave, btnMult.MouseLeave, _
btnPlus.MouseLeave, btnSign.MouseLeave, btSqr.MouseLeave, btSquareEq.MouseLeave, btToMem.MouseLeave, btUp.MouseLeave
'Если курсор мыши покидает кнопку, она восстанавливает первоначальный цвет
Dim objColorOn As Button
objColorOn = sender
objColorOn.BackColor = Color.FromArgb(230, 251, 111)
End Sub
Private Sub ЗакрытьToolStripMenuItem_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ЗакрытьToolStripMenuItem.Click
'Пункт «Закрыть» в меню «Файл».
End
End Sub
Private Sub ВставитьToolStripMenuItem_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ВставитьToolStripMenuItem.Click
'Получение значения из буфера обмена
txtRez.Text = (My.Computer.Clipboard.GetText())
End Sub
Private Sub КопироватьToolStripMenuItem_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles КопироватьToolStripMenuItem.Click
'Копирование в буфер
Clipboard.SetText(txtRez.Text)
End Sub
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'Определены тексты всплывающих подсказок и цвет контролов
ToolTip1.SetToolTip(btnPlus, "Складывает A и B")
ToolTip1.SetToolTip(btnMinus, "Из В вычитает А")
ToolTip1.SetToolTip(btnMult, "Перемножает A и B")
ToolTip1.SetToolTip(btExp, "Возведение в степень, А - основание, В - показатель")
ToolTip1.SetToolTip(btUp, "Ввод числа, сдвигает число А вверх в окно В")
ToolTip1.SetToolTip(btRoot, "Извлечение квадратного корня")
ToolTip1.SetToolTip(btSquareEq, "Переход к решению квадратных уравнений")
ToolTip1.SetToolTip(btToMem, "Запись в память числа А")
ToolTip1.SetToolTip(btFromMem, "Сдвиг А в В с возвратом в А числа из памяти,")
ToolTip1.SetToolTip(btSqr, "Возведение в квадрат")
ToolTip1.SetToolTip(btnDiside, "Делит В на А")
ToolTip1.SetToolTip(tbr1, "Изменение прозрачности фона")
bt0.BackColor = Color.FromArgb(230, 251, 111)
bt1.BackColor = Color.FromArgb(230, 251, 111)
bt2.BackColor = Color.FromArgb(230, 251, 111)
bt3.BackColor = Color.FromArgb(230, 251, 111)
bt4.BackColor = Color.FromArgb(230, 251, 111)
bt5.BackColor = Color.FromArgb(230, 251, 111)
bt6.BackColor = Color.FromArgb(230, 251, 111)
bt7.BackColor = Color.FromArgb(230, 251, 111)
bt8.BackColor = Color.FromArgb(230, 251, 111)
bt9.BackColor = Color.FromArgb(230, 251, 111)
btExp.BackColor = Color.FromArgb(230, 251, 111)
btFromMem.BackColor = Color.FromArgb(230, 251, 111)
btnComma.BackColor = Color.FromArgb(230, 251, 111)
btnDiside.BackColor = Color.FromArgb(230, 251, 111)
btnMinus.BackColor = Color.FromArgb(230, 251, 111)
btnMult.BackColor = Color.FromArgb(230, 251, 111)
btnPlus.BackColor = Color.FromArgb(230, 251, 111)
btnSign.BackColor = Color.FromArgb(230, 251, 111)
btRoot.BackColor = Color.FromArgb(230, 251, 111)
btSqr.BackColor = Color.FromArgb(230, 251, 111)
btSquareEq.BackColor = Color.FromArgb(230, 251, 111)
btSwap.BackColor = Color.FromArgb(230, 251, 111)
btToMem.BackColor = Color.FromArgb(230, 251, 111)
btUp.BackColor = Color.FromArgb(230, 251, 111)
СправкаToolStripMenuItem.Enabled = False
End Sub
Private Sub СправкаToolStripMenuItem_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles СправкаToolStripMenuItem.Click
Help.ShowHelp(Me, "helps.chm")
End Sub
Private Sub ССайтаРазроботчиковToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ССайтаРазроботчиковToolStripMenuItem.Click
Form3.Show()
End Sub
End Class
На рисунке выше даны названия контролов, использованных при написании кода Form1.
Public Class Form2
Private F As Byte
Private Sub btOK_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btOK.Click
'Решается квадратное уравнение
Dim A, B, C, D As Single
If IsNumeric(txA.Text) = False Then GoTo drt
If IsNumeric(txC.Text) = False Then GoTo drt
If IsNumeric(txB.Text) = False Then GoTo drt
A = CSng(txA.Text)
B = CSng(txB.Text)
C = CSng(txC.Text)
D = B ^ 2 - 4 * A * C
txD.Text = "D=" & D
If D < 0 Then
txRoot1.Text = "Корней нет"
txRoot2.Text = txRoot1.Text
Else
txRoot1.Text = (-B + Math.Sqrt(D)) / (2 * A)
txRoot2.Text = (-B - Math.Sqrt(D)) / (2 * A)
End If
txA.Focus()
Exit Sub
drt:
MsgBox("Введите числа", MsgBoxStyle.Critical, "Ошибка")
End Sub
Private Sub TrackBar1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TrackBar1.MouseUp
'При отпускании курсора мыши с ползунка слайдера происходит круговой переход фокуса с одного текстового окна на другое.
Select Case F
Case 0
txB.Focus() : F = 1
Case 1
txC.Focus() : F = 2
Case 2
txA.Focus() : F = 0
End Select
End Sub
Private Sub Form2_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated
'При активации формы фокус получает окно txA.
txA.Focus()
End Sub
Private Sub TrackBar1_ValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TrackBar1.ValueChanged
'При перемещении ползунка слайдера приобретаемое значение записывается в окно имеющее фокус
Select Case F
Case 0
txA.Text = TrackBar1.Value
Case 1
txB.Text = TrackBar1.Value
Case 2
txC.Text = TrackBar1.Value
End Select
End Sub
Private Sub ЗакрытьToolStripMenuItem_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ЗакрытьToolStripMenuItem.Click
Me.Hide()
End Sub
Private Sub Form2_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
ToolTip2.SetToolTip(btOK, "Решение квадратного уравнения")
ToolTip2.SetToolTip(TrackBar1, "Ввод чисел")
End Sub
End Class
На рисунке выше названия контролов Form2.
Public Class Form3
Private Sub Form3_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'При загрузке формы 3 с указанного адреса Интернета считывается файл help1.htm
btSadykHelp.Enabled = False
AxWebBrowser1.Navigate("http://tutor-ub.narod.ru/sadykov/help1.htm")
End Sub
Private Sub btTutorUB_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btTutorUB.Click
'Переход на новый адрес. Форме устанавливается размер во весь экран и одновременно увеличиваются размеры окна браузера
Me.WindowState = FormWindowState.Maximized
AxWebBrowser1.Width = 800
AxWebBrowser1.Height = 600
AxWebBrowser1.Navigate("http://tutor-ub.narod.ru/")
btTutorUB.Enabled = False
btSadykHelp.Enabled = True
End Sub
Private Sub btSadykHelp_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btSadykHelp.Click
'При переходе на новый адрес уменьшаются размеры формы и окна браузера.
Me.WindowState = FormWindowState.Normal
Me.Width = 463
Me.Height = 363
AxWebBrowser1.Height = 288
AxWebBrowser1.Width = 437
AxWebBrowser1.Navigate("http://tutor-ub.narod.ru/sadykov/help1.htm")
btTutorUB.Enabled = True
btSadykHelp.Enabled = False
End Sub
End Class
[Предыдущая страница] [Страница учителя Усольцева Б.М.] [Сайт Равнецкой школы]