Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции Visual Basic.doc
Скачиваний:
105
Добавлен:
09.04.2015
Размер:
1.1 Mб
Скачать

Ввод и вывод (Get- чтение,Put- запись)

Для чтения и записи данных используются соответственно инструкции GetиPut.

Get #НомерФайла, НомерЗаписи, Переменная

Put #НомерФайла, НомерЗаписи, Переменная

В примере в файл записываются данные из переменной Address, причем номер записи равен 7, а затем в переменнуюAddressсчитывается вторая запись файла.

Put #fh, 7, Address 'сохраняет 7-ую запись

Get #fh, 2, Address 'считывает 2-ую запись

Для того чтобы в одной записи сохранить несколько значений различных типов, следует использовать пользовательские типы данных:

Type Person

FirstName As String * 20

Name As String * 20

CustomerN As Integer

End Type

Dim Customer As Person

Private Sub Command1_Click()

Dim fh As Integer

fh = FreeFile

Open "C:\LORE.DAT" For Random As fh Len = Len(Customer)

Get #fh, 2, Customer

Close #fh

End Sub

Двоичный доступ

Двоичный доступ незначительно отличается от произвольного доступа. Разница состоит только в том, что двоичный доступ возможен не к определенному набору данных, а к отдельному байту внутри любого файла.

Открытие файла для двоичного доступа

Для открытия двоичного файла также используется инструкция Open:

Open ИмяФайла Fоr Binary [Access Доступ] [Блокировка] As [#] НомерФайла

Формат инструкции Openпри двоичном доступе похож на формат этой инструкции при произвольном доступе. Главное отличие состоит в том, что вместо ключевого словаRandomуказываетсяBinary, а параметр Len отсутствует, так как записи имеют фиксированную длину – 1 байт.

Пример

Open “SPOCK.VUL” For Binary As fh

Ввод и вывод

Для считывания и записи в файл используются также инструкции GetиPut. Синтаксис их такой же, как при произвольном доступе, только вместо номера записи указывается номер байта:

Get #fh, 12, Var 'считывает 12-й байт

Put #fh, 4, Var 'записывает 4-й байт

Если данные считываются в строку, то будет считано такое количество байтов, равное длине строки:

Dim strOutput As String

str0utput = String(24, " ")’Создана строка длиной 24 байта

Get #fh, 26, str0utput

В данном примере в строку считывается 24 байта, начиная с 26-го байта файла

Лекция 18 События

Система Windowsгенерирует события (сообщения для приложения), которые предназначены для управления работой приложения. Приложение может реагировать или не реагировать на событие. Для того чтобы приложение реагировало на событие, программист должен поместить программный код в заготовке соответствующей событийной процедуры.

Некоторые события поддерживают почти все управляющие элементы. Такими событиями, например, являются:

  • GotFocus(Получил фокус) – генерируется в момент получения объектом фокуса клавиатуры. Пока объект обладает фокусом, все события клавиатуры происходят для него.

  • LostFocus(Потерял фокус) – генерируется, когда фокус перемещается на другой объект.

Форма поддерживает события, некоторые из которых используются особенно часто.

Наиболее часто применяемые события формы

Имя события

Когда происходит

Load

При загрузке формы. Удобно использовать для инициализации элементов формы

Paint

При перерисовывании формой своего содержимого

QueryUnlload

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

Resize

При любом изменении размеров формы, при первом ее появлении на экране, свертывании и восстановлении

Terminate

При прекращении существования формы. Из памяти удаляются все ссылки на форму, она больше не может быть загружена

Unload

При выгрузке формы из памяти. Ссылки на форму сохраняются, она может быть загружена заново

Источником некоторых событий может быть мышь.

События мыши

Имя события

Когда происходит

Click

При нажатии и отпускании кнопки мыши (щелчок)

DragDrop

При окончании перетаскивания объекта

DragOver

При перетаскивании объекта

MouseDown

При нажатии кнопки мыши. Аргументы событийной процедуры позволяют определить, какая из кнопок мыши была нажата и не происходит ли это при нажатой клавише ShiftилиCtrlилиAlt

MouseMove

При перемещении мыши

MouseUp

При отпускании ранее нажатой кнопки мыши

Клавиатура также является источником событий. События клавиатуры происходят для того управляющего элемента, который в данный момент обладает фокусом клавиатуры. В случае, если ни один управляющий элемент не обладает фокусом, это событие получит форма. Но если свойству KeyPreviewформы присвоить значениеTrue(по умолчанию оно имеет значениеFalse), то каждое событие клавиатуры будет происходить сначала для формы, затем для управляющего элемента, обладающего фокусом клавиатуры.