Курсор должен быть в окне кода.
В окне Object Browser щелкнуть на кнопке Copy to Clipboard.
Перейти в программе на место вставки и нажать Ctrl+V.
Встроенные функции
Особое значение имеют строковые функции, т.к. в полях ввода информация хранится в текстовом формате или в формате ariant. Использование же неявных преобразований типов из Variant часто приводит к проблемам и является более медленным.
Строковые функции:
= Space (число пробелов) - выдает строку, состоящую из одних пробелов, причем число символов в строке определяется параметром в скобках.
= String (число, строковое выражение $) - формирует строку, содержащую одинаковые символы.
Например, X$=String (10, “z”) - 10z
= Len (строковое выражение) - длина текущей строки с проблемами и напечатанными символами.
= Mid (строка, начало [, длина])
Mid (“Visual Basic”, 1,6) = “Visual”
Mid (“Visual Basic”, 8,6) = “Basic”
Mid (“Visual Basic”, 8) = “Basic”
Пример. Подсчет числа точек в строке
Points % = 0
Length % = Len (Text $)
For I% = 1 to Length %
If Mid (Text $, I%, 1) = “.” then
Points $ = Points $ + 1
End If
Next I%
= Left (cтрока, № до позиции)
= Right (строка, с № позиции)
Функцию Mid можно использовать для изменения содержания внутри текущей строки. Например
X $ = “Best Basic”
Mid (X $,1,5) = “Quick”какое количество символов
с какого символа будет взято из новой строки
вставляется новая
строка поверх части старой
= Insert ([начальная позиция], строка для поиска, подстрока)
является ли данная строка частью другой строки, выдает номер позиции, с которой начинается подстрока.
Text $ = “QuickBasic”
X $ = Instr (1, Text $, “Basic”)=6.
Если подстрока не найдена Instr возвращает нулевое значение (False).
Пример.
If Instr (Text $, “?”) then
Print “символ найден”
Else
Print “Не найден”
End If
= LСase, = UСase - преобразует все символы строки в нижний (верхний) регистр
Вместо Lcase $ Ucase$
= Str lomp - для сравнения строк
Пусть X = StrComp (A$, B$) =
Если A$ или B$ пуста, то х=NULL
Если использовать StrComp (A$,B$,1) - регистр не учитывается, а если StrComp (A$,B$,0) - регистр учитывается.
= Trim (строка $) - уничтожает пробелы начале и конце строки
LTrim (строка $) - уничтожает пробелы в левой части строки
RTrim(строка $) - уничтожает пробелы в правой части
Все строковые функции, за исключением Mid, не изменяют строку, а создают ее копию и потом с ней работают.
Управляющие структуры в программе
Определенные циклы
For ___ Next
For I% = 1 to 10 (% - целочисленный тип для ускорения работы цикла)
Print I%
Next I%
Цикл завершается, не в тот момент, когда значение счетчика равняется конечному, а когда оно превышает его.
Пример. Печать всеми доступными шрифтами экрана.
Private Sub Form_Click()
Dim I As Integer
For I=0 to Screen.FontCount - 1
FontName = Screen.Fonts (I)
Print “Это шрифт”; Screen.Fonts (I)
Next I
End Sub
Неопределенные циклы
Не выполняются фиксированное число раз. Цикл может выполняться или нет в зависимости от результата, вычисляемого внутри цикла
Do
Выражение
Loop Until выполняется условие
Пример. Проверка пароля
Private Sub Form_Load ()
Do
X$ = InputBox$ (“Пароль ?”)
Loop Until X$ = “VB”
End Sub
Для остановки бесконечного процесса используют клавиши “Break” или Run|End или закрыть приложение. В программе можно использовать оператор Exit Do (или Exit For), которые переводят программу к оператору следующему после цикла.
Сложные неопределенные циклы
В неопределенных циклах проверка происходит в конце цикла и счетчика увеличивается еще на 1. Иногда это вызывает лишнее обновление счетчика. Можно передвинуть проверку условия на начало цикла:
Do Until условие
Тело цикла Выражение
Loop
Do While
Do
Loop Until аналогичен
Do
Loop While условие
Пример.
Do Do
Loop Until N>5 ? Loop While N <=5
Do While
Do
Выражение
Loop While условие
или
Do While условие
Выражение
Loop
В таких циклах можно объединять несколько условий, например
Do While X<=0 and txtDisplay.Text=“ “
?
?
Loop
Цикл While /Wend
While условие
. . . . .
Wend
Например, While x>0
S = S+x
Wend
Может быть несколько вложенных циклов. Любой Wend относится к ближайшему While. Do __ Loop дает структуру и гибкость цикла.
Условные операторы
If условие Then оператор
Например, If N>=0 and N<=9 Then Print “Ok”
Если в выражении If __ Then обрабатывается несколько операторов, тогда используется так называемый блок If __ Then.
While Wend
Вместо Do While x=0
Loop
While x=0
Wend
If условное выражение Then (Enter) несколько операторов Else необяза- несколько операторов тельно End If | If выражение Then оператор Else If выражение Then оператор . . . Else оператор End If |
Оператор Select Case
Позволяет обрабатывать несколько вариантов выбора.
Select Case переменная или выражение
Case оператор проверки условия
действие 1
.
.
.
Case . . . . . .
действие n-1
End Select
Пример:
Select Case Ball
Case Is < 13 позволяет проверить значение переменной
Grade = 2
Case Is < 18
Grade = 3
Case Is < 22
Grade = 4
Case Else
Grade = 5
End Select
Пример 1. If Then Else
Private Sub Form_QueryUnload(Cansel As Integer, UnloadMode As Integer)
X % = MgBox(«Вы уверены?», VbYesNo)
If X % = VbNo Then
Cancel = True
Else
Cancel = False
End IF
End Sub
Пример 2.
If optColor1.Value Then
Color$ = «Красный»
Else If optColor2.Value Then
Color$ = «Зеленый»
Else If optColor3.Value Then
Color$ = «Синий»
Else
Color$ = «Белый»
End If
Пример:
Select Case Den
Case 1
Print «Пн»
Case 2
Print «Вт»
.
.
.
Case 7
Print «Вс»
End Select
В фразе Case можно задавать значения переменной в виде диапазона
Select Case Den
Case 1 to 5
Print «Рабочий день»
Case Else
Print «Выходной»
End Select
либо перечислением возможных значений
Select Case Den
Case 6, 7
Print «Выходной»
Case Else
Print «Рабочий день»
End Select
Массивы
2 вида массивы: управляющие и массивы переменных (обычные массивы или списки).
Управляющие массивы состоят из нескольких однотипных элементов управления, использующих общие свойства, по отличающимся порядковым номерам или индексам. Может быть не более 255 элементов в таком массиве. При этом новые элементы на форме помещаются на место исходных элементов управляющего массива. Поэтому при размещении на форме их следует позиционировать и двигать, чтобы они не перекрывали друг друга. Например, можно создать на форме матрицу надписей или текстовых полей.
Одномерные массивы или списки определяются именем и положением элемента в списке. Например данные о выпуске продукции за 12 месяцев.
Могут быть фиксированные и динамические списки. Размеры их могут быть велики и определяются объемом свободной памяти.
У фиксированных списков размер не меняется, а динамические списки могут менять свой размер. Для фиксированных списков память выделяется в начале работы программы и существует меньший риск переполнения памяти.
Динамические списки более гибки в работе.
Списки могут быть видимыми всему приложению, данной форме (модулю) или только одной процедуре.
Создание фиксированного списка:
а) в форме (модуле). Описание помещается в разделе деклараций формы (модуля)
Dim Massiv$(20)
доступен любой процедуре модуля или формы;
б) в пределах всего проекта (глобальный)
Public Massiv(20) As String - 21 элемент от 0 до 20
или Global
в) локальный массив, который сохраняется до следующего вызова процедуры
Private Sub ...........
Static Massiv A(20)
Создание динамических массивов.
а) в форме
В размере декларации формы Dim DYNMAS() As String
А внутри процедуры выделяем нужный размер
Private Sub ...........
Dim N %
ReDim DYNMAS(N) As String
При работе команды ReDim информация в массиве теряется.
Для сохранения информации при изменении размера массива
ReDim Preserve DYNMAS(N+1) As String
или (N-1) удалит последний элемент
б) Глобальный динамический список, видимого в пределах всего проекта
Public DYNMAS() As String
или Global
Далее можно использовать ReDIM в любой процедуре всего проекта.
Ввести данные в массив можно с помощью INPUT BOX, текстового поля.
Для изменения нумерации в массиве не с 0, а с 1 - оператор Option Base 1 в разделе деклараций формы (модуля).
Можно задавать массив диапазоном значений
вместо Dim A(19)
Dim A (1980 TO 2000)
Освобождение ОП от динамический массивов Erase DYNMAS/ Для фиксированных списков Erase только очищает массив.
Окна ввода
Окна ввода- это другая возможность, помимо текстовых полей, для ввода информации. Функция InputBox$ выводит на экран модальную диалоговую панель, которая в отличие от текстовых полей имеет фиксированный размер окна. У окна ввода есто строка заголовка и 4 элемента: подсказка, командные кнопки OK и Cancel и поле ввода. Синтаксис функции: Строковая переменная=
InputBox(“подсказка”[,заголовок][поумолчанию][,X][,Y][,файл справки, контекст])
где подсказка- текстовая строка или строковая переменная (1024 символа),
заголовок -содержание строки заголовка окна,
по умолчанию - начальное содержимое окна ввода,
X,Y- расстояние между левым (верхним) краями экрана и окна ввода. Если параметры не заданы, то окно располагается по центру на 1/3 высоты экрана.
Например, MyInput$=InputBox(“Введи число”, “Запрос”,”0”,100,200)
Вывод информации
Для вывода информации непосредственно на форме используется метод Print. Его синтаксис:
Имя формы.Print выражение
Например: frmHello.Print “Привет !”
VB5 выводит информацию, начиная с того места, которое определяют свойства CurrentX и CurrentY- горизонтальная и вертикальная позиции. При использовании метода Cls для очистки содержимого формы CurrentX и CurrentY=0 и метод Print выводит информацию, начиная с левого верхнего угла.