1 час>>>>......

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

1 час>>>>......

Сообщение sad » 21.12.2004 (Вт) 14:58

Недвано прочитал статью о том что копьютер вреден для глаз... и все такое, и чтобы сильно не портить зрение надо делать перерывы: 1 работы; 15 мин отдыха... Так как я человек забывчивый, я решил сделать прогу которая в интервале одного часа выкидывает сообщение "Иди отдохни"
И столкнулся с проблемой: В таймере максимальный интервал который я смог установить это: 19999, а ето помойму сек. 15 или >, иначе выкидывает ошибку "Неправильное значение свойства" или чтото в этом роде
Как решить проблему?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 21.12.2004 (Вт) 15:10

Ох... Грехи наши тяжкия...

Ставишь на таймер интервал 1000 (1 секунда). Кроме того, объявляешь Private SecondCount As Long. И в таймере выполняешь SecondCount = SecondCount + 1. Когда SecondCount станет равным 3600 (один час), то делаешь MsgBox "Час прошел" и обнуляешь SecondCount (SecondCount = 0).
Lasciate ogni speranza, voi ch'entrate.

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 21.12.2004 (Вт) 18:05

alibek писал(а):Ох... Грехи наши тяжкия...

Ставишь на таймер интервал 1000 (1 секунда). Кроме того, объявляешь Private SecondCount As Long. И в таймере выполняешь SecondCount = SecondCount + 1. Когда SecondCount станет равным 3600 (один час), то делаешь MsgBox "Час прошел" и обнуляешь SecondCount (SecondCount = 0).

по твоим словам получаеться что он будет ходить на отдых каждые 45 мин., а не час. :roll:

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 21.12.2004 (Вт) 18:13

Интересно, а пока MsgBox() висит, таймеры работают? Насколько я помню, нет. Так что отсчет следующего часа у тебя начнется не сразу после вывода сообщения, а только лишь после его закрытия :)

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 21.12.2004 (Вт) 18:22

Работают. Только сообщения WM_TIMER не накапливаются...
2Ramzes: А почему?
Кстати, на таких больших промежутках ошибка будет +-5 мин... WM_TIMER достаточно грубвый способ...
Лучше в этом же таймере:
Код: Выделить всё
Option Explicit
Dim mOldDate As Date

Private Sub Form_Load()
mOldDate = Now
End Sub

Private Sub Timer1_Timer()
If Now > mOldDate + TimeSerial(1, 0, 0) Then
    mOldDate = Now
    MsgBox "Иди отдохни!"
End If
End Sub
Последний раз редактировалось ANDLL 21.12.2004 (Вт) 18:26, всего редактировалось 1 раз.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 21.12.2004 (Вт) 18:24

ANDLL писал(а):Работают. Только сообщения WM_TIMER не накапливаются...
2Ramzes: А почему?
Кстати, на таких больших промежутках ошибка будет +-5 мин...


А потому, что вот прошел час, ты ушел на 15 перерыва, пришел, а время то тикает, и прошло 45 минут, опять выбило сообщения, ты опять ушел, а время то тикает :lol:

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 21.12.2004 (Вт) 18:29

:D :D :D

Тогда в моем коде надо делать так
Код: Выделить всё
Option Explicit
Dim mOldDate As Date

Private Sub Form_Load()
mOldDate = Now
End Sub

Private Sub Timer1_Timer()
If Now > mOldDate + TimeSerial(1, 0, 0) Then
    Timer1.Enabled = False
    MsgBox "Èäè îòäîõíè!"
    mOldDate = Now
    Timer1.Enabled = True
End If
End Sub
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

xolod
Гуру
Гуру
 
Сообщения: 1162
Зарегистрирован: 15.01.2004 (Чт) 0:42
Откуда: Moscow

Сообщение xolod » 21.12.2004 (Вт) 19:24

А на API таймер с нужным интервалом сделать не проще :?

Constant ERROR_SUCCESS deprecated. I'm so happy.
Программирование и дизайн – http://www.macrointellect.ru

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 23.12.2004 (Чт) 12:44

Если автор топика не научится давать своим темам нормальные названия, то я тогда просто его забаню и ему станет гораздо легче меньше работать на компе.
I don't understand. Sorry.

|kerish|
Постоялец
Постоялец
 
Сообщения: 831
Зарегистрирован: 22.10.2004 (Пт) 0:31

Сообщение |kerish| » 25.12.2004 (Сб) 10:34

MsgBox выводить лучше через API, тогда прога будет независима от него.

Max!
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 502
Зарегистрирован: 03.04.2003 (Чт) 22:08
Откуда: Литва

Сообщение Max! » 25.12.2004 (Сб) 13:58

А не преще ли зделать какойнить лабел с таймером 100 и отнимать (делать минус один) и проверку есле лабел равно ноль то выводиим сообщение ! После збасываем и ставим опять на нужное количество секунд и продолжаем отнимать (тоесть всё сначало ) Если хочес интерфейса то делай два лабела где в одном будет час в нашем случае 1 (60 - в самом лабели) а вовтром секунды , всё точно тагже , в первом отнимаешь сикунды , когда будет наль тогда делаешь минус во втаром ( -1 ) и в первом опять возвращаешь секунды на исходную позицию и так будет происходиь до тех пор пока во втаром не станет ноль (если стал то выводиш сообщение "Вали на отдых" - типо таво !) и ставиш всё на исходное состояние если это требуется ! Фу вроде всё !

:wink:
Max!

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 25.12.2004 (Сб) 14:37

Гм. Про это уже говорили. Правда, куда более дельные вещи.
|kerish| писал(а):MsgBox выводить лучше через API, тогда прога будет независима от него.

А вот тут я не согласен: наоборот, что бы избежать описанного Ramzes'ом эффекта надо использовать VB.MsgBox
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 25.12.2004 (Сб) 16:57

ANDLL писал(а):А вот тут я не согласен: наоборот, что бы избежать описанного Ramzes'ом эффекта надо использовать VB.MsgBox

Вообще-то это VBA.MsgBox (или более развёрнуто - VBA.Interaction.MsgBox).
(просто поправляю неточность)
Изображение

|kerish|
Постоялец
Постоялец
 
Сообщения: 831
Зарегистрирован: 22.10.2004 (Пт) 0:31

Сообщение |kerish| » 26.12.2004 (Вс) 1:23

ANDLL, ты не прав.
Именно API-шный MessageBox.


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

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

Сейчас этот форум просматривают: Majestic-12 [Bot], SemrushBot и гости: 14

    TopList