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

-
-
- Сообщения: 44
- Зарегистрирован: 30.01.2005 (Вс) 11:01
- Откуда: Ленинградская область, город Гатчина
Adolf » 01.02.2005 (Вт) 20:15
В общем у меня существует следующая проблема:
При активации события (нажатием кнопки), у меня происходит действие, затем мне нужно сделать так что бы произошло второе действие, но только через определенное время, как это сделать.
Активация
Действие 1
Ждать (допустим 10 секунд) (?)
Действие 2
-
Amed
-
- Алфизик

-
-
- Сообщения: 5346
- Зарегистрирован: 09.03.2003 (Вс) 9:26
-
Amed » 01.02.2005 (Вт) 20:17
Оцени функцию Sleep
- Код: Выделить всё
'This project needs a button
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Command1_Click()
'KPD-Team 1998
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@Allapi.net
Me.Caption = "Your system will sleep 5 sec."
'Sleep for 5000 milliseconds
Sleep 5000
Me.Caption = ""
End Sub
Private Sub Form_Load()
Me.Caption = ""
Command1.Caption = "Sleep ..."
End Sub
-
Александр80
-
- Bonachón

-
-
- Сообщения: 659
- Зарегистрирован: 20.03.2004 (Сб) 23:50
- Откуда: г.Москва
Александр80 » 01.02.2005 (Вт) 20:38
Adolf писал(а):Активация
Действие 1
Ждать (допустим 10 секунд) (?)
Действие 2
Что-то не доброе затеял...

-
Ramzes
-
- Скромный человек

-

-
- Сообщения: 5004
- Зарегистрирован: 12.04.2003 (Сб) 11:59
- Откуда: Из гробницы :)
-
Ramzes » 01.02.2005 (Вт) 20:43
Александр80 писал(а):Adolf писал(а):Активация
Действие 1
Ждать (допустим 10 секунд) (?)
Действие 2
Что-то не доброе затеял...

С чего ты взял?
-
Amed
-
- Алфизик

-
-
- Сообщения: 5346
- Зарегистрирован: 09.03.2003 (Вс) 9:26
-
Amed » 01.02.2005 (Вт) 20:44
...и пошёл флуд...
{offtop}Привет, Sebas!

{/offtop}
-
Ramzes
-
- Скромный человек

-

-
- Сообщения: 5004
- Зарегистрирован: 12.04.2003 (Сб) 11:59
- Откуда: Из гробницы :)
-
Ramzes » 01.02.2005 (Вт) 20:50
где тут флуд?
[off]
ну привет себас
[/off]
-
Ramzes
-
- Скромный человек

-

-
- Сообщения: 5004
- Зарегистрирован: 12.04.2003 (Сб) 11:59
- Откуда: Из гробницы :)
-
Ramzes » 01.02.2005 (Вт) 21:01
да но можно и что-то полезное
[off]
ну привет себас (еще раз)
[/off]
-
Adolf
-
- Новичок

-
-
- Сообщения: 44
- Зарегистрирован: 30.01.2005 (Вс) 11:01
- Откуда: Ленинградская область, город Гатчина
Adolf » 01.02.2005 (Вт) 22:37
Amed
Нет, Sleep он просто отключает действие программы, продолжать работать невозможно, мне нужно, что все работало и только произошла задержка определенного действия.
Например:
Private Sub cmd..._Click()
If lbl1.Caption = "..." Then
lbl2.Caption = "..."
Далее проходит 10 секунд <-Как описать данное действие.
lbl2.Caption = "..."
...
-
Amed
-
- Алфизик

-
-
- Сообщения: 5346
- Зарегистрирован: 09.03.2003 (Вс) 9:26
-
Amed » 01.02.2005 (Вт) 22:41
Тогда так:
- Код: Выделить всё
Private Declare Function GetTickCount Lib "kernel32" Alias "GetTickCount" () As Long
Private Sub cmd..._Click()
Dim Time1 As Long, Time2 As Long
If lbl1.Caption = "..." Then
lbl2.Caption = "..."
Time1 = GetTickCount
Time2 = Time1
Do While Time2 - Time1 < 10000
Time2 = GetTickCount
DoEvents
Loop
lbl2.Caption = "..."
...
-
A.A.Z.
-
- Член-корреспондент академии VBStreets

-
-
- Сообщения: 3035
- Зарегистрирован: 30.06.2003 (Пн) 13:38
-
A.A.Z. » 01.02.2005 (Вт) 22:44
Может,
- Код: Выделить всё
Private Sub cmd..._Click()
Dim T!
If lbl1.Caption = "..." Then
lbl2.Caption = "..."
T = Timer
Do Until Timer - T >= 10000
Me.Caption = 10 - Int(Timer - T)
DoEvents
Loop
lbl2.Caption = "..."
Я малость не врубон, что нужно афтару, но если Sleep не подходит... Тогда, наверное, это... Или SleepEx?

-
A.A.Z.
-
- Член-корреспондент академии VBStreets

-
-
- Сообщения: 3035
- Зарегистрирован: 30.06.2003 (Пн) 13:38
-
A.A.Z. » 01.02.2005 (Вт) 22:44
Тьфу ты елки-палки!

-
Adolf
-
- Новичок

-
-
- Сообщения: 44
- Зарегистрирован: 30.01.2005 (Вс) 11:01
- Откуда: Ленинградская область, город Гатчина
Adolf » 02.02.2005 (Ср) 20:00
Все, желаемый результат получил, очень признателен за помощь.
-
Zer
-
- Постоялец

-

-
- Сообщения: 460
- Зарегистрирован: 26.09.2003 (Пт) 13:08
- Откуда: Нижний Новгород
-
Zer » 02.02.2005 (Ср) 20:24
А если в это время надо выполнять какие-то действия, а не просто ждать???
Microsoft DirectX - Маломягкий Прямой Х...
Не откладывай на завтра то, что можно выпить сегодня...
-
Amed
-
- Алфизик

-
-
- Сообщения: 5346
- Зарегистрирован: 09.03.2003 (Вс) 9:26
-
Amed » 02.02.2005 (Ср) 20:34
Просто добавить флаг ActionsDone As Boolean и ставить его в True по выполнении действий
- Код: Выделить всё
Private Declare Function GetTickCount Lib "kernel32" Alias "GetTickCount" () As Long
Private Sub cmd..._Click()
Dim Time1 As Long, Time2 As Long
If lbl1.Caption = "..." Then
lbl2.Caption = "..."
Time1 = GetTickCount
Time2 = Time1
Do While Time2 - Time1 < 10000
Time2 = GetTickCount
DoEvents
Loop
If ActionsDone Then
lbl2.Caption = "..."
...
End If
-
Zer
-
- Постоялец

-

-
- Сообщения: 460
- Зарегистрирован: 26.09.2003 (Пт) 13:08
- Откуда: Нижний Новгород
-
Zer » 02.02.2005 (Ср) 21:01
Не, я имею ввиду он будет крутится на:
- Код: Выделить всё
Do While Time2 - Time1 < 10000
Time2 = GetTickCount
DoEvents
Loop
Ентого не надо... ...надо чтобы он оттуда(из подпрограммы) уходил, а потом, ерез некоторое время, активировалась другая подпрограмма...
Microsoft DirectX - Маломягкий Прямой Х...
Не откладывай на завтра то, что можно выпить сегодня...
-
Adolf
-
- Новичок

-
-
- Сообщения: 44
- Зарегистрирован: 30.01.2005 (Вс) 11:01
- Откуда: Ленинградская область, город Гатчина
Adolf » 03.02.2005 (Чт) 10:38
Zer
Используй код, который мне рекомендовал A.A.Z., я правда его немного изменил, как мне нужно.
-
Adolf
-
- Новичок

-
-
- Сообщения: 44
- Зарегистрирован: 30.01.2005 (Вс) 11:01
- Откуда: Ленинградская область, город Гатчина
Adolf » 03.02.2005 (Чт) 12:31
Еще вопрос:
Какой код нужно ввести, что если исполняется одно из всех данных условий, то действия сразу же прекращалось.
Просто конечный результат действия одно условия совпадает с начальным другого, в результате чего действее сразу перекидывается на следуующий цикл и так далее. Как это избежать?
-
A.A.Z.
-
- Член-корреспондент академии VBStreets

-
-
- Сообщения: 3035
- Зарегистрирован: 30.06.2003 (Пн) 13:38
-
A.A.Z. » 03.02.2005 (Чт) 15:41
Ну, можно так (хотя я опять не понял, что нужно афтару):
- Код: Выделить всё
If <условие1> Or <условие2> Or ... Or <условиеN> Then Exit Sub
-
Amed
-
- Алфизик

-
-
- Сообщения: 5346
- Зарегистрирован: 09.03.2003 (Вс) 9:26
-
Amed » 03.02.2005 (Чт) 16:58
- Код: Выделить всё
Private Declare Function GetTickCount Lib "kernel32" Alias "GetTickCount" () As Long
Private Sub Form_Load()
Dim Time1 As Long, Time2 As Long
Time1 = GetTickCount
'... действия
'... действия
'... действия
Time2 = GetTickCount
MsgBox "Действия продолжались " & (Time2 - Time1) / 1000 & " с."
End Sub
Вернуться в Visual Basic 1–6
Кто сейчас на конференции
Сейчас этот форум просматривают: AhrefsBot, Google-бот, SemrushBot, Yandex-бот и гости: 10