SavePicture picture, stringexpression - сохраняет
изображение, находящееся в данный момент в свойствах Picture или Image
объекта X в файл.
Пример:
'
Поместите на форму PictureBox и загрузите туда любую картинку
Private
Sub
Form_Click()
AutoRedraw = True
'
Включаем перерисовку окна
Picture1.AutoRedraw = True
Form1.ScaleMode = vbPixels
' Ставим вид масштаба
в пиксели
Picture1.ScaleMode = vbPixels
Form1.PaintPicture Picture1, 0, 0, 100, 100, 0, 0, 100, 100, vbSrcCopy
Form1.Refresh
MsgBox "Нажмите OK для сохранения"
SavePicture Image, "C:\1.BMP"
' Сохраняем
картинку
End Sub
SaveSetting appname, section, key, setting -
Записывает настройку в реестр. Напомню, что функция DeleteSetting удаляет
настройку, а функция GetSetting загружает. Я почему-то не нашёл в документации
путь, куда сохраняются настройки. Пришлось определять самому. Оказалось,
что настройки записываются по адресу:
HKEY_CURRENT_USER\SOFTWARE\VB and VBA Program Settings
В этом ключе создаётся ещё один ключ с названием appname.
Пример:
'
Сохраняем положение левой координаты формы в реестр
SaveSetting "MyApp", "Startup", "Left",
Form1.Left
Seek [#]filenumber, position - Устанавливает
позицию для чтения/записи в файле, открытым оператором Open.
Пример:
Type
Record ' Определённый пользователем тип
ID As Integer
Name As String * 20
End Type
'
Для файлов, открытых для произвольного доступа,
' Seek устанавливает следующую запись
Dim
MyRecord As Record, MaxSize, RecordNumber ' Объявляем переменные
' Открываем файл для произвольного доступа
Open "TESTFILE" For
Random As #1 Len = Len(MyRecord)
MaxSize = LOF(1) \ Len(MyRecord) ' Получаем количество
записей в файле
' Цикл читает записи с конца до начала
For RecordNumber = MaxSize To
1 Step - 1
Seek #1, RecordNumber '
Устанавливаем позицию записи
Get #1, , MyRecord '
Читаем запись
Next RecordNumber
Close #1 ' Закрываем
файл
'
Для файлов, окрытых не для произвольного доступа,
' Seek устанавливает позицию с точностью до байта.
Dim
MaxSize, NextChar, MyChar
Open "TESTFILE" For
Input As #1 ' Открываем файл
MaxSize = LOF(1) ' Получаем размер файла в байтах
' Цикл читает по букве с конца файла до начала
For NextChar = MaxSize To
1 Step -1
Seek #1, NextChar '
Устанавливаем позицию
MyChar = Input(1, #1) ' Читаем символ
Next NextChar
Close #1 ' Закрываем
файл
Select Case
SendKeys string[, wait] - посылает одно или
более нажатий на клавишу в активное окно. Всё происходит точно так же,
как будто всё было введено с клавиатуры.
Пример:
Dim
ReturnValue, I
ReturnValue = Shell("CALC.EXE", 1) '
Запускаем калькулятор
AppActivate ReturnValue
' Активизируем калькулятор
For I = 1 To
100
' Циклимся 100 раз
SendKeys I & "{+}", True
' Посылаем
нажатие на клавишу в калькулятор
Next I
' Добавляем
к значению в калькуляторе переменную I
SendKeys "=", True
'
Нажимаем на знак равенства
SendKeys "%{F4}", True
'
Посылаем Alt+F4 для закрытия калькулятора
Set objectvar = {[New] objectexpression | Nothing}
- присваивает переменной ссылку на объект.
Пример:
Dim
YourObject, MyObject, MyStr
Set MyObject = YourObject '
Присваиваем ссылку
' MyObject иYourObject ссылаются на один и тот
же объект
YourObject.Text = "Hello World" ' Инициализируем
свойство
MyStr = MyObject.Text ' Возвратит "Hello
World".
'
Удаляем ссылку на объект
Set MyObject = Nothing ' Освобождаем объект
SetAttr pathname, attributes - устанавливает
атрибуты файла pathname.
Пример:
SetAttr
"TESTFILE", vbHidden
' Теперь файл скрытый
SetAttr "TESTFILE", vbHidden + vbReadOnly
' Теперь он и скрытый и только для чтения
Static varname[([subscripts])] [As [New] type]
[, varname[([subscripts])] [As [New] type]]...
Объявляет переменную. Переменные Static объявляются внутри процедур
и функций и вне их недоступны, но в отличие от обычных локальных переменных
они не инициализируются при входе в процедуру или функцию, где они объявлены.
Пример:
'
Определение функции
Function KeepTotal(Number)
' Только переменная Accumulate сохраняет своё
значение между вызовами
Static Accumulate
Accumulate = Accumulate + Number
KeepTotal = Accumulate
End Function
'
Определение статической функции
Static Function MyFunction(Arg1, Arg2,
Arg3)
' Все локальные переменные сохраняют свои значения
между вызовами
Accumulate = Arg1 + Arg2 + Arg3
Half = Accumulate / 2
MyFunction = Half
End Function
Stop - С помощью этого оператора можно поставить
брикпоинт в программе. Если же программу скомпилировать с этим оператором
и запустить, то при наступлении это оператора программа выдаст ошибку.
В отличие от оператора End, оператор Stop не закрывает открытые файлы
и не очищает переменные.
Пример:
Dim
I
For I = 1 To
10 ' Запускаем цикл
Debug.Print
I ' Печатаем I в Debug
Stop
' Останавливаемся
на каждой итерации
Next I
[Private | Public | Friend] [Static] Sub name
[(arglist)]
[statements]
[Exit Sub]
[statements]
End Sub
Этот оператор объявляет процедуру с именем name и параметрами arglist.
Пример:
'
Объявляем процедуру
' Процедура имеет 2 аргумента
Sub SubComputeArea(Length, TheWidth)
Dim Area As Double ' Объявляем локальную переменную
If Length = 0 Or
TheWidth = 0 Then
' Если любой аргумент равен нулю
Exit Sub ' Сразу
выходим из процедуры
End If
Area = Length * TheWidth ' Вычисляем площадь прямоугольника
Debug.Print
Area ' Печатаем её в окно Debug
End Sub
Time = time - Изменяет системное время на time.
Пример:
Dim
MyTime
MyTime = #4:35:17 PM# ' Присваиваем время переменной
Time = MyTime
' Изменяем системное время
[Private | Public] Type varname
elementname [([subscripts])] As type
[elementname [([subscripts])] As type]
. . .
End Type
Объявляет новый тип (тип, определённый пользователем), содержащий один
или несколько элементов.
Пример:
Type
EmployeeRecord ' Создаём новый тип
ID As Integer
' Определяем
типы значений, входящие в новый тип
Name As String * 20
Address As String * 30
Phone As Long
HireDate As Date
End Type
Sub
CreateRecord()
Dim MyRecord As
EmployeeRecord ' Объявляем переменную
' Присвоение значения переменной типа EmployeeRecord
' должно произойти в процедуре
MyRecord.ID = 12003 ' Присваиваем значение элементу
переменной
End Sub
U
Unload object - Выгружает объект (форму или
компонент). Эта функция является обратной функции Load.
Пример:
Private
Sub
Form_Click ()
Dim Answer, Msg As
String ' Объявляем переменные
Unload Form1
' Выгружаем форму
Msg = _
"Form1 только что была выгружена. Нажмите Да, чтобы загрузить её
и "
Msg = Msg & "показать. Нажмите Нет чтобы загрузить её и "
Msg = Msg & "оставить невидимой."
Answer = MsgBox(Msg, vbYesNo) ' Выводим окно сообщения
If Answer = vbYes Then
' Проверяем выбор юзера
Show
' если Да, то показываем форму
Else
Load Form1
' Если Нет, то только загружаем
Msg = "Теперь форма загружена. Нажмите ОК, чтобы показать её."
MsgBox Msg
' Выводим сообщение
Show
' Показываем форму
End If
End Sub
Lock [#]filenumber[, recordrange]
. . .
Unlock [#]filenumber[, recordrange]
Эти операторы управляют доступом к файлу для других процессов, чтобы
те не могли что-либо сделать с компонентом этого файла. В приведённом
ниже примере после оператора Lock доступ к записи закрывается, и другие
процессы (программы) не смогут изменить эту запись. Запись отпирается
оператором Unlock.
Пример:
Type
Record ' Тип, определённый пользователем (находится
в модуле)
ID As Integer
Name As String * 20
End Type
Dim
MyRecord As Record, RecordNumber '
Объявляем переменные
'
Открываем файл-пример для произвольного доступа
Open "TESTFILE" For
Random Shared As #1 Len = Len(MyRecord)
RecordNumber = 4
' Устанавливаем позицию записи
Lock #1, RecordNumber '
Запираем эту запись
Get #1, RecordNumber, MyRecord '
Читаем запись
MyRecord.ID = 234 ' Модифицируем её
MyRecord.Name = "John Smith"
Put #1, RecordNumber, MyRecord ' Записываем
изменённую запись
Unlock #1, RecordNumber '
Отпираем запись
Close
#1 ' Закрываем файл
W
While...Wend - Оператор цикла. Отличие от оператора
Do While...Loop заключается
в том, что здесь не используется слово Do, и вместо слова Loop используется
Wend. В общем выбирайте какой хотите.
Пример:
Dim
Counter
Counter = 0
' Инициализируем переменные
While Counter < 20 '
Проверяем значение счётчика
Counter = Counter + 1 ' Увеличиваем счётчик
Wend ' Заканчиваем
цикл, если Counter > 19
Debug.Print
Counter ' Печатаем 20 в окно Debug
'
Этот же пример, только с циклом Do While:
Dim
Counter
Counter = 0 ' Инициализируем переменные
Do While Counter < 20 '
Проверяем значение счётчика
Counter = Counter + 1 ' Увеличиваем счётчик
Loop ' Заканчиваем
цикл, если Counter > 19
Debug.Print
Counter ' Печатаем 20 в окно Debug
Width #filenumber, width - Устанавливает длину
строки при выводе в файл, открытый оператором Open.
Пример:
Dim
I
Open "TESTFILE" For
Output As #1 ' Открываем файл для записи
Width #1, 5 ' Устанавливаем длину вывода 5
For I = 0 To
9 ' Циклимся 10 раз
Print #1, Chr(48 + I); '
Выводим по 5 символов в строке
Next I
Close #1 ' Закрываем
файл
With object
[statements]
End With
С помощью этого оператора можно произвести серию обращений к объекту
или переменной типа запись. Таким образом код становится короче и понятнее.
Пример:
With
MyObject
.Height = 100
' Аналогично выражению MyObject.Height = 100.
.Caption = "Hello World"
' Аналогично выражению MyObject.Caption = "Hello
World".
With .Font
.Color = Red ' Аналогично выражению MyObject.Font.Color
= Red.
.Bold = True ' Аналогично
выражению MyObject.Font.Bold = True.
End With
End With
Write #filenumber, [outputlist] - последовательно
записывает данные в файл.
Пример:
Open
"TESTFILE" For Output As #1 '
Открываем файл для записи
Write #1, "Hello World", 234 ' Записываем строку, разделённую запятой
Write #1, ' Записываем
пустую линию
Dim
MyBool, MyDate, MyNull, MyError
' Присваиваем Boolean, Date, Null и Error значения
MyBool = False
MyDate = #February 12, 1969#
MyNull = Null
MyError = CVErr(32767)
' Boolean запишется как #TRUE# или #FALSE#. Дата
запишется
' как #1969-01-12#. Null запишется как #NULL#.
' Error капишется как #ERROR код_ошибки#.
Write #1, MyBool ; " это Boolean значение
Write #1, MyDate ; " это Дата"
Write #1, MyNull ; " это Null"
Write #1, MyError ; " а это Error"
Close #1 ' Закрываем
файл