Как выйти из цыкла по событию Mouse Up?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Milevskiy
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 05.11.2002 (Вт) 19:56
Откуда: Russia

Как выйти из цыкла по событию Mouse Up?

Сообщение Milevskiy » 26.03.2005 (Сб) 21:01

Подскажите пожалуйста!
Как выйти из цыкла по событию "Mouse Up"?

Ситация такова: при наступлении события "Mouse Down" программа заходит в цыкл а потом уже от туда не выходит при отпускании клавиши мыши.
Как выйти из подобной ситуации?

Заранее благодарен.

Морфий
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 119
Зарегистрирован: 11.01.2005 (Вт) 18:06

Сообщение Морфий » 26.03.2005 (Сб) 21:02

удали одно сообщение
Вот оно — счастье...

Морфий
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 119
Зарегистрирован: 11.01.2005 (Вт) 18:06

Сообщение Морфий » 26.03.2005 (Сб) 21:05

В цикле ставишь:
Код: Выделить всё
if MouseUPS = true then exit do

А при MuoseUP пишешь:
Код: Выделить всё
MouseUPS = true
Вот оно — счастье...

Milevskiy
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 05.11.2002 (Вт) 19:56
Откуда: Russia

Сообщение Milevskiy » 26.03.2005 (Сб) 22:24

Морфий писал(а):В цикле ставишь:
Код: Выделить всё
if MouseUPS = true then exit do

А при MuoseUP пишешь:
Код: Выделить всё
MouseUPS = true


Спасибо!

Пробовал этот способ. Не выходит из цыкла и все тут. Очень похоже на то, что событие "Mouse UP" просто перестает отслеживаться пока программа внутри цыкла.

Другие мысли есть по этому поводу?

Лично я думаю нужно каким-то способом отслеживать отпускание клавиш мыши прямо внутри цикла. Вот только не могу это програмно описать. Как бы это сделать?

Морфий
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 119
Зарегистрирован: 11.01.2005 (Вт) 18:06

Сообщение Морфий » 26.03.2005 (Сб) 22:39

Не, может надо DoEvents в цикл поставить...
Это у меня работает:
Код: Выделить всё
Private MouseUPS As Boolean

Private Sub Dones()
Dim i As Long
Do
i = i + 1
DoEvents
If MouseUPS = False Then Exit Do
Loop
MsgBox i
End Sub

Private Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If MouseUPS = False Then
MouseUPS = True
Call Dones
End If
End Sub

Private Sub Command1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
MouseUPS = False
End Sub
Вот оно — счастье...

Ariman
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 817
Зарегистрирован: 02.09.2003 (Вт) 16:23
Откуда: Великая наша держава, г.Москва

Сообщение Ariman » 26.03.2005 (Сб) 22:42

Э..... А ты в цикле-то используешь DoEvents??

Морфий
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 119
Зарегистрирован: 11.01.2005 (Вт) 18:06

Сообщение Морфий » 26.03.2005 (Сб) 22:49

Ariman писал(а):Э..... А ты в цикле-то используешь DoEvents??


Да

Морфий писал(а):Do
i = i + 1
DoEvents
If MouseUPS = False Then Exit Do
Loop
Вот оно — счастье...

Ariman
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 817
Зарегистрирован: 02.09.2003 (Вт) 16:23
Откуда: Великая наша держава, г.Москва

Сообщение Ariman » 26.03.2005 (Сб) 22:54

Морфий Я не тебе это сказал :D
Просто ты успел запостить раньше меня :D


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 125

    TopList