Avatar billede jakobscafe Nybegynder
26. juli 2003 - 10:29 Der er 9 kommentarer og
1 løsning

Få ajourført en form 'på kommando'

Jeg er ny her. Jeg har en Form i Visual Basic (6) hvor jeg tæller noget om på en label (form1.label1=form1.label1+1)

Dette kører i en løkke, men først når løkken er gennemført vises noget på label'en. Jeg kan altså ikke se at den 'tæller op' (Jeg ved godt at det vil gå meget hurtigt)
Jeg har brug for der vises lidt action indimellem.

Det kan tage ca 10 sekunder at løbe løkken igennem, og det ser jo så ud som om der intet sker.

Hvordan kan jeg få vist/ajourført min form evt via en timer (hvert ½ sekund eller lignende)

Jeg har prøvet med noget Show Me men det virker ikke

Kan nogen bidrage?

Tak
Avatar billede nmh Nybegynder
26. juli 2003 - 10:44 #1
Du kan vel bare løbende skrive noget i labelen.
VB 6.0 har jo en mulighed for f.eks. hvert halve sekund at starte en proces, som så skriver noget til din label.
Du skal bruge "uret" i værktøjslinien. Du kan selv vælge hvornår du skal starte med dette, og hvor lnag tid imellem havert tik.
Avatar billede nmh Nybegynder
26. juli 2003 - 10:45 #2
lnag-->lang, havert-->hvert.  (tasterne smuttede vist)
Avatar billede nmh Nybegynder
26. juli 2003 - 10:47 #3
En lettere måde, er blot at spørge til tiden løbende i din løkke, og så skrive til labelen.
Avatar billede jakobscafe Nybegynder
26. juli 2003 - 10:55 #4
Jo, men jeg skriver sådan set også til label (label=label+1) - men det bliver ikke vist før det hele er færdigt og formen ligesom bliver opdateret.
Avatar billede nmh Nybegynder
26. juli 2003 - 10:58 #5
Her er et eks. Hvert 2. sekund kommer der en msgbox.

Private Sub Form_Load()
  Dim tid, i, starttid
  starttid = Timer
  While tid < starttid + 10
    If tid > starttid + i Then
      MsgBox "Hejsa"
      i = i + 2
    End If
    tid = Timer
    'gør her hvad du skal....
  Wend
End Sub
Avatar billede nmh Nybegynder
26. juli 2003 - 11:11 #6
Der er en løsning på det problem med at labelen ikke opdateres.
Man skal blot med mellemrum bede om at give plads for andre kørende processer.
Avatar billede nmh Nybegynder
26. juli 2003 - 11:25 #7
Du skal blot kalde DoEvents: Sådan her;
Private Sub Command1_Click()
  start
End Sub

Sub start()
Dim tid, i, starttid
  starttid = Timer
  While tid < starttid + 10
    If tid > starttid + i Then
      Label1 = "Hejsa" & i
      i = i + 1
    End If
    tid = Timer
    DoEvents
    'gør her havd du skal....
  Wend
End Sub
Avatar billede jakobscafe Nybegynder
26. juli 2003 - 11:48 #8
Det virkede - Mange Tak!
Avatar billede jakobscafe Nybegynder
26. juli 2003 - 12:21 #9
Iøvrigt: Kan man ikke få DoEvents til at virke i en Timer?

Således at jeg f.eks. hvert sekund udførte en DoEvents?
Avatar billede nmh Nybegynder
26. juli 2003 - 12:27 #10
Jo det skulle jeg mene, men normalt er det bedst kun at kalde DoEvents, når man ved der er brug for det. Det sætter jo det i stå man har gang i en lille stykke tid.  men når man kører rundt i en stor løkke skal man gøre det, når man ved der er udskrift m.m. på vej.
Jeg kan kun sige prøv.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

Seneste spørgsmål Seneste aktivitet
I dag 10:21 Ny printer, men hvilken Af mort1 i Printere
I går 19:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging