Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Jest w VB 6.0 opóznienie?

miki5454 09 Mar 2005 12:04 2432 7
  • #1
    miki5454
    Level 11  
    Jest w Visual Basicu jakieś polecenie opóznienia (cos w stylu "wait (czas)") ?
  • #2
    ZeeWolf
    Level 28  
    Witam. W WinAPI raczej nie korzysta sie z akcji typu Delay() :). Uzyj kontrolki Timer - ustaw odpowiedni czas i zareaguj na komunikat od tej kontrolki (chyba OnTimer). Dziala to tak, ze Timer, po ustawieniu np: 400ms co 400ms generuje komunikat OnTimer. Dalej powinienes sobie poradzic. Jak nie, to pisz. Pozdrawiam.
  • #3
    jakubbulas
    Level 16  
    No tak, wszystko byłoby super gdyby nie to, że kontrolka Timer nie wstrzymuje akcji całego programu. A chyba o to chodziło, a jak nie to ja czegoś takiego poszukuję.
    Narazie moim rozwiązaniem jest wykorzystanie parametru Timer, który zwraca sekundy i ich setne części i tworzę pętle aż nie uzyska czasu początkowego + x sekund (a to daje sporą dokładność).
  • #4
    ZeeWolf
    Level 28  
    Wstrzymywanie programu (tak jak to mialo miejsce przy uzyciu delay w pascalu) jest mocno niewskazane. Dlaczego? Np: ustawiasz opoznienie na 20s, a w tym czasie program jest zatrzymany - nie mozna go zamknac, nie odrysowuje okna itp. Do zablokowania programu mozna uzyc prostej sztuczki - wywolac modalnie dowolny dialog box (np: messagebox). A najlepiej okreslic, czego program ma nie robic i przechwytywac odpowiednie komunikaty. Pozdrawiam.
  • #5
    amator
    Level 22  
    Witam.
    Jak napisał poprzednik takie opóźnienie nie jest wskazane. A jeżeli koniecznie potrzebujesz poniżej masz opdowiednik Pascal'owskiego DELAY.
    Deklarujemy funkcję Sleep:
    Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

    Natomiast w kodzie programu piszemy (musisz mieć labla na formie):
    Label1.Caption = "Demo funkcji Sleep - 2 sekundy"
    Label1.Refresh
    Sleep 2000 ' 2000 milisekund = 2 sekundy
    Label1.Caption = "Juz koniec ..."
    Label1.Refresh 'odśwież labla
    

    Pozdrawiam.
  • #6
    nakla
    Level 12  
    Mam pytanie.
    Jak w Vb 6 zrobić aby poszczególne komórki z tabeli czytać co pewien interwał.
    Naprzykład :
    for i=0 to 10
    text1.text = tablica(i)
    "funkcja z czasem której nie znam"
    next i

    Wyżej napisany moduł będzie częscia programu. Interwał ma być od 1µS do 1 sekundy. Ustale o doświadczalnie.
    Z góry dzięki.
  • #7
    amator
    Level 22  
    Witam,
    najlepiej ustawić Timer, wpisać w Interval wartość co jaką mamy odczytywać czas (od 1 ms wzwyż), np 1000 (1 sekunda) i wtedy w kodzie obsługi zdarzenia timer: (zdefiniować zmienną i=0 wcześniej, np przy wczytywaniu formatki)
    Private Sub Timer1_Timer()
    i=i+1
    text1.text = tablica(i)
    if i>10 then i=0
    End Sub

    Prosty podprogram wywołuje się zgodnie z parametrem Interval Timer1.
    Pozdrawiam.
  • #8
    romantv
    Level 17  
    Witam serdecznie Panowie potrzebuję zatrzymać wykonywanie funkcji np. na 100ms


    Function efekt_rozwijania_p_do_l()
    Efekt = 0
    efekt2:


    w tym miejscu



    If Efekt <= 5490 Then
    TV.Foto_tv.Width = Efekt
    Efekt = Efekt + 1
    GoTo efekt2
    End If
    End Function



    Jak to zrobić.

    Jeśli ten kod znajdzie się w : Private Sub Timer2_Timer()

    To jest ok wstawię timer2.interval = 100

    i jest ok.

    Proszę o pomoc dziękuję.