Avatar billede heavybreezer Nybegynder
17. oktober 2003 - 15:09 Der er 3 kommentarer og
2 løsninger

Progressbar - Hvordan fungerer den?

Overalt ser man det!
Hvis man udfører noget i sit program, er der en progressbar der viser hvor meget der er loadet eller hvor vidt processen er.

Hvordan gør man det? Hvis jeg f.eks. kalder en funktion i mit program, som tager længere tid, hvordan får jeg så min progressbar til vise hvor langt processen er kommet?
Avatar billede jennemaan Nybegynder
17. oktober 2003 - 15:18 #1
den har et min og et max (f.eks. 0 - 100).
Du sætter dens value property til hvor langt du er nået...

f.eks.

for i = 1 to 100000
  myprogressbar.value=clng(100*i/100000)
next i

du kan evt. tilføje DoEvent og myprogressbar.Refresh ...

/Jennemaan
Avatar billede martin_moth Mester
17. oktober 2003 - 15:54 #2
Det kræver altså, at du VED hvor langt du er nået i en process. Har du med en løkke at gøre, kan du gøre som vist ovenfor. Er du ved at kopiere en fil eller lignende, og vis have kopierings-status vist, bliver du nødt til at vide hvor langt du er nået hele tiden...

Altså: Progress-baren er "dum". Du kan angive en min og en max værdi, og så sætte en value der ligger i mellem min og max for at vise hvor langt du er nået. Altså bare en streg, du bestemmer længden på. Den kan ingenting selv "måle"...
Avatar billede heavybreezer Nybegynder
17. oktober 2003 - 17:06 #3
Hm.. Det er nogle fine svar i har givet, men jeg er stadig ikke helt med.
Som jeg ser det,  ser det sådan ud:

Private Sub Command1_Click()

Her kan man sætte en value for progressbaren

Kommando

Her kan man igen sætte en value for progressbaren

End Sub


Det vil altså sige at man kan sætte en value før og efter..
Jeg forstår stadig ikke hvordan man gør??
Avatar billede joern Nybegynder
18. oktober 2003 - 11:30 #4
Hej.

Længere tid, er det 5 sekunder eller 1 minut?  Den afbrydelse som opdatering af progress-baren er koster såmænd også lidt tid.

Hvis du f.eks. læser en meget stor tekstfil med 1.000.000 linier, kan du lade progress-baren registrere hver 10.000 linier.

Dim linie as String, a, b as Long

Open dinfil.txt for input as #1
  Do while EOF(1) = False
    Line Input #1, linie
    a = a +1
    If a = 10000 then
        b = b +1
        progressbar.value = b
        a = 0
    End if
  Loop
Close #1

Til inspiration.  Vil du have bedre hjælp må du skrive kildeteksten til den proces du vil lave progress-bar for. 

M.v.h.  Jørn
Avatar billede martin_moth Mester
18. oktober 2003 - 12:15 #5
Progress-baren er en blå pind - du bestemmer hvor stor en del af pinden der er blå med min, max og value. Det er ikke mere kompliceret end det...
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

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