Strona: [  << <   1   > >>  ]  z  1     
Autor Temat: problem z timer
anonim




Typ: Nie zarejestrowany
problem z timer

jaką komende dodać żeby timer zwracał do zmiennej nową wartość co 1 sekundę i gdy osięgnie np.5000 to coś tam jeszcze zrobi???

14-12-2004 14:26
  
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

Nie da się z tego co wiem tego zrobić. Natomiast możesz wykorzystać zdarzenie Timer:
Stwóz sobie jakiś Timer (Timer1), ustaw .Interval na 1000 i dodaj do formy ten kod:

Private JakasZmienna As Long

Private Sub Timer1_Timer()
    Static nTimerCounter As Byte
   
    If nTimerCounter < 5 Then
        JakasZmienna = 3515 'tutaj możesz sobie wpisywać swoje wartości.
        nTimerCounter = nTimerCounter + 1
    Else
        'Tutaj to, co ma zostać wykonane po 5 sekundach.
        Timer1.Enabled = False 'To możesz dodać, jeśli chcesz, żeby po 5 sekundach Timer1 przestał także odliczać czas.
    End If
End Sub



_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

14-12-2004 15:33
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
anonim




Typ: Nie zarejestrowany

to może inaczej.
jak napisac program który pokaże napis textbox co 40 min na 10 sec

14-12-2004 15:59
  
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004


Private Sub Timer1_Timer()
    Static nTimerCounter As Long
    Dim nT As Double
   
    If nTimerCounter < 80 Then
        nTimerCounter = nTimerCounter + 1
    Else
        nTimerCouner = 0
        Text1.Text = "textbox"
        nT = Timer
        Do Until nT + 10 > Timer
            DoEvents
        Loop
        Text1.Text = ""
    End If
End Sub


Uwagi:
.Interval = 30000

Może działać nieprawidłowo w czasie od 23:59:49 do 0000.


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

14-12-2004 16:26
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
Viper87



Typ: neutral
Postów: 490
Zarejestrowany: Oct 2002

Marcin. A nie prościej tak?


Private licznik As Integer

Private Sub Form_Load()
Timer1.Interval=60000
Timer2.Interval=10000
Timer1.Enabled=true
Timer2.Enabled=False
End Sub

Private Sub Timer1_Timer()
If licznik = 40 Then
Beep
Text1.Text = "Ten napis będzie widoczny tylko przez 10 sekund..."
Timer2.Enabled = True
Timer1.Enabled = False
Else
licznik = licznik + 1
End If
End Sub

Private Sub Timer2_Timer()
Beep
Text1.Text = ""
licznik = 0
Timer1.Enabled = True
Timer2.Enabled = False
End Sub



_____________________________________________
Viper

"Savoir c`est prevoir, prevoir c`est prevenir". 
(Wiedzieć to przewidzieć, przewidzieć to zapobiegać) 


14-12-2004 16:58
Pokaż profil Viper87  Wyślij email do Viper87   Odwiedź stronę Viper87  
anonim




Typ: Nie zarejestrowany

a gdzie wpisac .interval = 30000

14-12-2004 16:59
  
Viper87



Typ: neutral
Postów: 490
Zarejestrowany: Oct 2002

Może by tak w Form_Load? Widzę, że wybierasz sposób Marcina.

Zapomniałem dodać, że mój działa OK o każdej godzinie...


_____________________________________________
Viper

"Savoir c`est prevoir, prevoir c`est prevenir". 
(Wiedzieć to przewidzieć, przewidzieć to zapobiegać) 


14-12-2004 17:00
Pokaż profil Viper87  Wyślij email do Viper87   Odwiedź stronę Viper87  
anonim




Typ: Nie zarejestrowany

viper87 a jak w teoim zmienić czas oczekiwania bo próbóje i mi nie wychodzi

14-12-2004 17:06
  
Viper87



Typ: neutral
Postów: 490
Zarejestrowany: Oct 2002

Kod działa tak:

co minutę (Interval=60000) dodaje do licznika jedynkę. Gdy licznik=40, to czekamy już 40 minut, wtedy licznik jest zerowany, zostaje wyświetlony napis oraz odpalony drugi timer z Interval na 10000 (10 sekund). Timer2 po 10 sekundach chowa napis i cała procedura zaczyna się od początku.

Jak więc zmienić?

linijkę:
If licznik=40 zmień na taką ilość minut, po której chcesz zobaczyć napis.
Regulując natomiast linijkę:
Timer2.Interval=10000
ustawiasz ile sekund ma być widoczny napis.

Czy teraz rozumiesz?

[Post edytowany dnia 14-12-2004 17:13 przez Viper87]


_____________________________________________
Viper

"Savoir c`est prevoir, prevoir c`est prevenir". 
(Wiedzieć to przewidzieć, przewidzieć to zapobiegać) 


14-12-2004 17:12
Pokaż profil Viper87  Wyślij email do Viper87   Odwiedź stronę Viper87  
anonim




Typ: Nie zarejestrowany

teraz tak THX

14-12-2004 17:14
  
anonim




Typ: Nie zarejestrowany

zmieniłem If licznik=40 na If licznik=1 i po minucie nadal nic niema w text1

14-12-2004 17:19
  
Viper87



Typ: neutral
Postów: 490
Zarejestrowany: Oct 2002

Sorry-mój błąd. Trudno napisać komuś kod na kolanie.

Wpisz w Form_Load:
licznik=1


_____________________________________________
Viper

"Savoir c`est prevoir, prevoir c`est prevenir". 
(Wiedzieć to przewidzieć, przewidzieć to zapobiegać) 


14-12-2004 17:37
Pokaż profil Viper87  Wyślij email do Viper87   Odwiedź stronę Viper87  
anonim




Typ: Nie zarejestrowany

zamiast 1min - 10sec - 1min - 10sec
jest 1min - 10sec - 2 min -10sec -2 min -10 sec

14-12-2004 17:56
  
Viper87



Typ: neutral
Postów: 490
Zarejestrowany: Oct 2002

Ty chyba jednak nie za bardzo rozumiesz jak ten kod działa , bo inaczej domyśliłbyś się, że wina leży w linijce:
licznik = 0

w kodzie Timer2.

Powinna ona wyglądać tak:

licznik=1

Fakt-nie podałem tego.


_____________________________________________
Viper

"Savoir c`est prevoir, prevoir c`est prevenir". 
(Wiedzieć to przewidzieć, przewidzieć to zapobiegać) 


14-12-2004 17:59
Pokaż profil Viper87  Wyślij email do Viper87   Odwiedź stronę Viper87  
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

Viper:

1) .Interval jest typu Integer, maksymalnie można w niego wpisać 32767.. 60000 nie przejdzie (myślisz, że bym się bawił w 30000, gdyby się dało? )

2) Zdawało mi sie, ze anonim mówił o jednym timerze, wiec wykonałem to na jednym timerze.

3) anonim chciał co 40 minut, nie co 40 minut i 10 sekund


BTW  - w moim koedzie jest błąd - zapomniałem o zerowaniu licznika - oczywiscie nalezy zerować zaraz po wyświetleniu tekstu w textboxie.


_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

14-12-2004 20:27
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
Viper87



Typ: neutral
Postów: 490
Zarejestrowany: Oct 2002

Marcin:

1.) Interval na 60000 przeszedł bez problemu. Jego maksymalna wartość to 65000. Nie wiedziałeś?

2.) Anonim użył jedynie słowa "timer" w liczbie pojedynczej. Niczego nie podkreślał.

3.) Ech... Mój kod ustawia co 40 minut napis na textbox, który jest wyświetlany przez 10 sekund, a potem cała procedura zaczyna się od nowa.
A Twój kod niby jak robi?


_____________________________________________
Viper

"Savoir c`est prevoir, prevoir c`est prevenir". 
(Wiedzieć to przewidzieć, przewidzieć to zapobiegać) 


14-12-2004 21:11
Pokaż profil Viper87  Wyślij email do Viper87   Odwiedź stronę Viper87  
marcin_an
Forumowicz




Typ: neutral
Postów: 1265
Zarejestrowany: Mar 2004

1) U mnie po wpisaniu 60000 wywalało kiedyś "Invalid property value"... może to kwesta SP, bo rzeczywiście teraz już się da wpisać i dokumentacja też mówi o 2^16.
2) Zależy od interpretacji. Jesli ktoś mówi "timer" w liczbie pojedynczej, to dla mnie znaczy to "timer", nie "timery".
3) Zgadza się. Twój kod wyświetla, ale 40 minut od zniknięcia tekstu, czyli co 40 minut i 10 sekund, a mój co 40 minut, bo czas jest liczony od momentu wyświetlenia tekstu, nie jesgo zgaszenia.

Ja sie nei czepiam twojego kodu, tylko pytałeś, czy nie jest tak lepiej, więc wyrażam swoją opinię, tym bardziej, ze twój kod wydaje mi się o wiele bardziej skomplikowany .


A tutaj poprawiona wersja kodu z uwzglednieniem, ze .Interval może być równy 60000:

Private Sub Timer1_Timer()
    Static nTimerCounter As Long
    Dim nT As Double
   
    If nTimerCounter < 39 Then
        nTimerCounter = nTimerCounter + 1
    Else
        nTimerCounter = 0
        Form1.Caption = "textbox"
        nT = Timer
        Do Until nT + 10 < Timer
            DoEvents
        Loop
        Form1.Caption = ""
    End If
End Sub



_____________________________________________
Jedzonko dla Google'a:
Forum na temat Visual Basic, C, C++, Pascal, Programowanie, API, PHP, VBA, VB.NET, QBasic, VBScript, Komputery
Moja strona o wszystkim

15-12-2004 03:35
Pokaż profil marcin_an  Wyślij email do marcin_an   Odwiedź stronę marcin_an  
Viper87



Typ: neutral
Postów: 490
Zarejestrowany: Oct 2002

Nie sądzę, żeby Interval był kwestią SP. W pomocy do VB 5.0 też graniczną wartością jest 65535...

Co do p.3, to przecież wystarczy drobna modyfikacja:


Private licznik As Integer

Private Sub Form_Load()
licznik=1
Timer1.Interval=60000
Timer2.Interval=10000
Timer1.Enabled=true
Timer2.Enabled=False
End Sub

Private Sub Timer1_Timer()
If licznik = 40 Then
licznik=1
Beep
Text1.Text = "Ten napis będzie widoczny tylko przez 10 sekund..."
Timer2.Enabled = True
Else
licznik = licznik + 1
End If
End Sub

Private Sub Timer2_Timer()
Beep
Text1.Text = ""
Timer2.Enabled = False
End Sub


A to, który kod jest łatwiejszy to kwestia gustu. Mnie mój wydaje się prostszy...


_____________________________________________
Viper

"Savoir c`est prevoir, prevoir c`est prevenir". 
(Wiedzieć to przewidzieć, przewidzieć to zapobiegać) 


15-12-2004 13:16
Pokaż profil Viper87  Wyślij email do Viper87   Odwiedź stronę Viper87  
Wszystkich odpowiedzi: 17 :: Maxymalnie na stronę: 20
Strona: [  << <   1   > >>  ]  z  1