Avatar billede fqthjoe Nybegynder
16. oktober 2002 - 15:31 Der er 12 kommentarer og
1 løsning

Vise f.eks. et billede, mens commando-udføres.

Hej eksperter.
Når jeg klikker på min commandoknap, søger den efter bestemte filer på disken (f.eks. wav). Hvor den så viser de fudne filer i listbox. Det virker fint.  Men
"Søgningen" tager jo lidt tid.. Derfor : Kan man, så længe "søgningen" er aktiv vises et Billede eller Form og som så forsvinder igen når det er udført.
(ideen er at jeg så vil vise et billede hvor der f.eks. står please wait, så brugeren ved der foregår noget).
Avatar billede martin_moth Mester
16. oktober 2002 - 19:27 #1
Ved programstart
  Picture1.Picture = LoadPicture("C:\test.jpg")
  Picture1.visible=false

Ved filsøgningsstart
  Screen.MousePointer = vbHourglass
  Picture1.visible=true

Ved slut filsøgning
  Screen.MousePointer = vbDefault 
  Picture1.visible=false

Du kan også bruge en progressbar, se. f.eks. http://www.eksperten.dk/spm/270652
Avatar billede fqthjoe Nybegynder
17. oktober 2002 - 08:59 #2
Ok. Virker næsten perfekt for mig.. Men billedet når ikke at loade helt ind inden min "kommando" udføres. Det er kun "rammen" for pictureboksen der når vise sig, ikke mit billede. Kan man "forsinke" min "søgning" med f.eks. et par sek. så billedet når at vise sig..
Jo, referencen med progressbaren er ok, men synes ikke jeg kan få den til at passe med selve søgningen. Og prg. skal køres på flere pc'ere. Derfor ville det være kanont at få "billede-løsningen" til at virke :-)
Avatar billede martin_moth Mester
17. oktober 2002 - 09:43 #3
Hmmm - billedet kan ikke nå at loade inden søgningen er færdig? Du loader jo billedet allerede ved programstart, og derefter skifter du bare mellem visible = true/false. Og det burde ingen tid tage, så jeg forstår ikke helt hvad der sker...?

Men jo, du kan sætte en pause ind ved at bruge timeren. Smid en timer på din form, og brug følgende (der laver ventetid på 2 sek - det kan du bare ændre...)

Ved programstart (Altså under Form_Load)
  varCountDown = 0 '<-- NY
  Timer1.Interval = 1000 ' 1000 millisekunder = 1 sek <-- NY
  Timer1.Enabled = False '<-- NY
  Picture1.Picture = LoadPicture("C:\test.jpg")
  Picture1.visible=false

Ved filsøgningsstart
  Screen.MousePointer = vbHourglass
  Picture1.visible=true
  Timer1.Enabled = True '<-- NY
  If varCountDown = 2 Then '2 => Ventetid 2 sek '<-- NY
    varCountDown = 0 '<-- NY
    Timer1.Enabled = False '<-- NY
  End If
  '... Og så gør du det du nu vil med dine filer og din listbox

Ved slut filsøgning
  Screen.MousePointer = vbDefault 
  Picture1.visible=false
Avatar billede martin_moth Mester
17. oktober 2002 - 10:48 #4
PS: Ret linien
If varCountDown = 2 Then '2 => Ventetid 2 sek '<-- NY
til
If varCountDown >= 2 Then '2 => Ventetid 2 sek '<-- NY
Avatar billede martin_moth Mester
17. oktober 2002 - 11:11 #5
Pladder - det virker jo ikke det jeg skriver. Du får lige et nyt svar om 2 sek...
Avatar billede fqthjoe Nybegynder
17. oktober 2002 - 11:52 #6
Lidt mere forklaring..eller uddybende.. Jeg loader ikke billedet ved programstart, men når jeg klikker på min knap loades billedet herefter søgningen.. Hvis jeg loader billedet ved programstart kan jeg ikke klikke på min commandoknap og udføre søgningen. Men måske skal jeg loade det hele i Form_Load istedet... ?
Avatar billede martin_moth Mester
17. oktober 2002 - 12:11 #7
Sidste gang - nu skulle det virke! Drop det med timeren og løsningen jeg gav kl 9:43:39 & 10:48:08, og brug følgende i stedet for:

Ved programstart (Altså under Form_Load)
  Picture1.Picture = LoadPicture("C:\test.jpg")
  Picture1.visible=false

Ved filsøgningsstart
  Screen.MousePointer = vbHourglass
  Picture1.visible=true

'Så venter vi i 2 sek.........
  Starttid = Now   
  Do               
    varCountDown = DateDiff("s", Starttid, Now)     
  Loop Until varCountDown >= 2 'dvs. vent 2 sekunder
'Så er der gået 2 sek.........

  '... Og så gør du det du nu vil med dine filer og din listbox

Ved slut filsøgning
  Screen.MousePointer = vbDefault 
  Picture1.visible=false
Avatar billede martin_moth Mester
17. oktober 2002 - 12:14 #8
Og ja, du skal IKKE loade billedet når du klikker på din kommandoknap. Hele ideen med min løsning er, at billedet bliver loadet een gang for alle under programstart (Form_load), og derefter bare tændes/slukkes (enabled = true/false)...

Jeg er forvirret over din uddybende forklaring, for du skelner åbenbart mellem programstart og form_load-eventen. For mig er det det samme... Men bare du loader billedet under form_load, så virker det :o)
Avatar billede fqthjoe Nybegynder
17. oktober 2002 - 16:28 #9
Ok. Forstår godt ideen nu:-)
Men kan desværre ikke få det til at virker. Hvis du gider se på det smider jeg lige lidt af kode :
Private Sub Command1_Click()
  Screen.MousePointer = vbHourglass
  Picture1.Visible = True
'Så venter vi i 2 sek.........
  Starttid = Now
  Do
    varCountDown = DateDiff("s", Starttid, Now)
  Loop Until varCountDown >= 5 'dvs. vent 2 sekunder
'Så er der gået 2 sek.........
 
  Jpegs = GetAllFiles("C:\PROGRAMMER", "*.jpg", True).Count
    Screen.MousePointer = vbDefault
  Picture1.Visible = False
End Sub
Private Sub Form_Load()
  Picture1.Picture = LoadPicture("C:\vbkode\kabler.jpg")
  Picture1.Visible = False
End Sub

Kan du se om jeg gør noget forkert ?. Hvis du altså gider bixe med det mere :-)
Avatar billede martin_moth Mester
17. oktober 2002 - 19:11 #10
Hvad er det præcis der ikke virker?
Om der er fejl i linien Jpegs = GetAllFiles("C:\PROGRAMMER", "*.jpg", True).Count må du bedst selv vide...
Avatar billede picard Nybegynder
17. oktober 2002 - 21:59 #11
Hey
Prøv lige at kaste et doevents in inden du udføre "kommandoen".
Det skulle gerne opfriske din form og dermed vise billedet.
...
  Screen.MousePointer = vbHourglass
  Picture1.Visible = True
  DoEvents
...

mvh.
Christian
Avatar billede martin_moth Mester
19. oktober 2002 - 14:20 #12
Er du stadig med, fqthjoe?
Avatar billede fqthjoe Nybegynder
21. oktober 2002 - 20:15 #13
Hej Martin..
Jeps så er jeg her igen.. Tiden rendte fra mig.. Men..men nu virker alt perfekt.. Satte en DoEvnts ind som Picard foreslog.. Så koden vedr. mit spørgsmål endte sådan her:
Screen.MousePointer = vbHourglass
  Picture1.Visible = True
  Starttid = Now
  Do
  DoEvents
    varCountDown = DateDiff("s", Starttid, Now)
  Loop Until varCountDown >= 2 'dvs. vent 2 sekunder
'Så er der gået 2 sek.........
    Jpegs = GetAllFiles("C:\PROGRAMMER", "*.jpg", True).Count
    Label1 = List1.ListCount
    Screen.MousePointer = vbDefault
  Picture1.Visible = False

Kanon det virker :-)))) Danke Danke...
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

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Cyberdivisionen søger Business Relationship Manager

Politiets Efterretningstjeneste

Fullstack softwareudvikler i PET

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Cyberdivisionen søger Entreprise Arkitekt