Toon posts:

[vb6] splashscreen tijdens bewerking

Pagina: 1
Acties:

Verwijderd

Topicstarter
Besten,

Ik ben een programma aan het schrijven dat data uit een access database haalt.
Dit vergt even tijd voor het programma, en om de gebruiker ervan op de hoogte te brengen (zodat deze niet denkt dat het programma crasht), zou ik tijdens deze bewerking een splash screen willen laten zien (met bv: Please wait ...).

Als splash screen gebruik ik een 2e form, en deze laad ik als het programma start. (Load frmSplash)
Als dan de data wordt opgevraagd, laat ik het splash screen zien (frmSplash.show (vbmodal))
Maar als ik dat doe, doet het programma niet meer verder |:(

Moet ik de bewerking dan in frmSplash laten uitvoeren? Maar hoe kan ik het programma dan op zen originele plaats laten verder gaan?

  • ThunderNet
  • Registratie: Juni 2004
  • Nu online

ThunderNet

Flits!

Zou je een stukje code kunnen plaatsen van hoe jij dat gedaan hebt?
Ikzelf heb ook een soort van please wait scherm gemaakt, bij het verbinden naar bepaalde hardware

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Public Sub connect(Address As Integer, port As Integer)
mAddress = Address
frmConnecting.Show

Dim h As Long
frmConnecting.Label1 = "Connecting to device at address: " & Str(Address)
h = OpenDevice(Address)

DoEvents

    Select Case h
        Case 0, 1, 2, 3
            frmConnecting.Label1 = "Connected to device at address: " & Str(h)
            Connected = True
            DoEvents
        Case -1
            frmConnecting.Label1 = "Connection failed to device at address: " & Str(h)
            Connected = False
            DoEvents
    End Select

DoEvents
Monitored = port
Unload frmConnecting

If Connected = True Then
Load frmMain
frmMain.Label1 = "Card Address: " & mAddress
frmMain.Label2 = "Monitored port: " & port

frmMain.Show

Else
  frmConnect.Show
End If

End Sub


wat er dus gebeurd, is dat hij frmConnecting laat zien, in het begin van de sub
en hij hide deze weer, als de verbinding is gemaakt, (of is mislukt)

p.s. in frmConnecting, zit dus geen enkele regel code

[ Voor 6% gewijzigd door ThunderNet op 29-12-2004 00:54 ]

Heb je liever vooraf, of achteraf, dat ik zeg dat ik geen flauw idee heb wat ik doe?


  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 11:03

sopsop

[v] [;,,;] [v]

Het probleem zit 'm in de show vbmodal. Dat schakelt het achterliggende form (zo ongeveer) uit, Wil je een splashscreen maken, gebruik dan .show vbModeless
Om een always-on-top schermpje te krijgen kun je de volgende code gebruiken:

In een module zet je hetvolgende:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, y, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Const HWND_TOPMOST = -1
Private Const HWND_NOTOPMOST = -2
Private Const SWP_NOMOVE = &H2
Private Const SWP_NOSIZE = &H1
Private Const TOPMOST_FLAGS = SWP_NOMOVE Or SWP_NOSIZE

Public Sub MakeNormal(hwnd As Long)
    SetWindowPos hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, TOPMOST_FLAGS
End Sub
Public Sub MakeTopMost(hwnd As Long)
    SetWindowPos hwnd, HWND_TOPMOST, 0, 0, 0, 0, TOPMOST_FLAGS
End Sub

Je aanroep van je Form wordt dan:
Visual Basic:
1
2
form1.show vbModeless
Call MakeTopMost(form1.hWnd)

Verwijderd

Je moet gewoon frmSplash.show zonder vbModal gebruiken (de default waarde is vbmodelless), het programma loopt gewoon verder als frmSplash op het scherm staat.