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

-
-
- Сообщения: 43
- Зарегистрирован: 05.11.2002 (Вт) 19:56
- Откуда: Russia
-
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
Вот оно — счастье...
Вернуться в Visual Basic 1–6
Кто сейчас на конференции
Сейчас этот форум просматривают: AhrefsBot, Google-бот, Majestic-12 [Bot], SemrushBot и гости: 16