Toon posts:

[Access] spelen geluid -> focus kwijt

Pagina: 1
Acties:
  • 162 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Als ik een geluid automatisch laat afspelen in een formulier van Access (bijv bij het openen van het formulier) dan raakt die formulier zijn focus kwijt totdat het geluid klaar is. Ik kan wel op die formulier klikken terwijl het geluid nog speelt, maar is toch een beetje onhandig.

Het is een wav bestandje dat ingevoegd is als een object en in VB aanroep met activate. Het speelt niet met een externe player af.

Heb een beetje zitten te proberen met die focus acties, maar is nog niet echt gelukt. Ook al geef ik meteen na het afspelen van het geluid de opdracht dat een object op die formulier het focus moet krijgen, dan krijgt die object pas het focus als het geluid afgelopen is.

Heb het hier neer gezet, omdat het niet echt een standaard functionaliteit van Access is.

Verwijderd

Topicstarter
OK, niemand gebruikt dus geluidjes in Access. Ik kan het jullie ook niet kwalijk nemen hoor. :)

Ik heb er nu omheen gewerkt door bij het openen van een formulier in VB het geluidje aan te roepen, daarna die formulier te sluiten en meteen daarna de andere formulier (waarvoor die geluid eigenlijk bedoeld is) te openen. Die andere formulier wordt dus geopend terwijl het geluid nog speelt maar het formulier houdt nu wel de hele tijd de focus.

Maarja, dit is niet echt netjes en ik wil eigenlijk in veel verschillende formulieren geluiden gebruiken, en ook niet alleen bij het opstarten. Dus heeft iemand een nettere oplossing voor het niet verliezen van het focus?

Trouwens, weet iemand hoe je een wav object kunt gebruiken, die dus extern gelinkt staat en niet in het formulier wordt opgenomen? Is efficienter als dezelfde geluidjes steeds moeten worden gebruikt.

  • AceRimmer
  • Registratie: Maart 2001
  • Laatst online: 09-09 18:02

AceRimmer

What a guy...

De wav als object invoegen is idd niet de mooiste optie, je kunt beter van de API call gebruikmaken:

Zet het volgende in een module
code:
1
2
Declare Function apisndPlaySound Lib "winmm" Alias "sndPlaySoundA" _
    (ByVal filename As String, ByVal snd_async As Long) As Long

En roep de functie vervolgens aan waar je het geluid wilt afspelen met
code:
1
apisndPlaySound(sWavFile, 1)

waarbij sWavFile de .wav file is. Die 1 geeft aan dat tijdens het afspelen de rest van de code verwerkt moet worden en niet wachten tot het geluid klaar is.

Smoke me a kipper, I'll be back for breakfast


Verwijderd

Topicstarter
Ik heb meteen jouw manier uitgeprobeerd, AceRimmer. Maar kreeg steeds verschillende (syntax)foutmeldingen. Heb een hoop zitten klooien met de filename, maar het hielp niet. Dan vond ik een soortgelijke manier, alleen met een iets andere functie. Die deed het wel, maar daar wachte access ook totdat het geluid klaar was.

Heb toen de twee verschillende manieren van aanroepen vergeleken, en heb toen bij jouw manier van aanroepen verandert door de haakjes weg te laten. Dus zo:

apisndPlaySound "filename", 1

Nu doet ie het wel, maar dit was je ff vregeten of ligt dat aan de taal/toetsenbord instellingen? Gebruik trouwens acces 97, misschien dat?

Naja, hij doet het nu goed in ieder geval. Thanks.