Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект VB.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.26 Mб
Скачать

Загружай VB, и в путь.При этом очень советуем иметь ПРОГРАММНЫЕ МИНИАТЮРЫ, которые можно заказать по aavov@yandex.ru.Они просто необходимы,когда придется читать текст повторно, без лирики. Итак, создаем первый “Стандартный EXE” (как в Главе 1). На экране имеем примерно такую картинку:

Рисунок 2.

Теперь мы найдем место, куда будем заносить собственно программу. Для этого в верхнем ряду окна нажимаем кнопку “Вид”. В выпавшем меню первая строка и есть та, которая нам нужна: “Код”. Показано на рисунке 3.

Рисунок 3.

У нас поверх окна формы Проект1 – Form1 (Форма) появится окно Проект1 – Form1 (Код). Вверху этого окна у нас имеется два выпадающих списка. Слева - список доступных объектов, справа – события для этих объектов. Объектов у нас сейчас два: (General) и Form. Выбираем строку Form. В поле окна кода появились две строки. Что это значит. Первая строка:

Private Sub Form_Load()

говорит о том, что мыначинаем подпрограмму (Private Sub) или правильней процедуру, которая будет выполняться при загрузке (_Load) нашей формы (Form). Загрузка - это возникающее событие, на которое и отреагирует эта процедура. Последняя строка

End Sub

просто говорит о том, что этой строкой процедура Form_Load завершается. Вот только выполнять-то пока нечего. В теле процедуры у нас нет ничего. А поэтому мы сейчас туда чего-нибудь напихаем. Первым делом, выведем на нашу форму какой-нибудь текст. По идиотской традиции, самая первая программа должна выводить на экран надпись типа “Hello, world” ("Здравствуй, мир"). Мы же, из чувства противоречия, напишем “Я стану программистом”. Для этого вписываем между двух уже имеющихся у нас строк еще одну. У нас получится вот такая процедура:

Private Sub Form_Load()

Form1.Print "Я стану программистом"

End Sub

Строка, которую мы только что вписали в процедуру, представляет собой оператор, в котором первое слово Form1 представляет собой объект с которым мы работаем (не даром Visual Basic - это объектно-ориентированный язык). В нашем случае объект - это форма. Второе слово после точки (Print) представляет собой метод, который мы используем, для того чтобы работать с нашим объектом (формой). Наш метод позволит напечатать на объекте данные, которые следуют далее. Так как строка "Я стану программистом" - текстовая, то она взята в кавычки. Таковы правила языка Visual Basic - то бишь синтаксис.

Теперь можно бы посмотреть как это работает, только ни черта у нас не выйдет. Чтобы эта надпись появилась в форме, надо залезть в окно “Свойства – Form1”. На рис. 2 (см. выше) оно подписано как “Свойства выделенного объекта”. Затем в левой колонке найти строчку со свойством “AutoRedraw”. В этой строке только в правой колонке из выпадающего списка выбрать “True”. Теперь окно перерисуется вместе с нашим чудесным текстом и мы сможем увидеть изменения формы после выполнения программой нашего оператора. Нажмем кнопочку со стрелочкой для запуска нашей программы (показано на рис.4) и наслаждаемся ее работой.

Рисунок 4.

Свойство перерисовки, как и всякое другое можно задавать программно. Это намного правильней, так как в ходе выполнения программы часто приходится менять свойства объектов. Перед нашей строчкой добавим еще одну:

Form1.AutoRedraw = True

А в свойствах формы вернем состояние свойства AutoRedraw с True (Истина) на False (Ложь). Запустим программу. Она работает совершенно также. Аналогично можно менять другие свойства формы. В дальнейшем по мере необходимости мы будем обращаться к ним.

Ясное дело, форму можно растягивать. Можно также менять ее положение на экране, двигая квадратик в окне “Размещение формы”.

Еще одно. Можно создавать несколько форм и управлять объектами одной из другой. Для этого в меню выберите “Проект – Добавить форму – Открыть”.

Только если после этого запустить программу, второй формы не увидишь. Чтобы сделать ее видимой, надо прописать в Form1 такой код:

Form2.Show

Теперь наш проект надо сохранить. Выбери “Файл – Сохранить проект” или нажми на изображение дискетки. Появиться окно сохранения проекта, которое обычно предлагает путь "C:\Program Files\Microsoft Visual Studio\VB98". Но туда сохранять ни в коем случае не надо, иначе файлы твоего проекта перпутаются с файлами Visual Basic. Лучше создать отдельную папочку с названием, которое отражает суть проекта и сохранить проект в ней. Так надо поступать с каждым проектом. Мы будем сохранять файлы под теми же именами, которые предлагает VB, хотя их, конечно, можно задавать какие угодно.

Последний этап – создание выполняемого (т.е. EXE) файла, то ради чего мы это все делали. Нажми “Файл – Создать Проект1.exe…”, сохраняй и готово. Теперь ты можешь закрыть VB и запускать свой EXE-файл. Поздравляю! Ты создал первую программу на Visual Basic. Вариант этой программы, только несколько расширенный, я привожу ниже. В ней показано изменение некоторых свойств формы. Скопируй ее в тело подпрограммы и поэкспериментируй с ней. Обрати внимание на комментарии. Они выделяются зеленым цветом и пишутся после апострофа. Нужны они только для пояснений, не компилируются и программой не выполняются.

'******вот некоторые возможности работы с формой*****

Private Sub Form_Load()  Form1.AutoRedraw = True 'включает перерисовку формы 1  Form1.BackColor = vbBlack 'меняет цвет формы 1 на черный  Form1.ForeColor = &HFF& 'меняет цвет текста формы 1 на красный Form1.BorderStyle = 3 'меняет рамку (бордюр) формы 1 на неизменяемую Form1.Font.Size = 18 'меняет размер шрифта формы 1 на 18 Form1.Font.Underline = True 'подчеркивает текст в форме 1 Form1.Caption = "Моя первая программа" 'устанавливает заголовок формы 1 Form1.Print "Я стану программистом" 'выводит текст на форму 1 Form2.Show 'делает видимой форму 2 Form2.Width = 9000 'устанавливает ширину формы 2 равной 9000 твипов Form2.WindowState = 1 'сворачивает форму 2 End Sub

Использование кнопок, лейблов и текстбоксов. Программа "Калькулятор".

Итак, сейчас мы сделаем небольшую программу с использованием основных компонентов формы (объектов). Запустим VB. Создадим новый Exe-проект. У нас откроется окно формы Проект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 станет "10" + "5" = 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(число). Вот весь код этой программы. Исходник этого примера “Калькулятор” можно скачать вверху страницы. Да, вот еще что. Если мы будем делить на ноль, программа аварийно прервется, и появится сообщение об ошибке. Как это преодолевать, т.е. перехватывать и обрабатывать ошибки , мы поговорим значительно позднее, в Главе 11. Перехват и обработка ошибок. Операторы On Error и Resume. Объект Err. Оператор GoTo.

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

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

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

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

Private Sub Command5_Click() процедура нажатия кнопки Command5 Text1.Text = "" 'присвоим текстбоксам значение пустой строки Text2.Text = "" 'для очистки всех текстбоксов Text3.Text = "" End Sub

Private Sub Command6_Click() процедура нажатия кнопки Command6 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 в число

Переменные. Инструкция Option Explicit.

Все, пора поговорить о переменных. Перегружать информацией я тебя не буду, но минимум знать надо.

Очень желательно, чтобы программа начиналась с инструкции Option Explicit в секции General. Эта инструкция заставляет программиста явно объявлять переменные. При ее отсутствии всякое слово, не противоречащее синтаксису VB, может быть переменной. Что происходит, если мы не используем инструкцию Option Explicit? А то, что мы вообще можем не объявлять переменные. Это ведь здорово! А вот и нет! А почему нет, видно из следующего: При отсутствии Option Explicit, если нам нужна новая переменная, мы просто вводим ее в код программы, например, NewChislo=7

и опс, Visual Basic уже подсуетился и зарезервировал для переменной памяти, причем зарезервировал по полной программе - максимально. Дело в том, что если явно не задавать тип переменнной, VB считает переменную типом Variant, так как такая переменная может содержать почти любые данные: и целые, и дробные, и строковые. Зато и памяти эта переменная использует очень много. Если же мы явно объявим переменную и зададим ее тип сообразно с нашими потребностями, то рациональное использование памяти - на лицо. Если тебя это соображение не убедило, то представим ситуацию, когда ты повторно используешь свою переменную для, например, изменения ее значения. И при этом делаешь опечатку (а опечаток делается очень много), пропускаешь букву h: NewCislo=NewCislo+1 Для Visual Basic в этом никакой ошибки нет. Он при компиляции быстренько резервирует память под новую переменную NewCislo, считая ее типом Variant и у него никаких проблем. Проблемы у тебя. И критичные. Во-первых, ты имеешь ненужную переменную NewCislo со значением 1, о которой ты знать не знаешь. Во-вторых, если ты ожидаешь, что значение твоей начальной переменной NewChislo увеличилось на 1 и стало 8, то это совершенно напрасно. А вот ожидать, что результат выполнения твоей программы даст непредсказуемый результат можно смело. Иное дело, если ты использовал инструкцию Option Explicit. В этом случае, при запуске программы, Visual Basic тут же найдет новую необъявленную переменную и остановит выполнение программы на строке с ошибкой. Если я тебя убедил, тогда, чтобы не писать инструкцию Option Explicit в каждом новом проекте, нажми кнопку “Инструменты” (Tools), выбери “Опции” и в окрывшемся окне на вкладке “Редактор” поставь галочку напротив надписи “Требовать определение переменной”, потом OK. Теперь, всякий раз при создании нового проекта (но только нового, в старые эту инструкцию надо прописывать в (General) вручную.), VB сам, автоматически, будет прописывать Option Explicit.

Любое слово, кроме зарезервированных VB, можно сделать именем переменной. Но начинаться имя должно с буквенного символа. Например Peremenaia, Ima1, X, LastNumber, z001. Не надо использовать в именах математические операторы. И нельзя объявлять две переменные с одинаковыми именами. В принципе, для удобства чтения кода и солидности существуют определенные рекомендованные правила (что-то вроде стандартов) написания имен переменных. Но, так как использование этих правил - сугубо личное дело каждого, я их придерживаться не буду. Если охота, поищи в Интернете что-нибудь про Венгерское соглашение, Венгерскую нотацию или соглашение Реддика.

Итак, при явном объвлении переменной очень желательно явно задавать ее тип. В крайне редких случаях, когда тип хранимых данных в переменной заранее неизвестен, используется как раз тип Variant. В Visual Basic наиболее часто используются следующие типы данных (а соответственно переменных):

Long ‘длинное целое число со знаком от –2 147 483 648 до 2 147 483 647