Timer?

Status
Niet open voor verdere reacties.

Systemizer X100

Terugkerende gebruiker
Lid geworden
24 mei 2003
Berichten
1.636
Hallo,

ik had even een vraagje. Is het mogelijk een soort van timer toe te passen in een form, om zo een soort van splash screen te maken? Ik heb de application wizard al uitgeprobeerd maar daarbij zie je de splashscreen niet eens.
 
Wat je hiervoor nodig hebt:

1) Een module.

2) Eén Form, dit is het hoofdform waar al je werkelijke
codes hier moeten gaan bevatten. Maar omdat het hier
slechts ter voorbeeld dient, is dit hoofdform helemaal
nog leeg. Als je straks het programma runt, dan
verschijnt er eerst het splashcreen en na enkele
seconden verdwijnt het weer, waarna het hoofdscherm
verschijnt maar verder niets doet.

3) Eén Form, het SplashScreen Form zelf(waar het om
gaat eigenlijk) met daarin een label en een timer. Het
label bevat de simpele tekst "Dit is een SplashScreen"

Daar gaan we:

a) Module: (onderstaande zit in de sectie: General Main
en niet bij General Declarations;je kunt hier trouwens
ook Options Explicit invoeren)
Je copieert onderstaande code gewoon in een module
en komt alles wel vanzelf goed)

Code:
Private Sub Main()
   'Hier wordt het splashcreen als eerste geladen en
   ' tevens getoond, omdat bij Project/Properties
   '/Tabblad General bij "Startup Object", '"Sub Main" 
   'staat geselecteerd.

   SplashScreen.Show
  
   'Hier wordt het HoofdForm alleen geladen, dus (nog) 
   'niet getoond.

   Load HoofdScherm
  
   'Op dit punt beland, krijg je eventueel de kans wat 
   'zaken te initialiseren. In elk geval wat operaties te 
   'laten verrichten.
   'Dit hoeft natuurlijk niet per sé, het is maar wat je wilt.

   Do
      DoEvents
   Loop Until SplahScreen.ReadyToClose
  
  'Hier is de tijd voor het zichtbaar zijn v.h. 
  'splashscreen   'Form reeds verstreken en zal ook v.h. 
  'scherm moeten verdwijnen om   'plaats te maken voor 
  'het hoofdscherm.     

  HoofdScherm.Show
  Unload SplashScreen
  Set SplashScreen = Nothing
End Sub

b) HoofdForm
Zoals eerder gezegd, is dit form leeg. Ik weet immers
niet wat je wilt gaan programmeren. Maar zo'n lege
Form is voorlopig niet zo erg, het is maar om even te
kunnen testen of dit scherm ook getoond wordt nadat
het splashscreen verdwenen is.

c) Het SplashScreen Form

Op dit Form plaats je een label met bijvoorbeeld de
tekst "Dit is een SplashScreen" en een Timer met de
naam "tmrSplash".

Als laatste neem je code van het SplashScreen Form
hieronder over:

Bij General_Declarations:

Code:
Private Timer_Afsluiten As Boolean
'Duurte v.d. Timer(Hoe lang het SplashScreen zichtbaar 
blijft)
Private Const Duurte As Single = 3#

Bij Form_KeyDown:

Code:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
   'Als op de ESC-toets wordt gedrukt.
   If KeyCode = vbKeyEscape Then
      ReadyToClose = True
      tmrDuurte.Enabled = False
      Me.Hide
   End If
End Sub

Bij Form_Load

Code:
Private Sub Form_Load()
   On Error Resume Next
  
   'Timer instellen
   ReadyToClose = False
   tmrSplash.Interval = Duurte * 1000
   tmrSplash.Enabled = True
  
   Me.KeyPreview = True
   Me.MousePointer = vbHourglass
   Me.Show
   DoEvents
End Sub

Bij tmrSplash_Timer

Code:
Private Sub tmrSplash_Timer()
  On Error Resume Next
  
  tmrSplash.Enabled = False
  ReadyToClose = True
End Sub

En verder bij de Get en Let: (hoop, dat je ook weet hoe
je bij die Events kunt komen. Maar ik denk van wel, je
bent best al ver met VB)

Code:
Public Property Get ReadyToClose() As Boolean
   ReadyToClose = Timer_Afsluiten
End Property

Code:
Private Property Let ReadyToClose(ByVal Flag As Boolean)
   Timer_Afsluiten = Flag
End Property

Al met al zou het eigenlijk nog simpeler kunnen, lijkt mij.
Oefen anders maar ff.

Dennis.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan