Идёт загрузка страницы...

htp://aptem.net.ru






На главную страничку учебника Visual Basic

Операторы VB (S)

Описание операторов, встроенных в Visual Basic 5, начинающихся с буквы S


Список операторов, описанных в этом разделе:


---S---


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:\TEST.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

На главную страничку учебника Visual Basic