Материал: 1319

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

На форме расположена метка, в которой выводится текущее время. При загрузке формы включается таймер и идет посекундный отсчет времени. Внешний вид формы показан на рис. 23.

Воспользуемся функцией Timer, которая возвращает число секунд,

прошедших с полуночи до текущего

Рис. 23. Внешний вид формы

момента времени, и функцией Time,

 

которая возвращает текущее время по системным часам.

Private Sub UserForm_Activate()

 

Dim d As Date, d1 As Date

 

d1 = Timer

‘засекаем время

While Timer < d1 + 100

‘часы будут работать 100 секунд

Label1.Caption = Time

‘отображаем текущее время

d = Timer

While Timer < d + 1 ‘делаем паузу в 1 секунду DoEvents ‘ожидание наступления события

Wend Wend

End Sub

Пример 18

На форме расположены: рисунок с автомобилем, рисунок с гаражом, две кнопки «В гараж» и «Из гаража» на одном и том же месте (видна только кнопка «В гараж»). При нажатии на кнопку «В гараж» автомобиль начинает движение к гаражу, как только он доезжает до гаража, картинка гаража заменяется на картинку с открытыми воротами, автомобиль продолжает движение пока не въедет в гараж, останавливается, ворота закрываются (картинка с гаражом заменяется на прежнюю), кнопка «В гараж» становится невидимой, а кнопка «Из гаража» – видимой. Аналогичные действия происходят при нажатии на кнопку «Из гаража», только движение осуществляется в другую сторону и рисунок автомобиля повернут в другую сторону. Внешний вид формы до начала работы программы показан на рис. 24.

41

Рис. 24. Внешний вид формы

Dim start As Date

_______________________________________________________________________________________________________

Private Sub CommandButton1_Click() ‘кнопка «В гараж»

‘загружаем рисунок автомобиля

Image1.Picture = LoadPicture(“C:\машина1.bmp”)

‘пока автомобиль не достигнет гаража, смещаем его вправо

While Image1.Left < Image2.Left – Image1.Width Image1.Left = Image1.Left + 5

‘делаем паузу start = Timer

While Timer < start + 0.1

DoEvents ‘ожидает наступления события

Wend Wend

‘открываем ворота (меняем рисунок гаража с закрытыми ‘воротами на рисунок гаража с открытыми воротами) Image2.Picture = LoadPicture(“C:\гараж2.bmp”)

‘пока автомобиль не въедет в гараж, смещаем его вправо

While Image1.Left < Image2.Left + 10

Image1.Left = Image1.Left + 5 start = Timer

While Timer < start + 0.1 DoEvents

Wend Wend

‘возвращаем рисунок гаража с закрытыми воротами

Image2.Picture = LoadPicture(“C:\гараж1.bmp”)

Image1.Visible = False

‘скрываем рисунок автомобиля

 

42

CommandButton2.Visible

= True

‘показываем вторую кнопку

CommandButton1.Visible

= False

‘скрываем первую кнопку

End Sub

_______________________________________________________________________________________________________

Private Sub CommandButton2_Click()

‘кнопка «Из гаража»

‘загружаем рисунок автомобиля

 

Image1.Picture = LoadPicture(“C:\машина2.bmp”) Image1.Visible = True ‘показываем рисунок

‘загружаем рисунок гаража с открытыми воротами

Image2.Picture = LoadPicture(“C:\гараж2.bmp”) ‘автомобиль выезжает из гаража

While Image1.Left > Image2.Left – Image1.Width Image1.Left = Image1.Left – 5

start = Timer

While Timer < start + 0.1 DoEvents

Wend Wend

‘загружаем рисунок гаража с закрытыми воротами

Image2.Picture = LoadPicture(“C:\гараж1.bmp”) ‘продолжаем движение автомобиля до левого края формы

While Image1.Left > 1 Image1.Left = Image1.Left – 5 start = Timer

While Timer < start + 0.2 DoEvents

Wend Wend

CommandButton1.Visible = True

CommandButton2.Visible = False End Sub

Пример 19

На форме расположены список с названиями месяцев, поле и метка с пояснительным текстом. При помощи мыши из списка перетаскивают в поле необходимый элемент, выделенный в списке. При неправильном действии, т.е. перетаскивании не в поле, происходит вывод предупреждающего сообщения. Список формируется при активации формы из значений на рабочем листе

43

Excel. Внешний вид формы после перемещения и диалоговое окно показаны на рис. 25.

Рис. 25. Внешний вид формы и диалогового окна

Для реализации данного проекта необходимо использовать технологию DragAndDrop (прил. 2), позволяющую перемещать объекты. Когда пользователь захватывает выбранный им элемент списка, то возникает некоторое событие, в нашем примере это событие

MouseMove.

Private Sub UserForm_Activate() Dim i As Byte

‘формируем список значениями из ячеек рабочего листа

For i = 1 To 12 ListBox1.AddItem (Cells(i, 1)) Next i

End Sub

_______________________________________________________________________________________________________

Private Sub ListBox1_MouseMove(ByVal Button As Integer)

Dim D As DataObject

Dim R As Integer

 

If Button = 1 Then

‘если копируем объект

‘создает новый объект и связываем его с переменной D Set D = New DataObject

‘копируем содержимое выбранного элемента списка ‘в текстовую строку

D.SetText ListBox1.Value

R = D.StartDrag ‘результат операции ‘если переместили не на текстовое поле

44

If R = 0 Then MsgBox (“Ошибка. Повторите операцию!”) End If

End Sub

Пример 20

На форме расположена кнопка «Начать», нажатие на которую выводит на экран предупреждающее диалоговое окно с текстом «Нажмите кнопку» и кнопкой «ОК» (рис. 26).

Рис. 26. Внешний вид формы и диалогового окна

После нажатия кнопки «ОК» появляется диалоговое окно с текстом «Начать?» и кнопками «Да» и «Нет». Если пользователь нажал кнопку «Да», то у него запрашивается его имя. Затем, если пользователь ввел имя, выводится информационное диалоговое окно с приветствием, в противном случае выводится предупреждающее диалоговое окно с соответствующим сообщением (рис. 27).

Рис. 27. Внешний вид диалоговых окон и окна ввода

45