| Пособие-самоучитель on-line "Visual Basic с нуля" |
Глава 2. Основные объекты формы.
Скачать исходник программы "Калькулятор" | Дата создания 07.10.2004 {Автор 4us}

Итак, сейчас мы сделаем небольшую программу с использованием наиболее употребимых компонентов формы. Запустим VB. У на откроется окно формы Проект1 – Form1 (Form). Слева, там где компонеты формы найдем командную кнопку (желтая подсказка CommandButton). Щелкнем по ней, а потом мышь переведем на поле формы и нажав на клавишу мыши растянем пунктирный прямоугольник до нужного нам размера. Отпустив клавишу мыши мы увидим, что на форме появилась командная кнопка с надписью Command1 (Рис.5). Справа, в окне свойств мы увидим свойства этой кнопки, так как выделена именно она.

Рисунок 5.

Добавим на форму еще пять кнопок(Command), два лейбла(Label) и три текстбокса (TextBox). У тебя должно получится что-то вроде того (Рис.6)

Рисунок 6.

Попробуем из всего этого барахла сделать калькулятор. В окне свойств для каждой кнопки уберем в свойстве Caption надпись «Command…» и впишем для каждой кнопки соответсвенно +, -, * ,/, Очистить, Корень. Это будут названия наших кнопок. Теперь, чтобы надписи на кнопках читались лучше, в окне свойств щелкнем по свойству Font и в открывшемся окне Font выберем додходящий шрифт, размер и жирность. Вообще-то дизайн – это личное дело каждого и в дальнейшем я на этом подробно останавливаться не буду. Короче у тебя должно получиться что-то типа на рис. 7.

Рисунок 7.
Пора уже код писать, а мы все кнопочки двигаем. Поэтому перейдем теперь к окну кодов (в верхней строке нажимаем «Вид» и выбираем «Код». В левом окне Проект1 – Form1(Код), там где “(General)” из выпадающего меню выбираем строчку Form. У нас появилась процедура загрузки формы, как в главе 1. Ну меняем заголовок формы и убираем некрасивые записи в леблах и тексте. В теле процедуры пишем:

`Form1.Caption = "Калькулятор"`

Чтобы вписать что-нибудь в Поле Text, нужно использовать свойство Text. У лейбла аналогичное свойство Саption.

`Text1.Text = "" 'присвоим текстбоксам значение
` `Text2.Text = "" 'пустой строки
Text3.Text = ""
Label2.Caption = "Действие" 'Присвоим лейблам
Label1.Caption = "Результат:" 'соответствующие значения`

Теперь для каждой кнопки напишем свою подпрограмму для обработки каждого действия.

В поле (General) выбираем Command1. У нас появилась новая процедура для первой кнопки (у меня она соответствует «+»). Она очень похожа на процедуру формы, только событие здесь другое – нажатие кнопки (Click). Пишем строку для обработки операции сложения. Однако надо учесть, что в текстбоксах содержится строковая информация, а сложение двух строк приводит к их сцеплению, т.е. если в Text1 у нас будет 10, а в Text2 – 5, то результатом сложения в Text3 станет 105 (10 & 5), а не 15, как нам думалось. Поэтому нам придется преобразовать каждое значение в числовое с помощью функции Val(строка):

`Text3.Text = Val(Text1.Text) + Val(Text2.Text)`

Кроме того, чтобы пользователь видел, какую операцию он произвел, изменим содержимое верхнего лейбла:

`Label2.Caption = "Плюс"`

Используя стандартные операторы арифметических действий, создадим подпрограммы для всех кнопок.

На всякий случай я приведу основные математические операторы в табличке:

Оператор | Название оператора | Пример операции | Результат
+ | сложение | c=2+5 | с=7
- | вычитание | c=2-5 | с=-3
* | умножение | c=2*5 | с=10
/ | деление | c=2/5 | с=0,4
\ | целая часть от деления | c=2\5 | с=0
Mod | остаток от деления | c=2 Mod 5 c=9 Mod 4 | c= 2 (5*0+2) c= 1 (4*2+1)
^ | возведение в степень | с=2^5 | с-32
& | слияние строк (конкатенация) | c=2 & 5 | с=25
= | Оператор присваивания, а никакое не “равно” | с=с+2 | если с было равно 5, то станет 7

Для того, чтобы кнопка Command6 выполняла извлечение квадратного корня используем функцию. Она будет выглядеть так: Sqr(число). Вот весь код этой программы. Исходник программы “Калькулятор” можно скачать вверху страницы. Да, вот еще, что. Если мы будем делить на ноль, программа аварийно прервется, и появится сообщение об ошибке. Как это преодолевать, мы поговорим несколько позднее.

‘****************************** НАЧАЛО***********************
`Private Sub` `Command1_Click() ‘подпрограмма нажатия кнопки Command1
` `Text3.Text = Val(Text1.Text) + Val(Text2.Text) 'операция сложения
Label2.Caption = "Плюс" 'указаваем в метке математическую операцию
End Sub`

`Private Sub Command2_Click()
Text3.Text = Val(Text1.Text) * Val(Text2.Text) 'операция умножения
Label2.Caption = "Умножить"
End Sub`

`Private Sub Command3_Click()
Text3.Text = Val(Text1.Text) - Val(Text2.Text) 'операция вычитания
Label2.Caption = "Вычесть"
End Sub`

`Private Sub Command4_Click()
Text3.Text = Val(Text1.Text) / Val(Text2.Text) 'операция деления
Label2.Caption = "Разделить"
End Sub`

`Private Sub` `Command5_Click()
` `Text1.Text = "" 'присвоим текстбоксам значение пустой строки
Text2.Text = ""
Text3.Text = ""
End Sub`

`Private Sub Command6_Click()
Text3.Text = Sqr((Text1.Text)) 'функция вычисления корня
Text2.Text = "" 'очистка Text2, так как он не нужен при этой операции
Label2.Caption = "Кв. корень"
End Sub`

`Private Sub Form_Load() ‘процедура загрузки формы
Form1.Caption = "Калькулятор" 'меняем заголовок формы
Text1.Text = "" 'присвоим текстбоксам значение пустой строки
Text2.Text = ""
Text3.Text = ""
Label2.Caption = "Действие" 'присвоим лейблам
Label1.Caption = "Результат:" 'нужные значения
End Sub`

‘****************************** КОНЕЦ***********************

Пожалуйста, обратите внимание, что VB выполняет операторы не в том порядке, в каком они записаны в окне кода. Когда вы запускаете программу, загружается форма и наступает событие Form_Load. И все. Выполняются только те операторы, которые написаны в теле этой процедуры. После программа, грубо скажем, останавливается. Если же мы нажмем, например кнопку Command1, то возникает событие Command1_Click и выполняются операторы только в процедуре первой кнопки. Теперь вы можете сами доработать программу, поменять шрифты, расположение, добавить новые кнопки для новых математических операций.

Да, поскольку мы уже использовали математические функции “Извлечение квадратного корня” и “Преобразование строки в число”, я перечислю остальные:

Abs (n) абсолютное значение n
Atn (n) арктангенс n в радианах
Cos (n) косинус угла n (n - в радианах)
Exp (n) константа e в степени n
Rnd (n) генерирует случайное число от 0 до 1
Sgn (n) равно –1, если n<0; 0 если n=0; +1 если n>0
Sin (n) синус угла n (n - в радианах)
Sqr (n) квадратный корень n
Str (n) преобразует число n в строку
Tan (n) тангенс угла n (n - в радианах)
Val (n) преобразует строку n в число

Copyright © 2004 4us