Why I can see the picture only after the playsound1 play the sounds?
If you look at your code then you can see that there are a couple of statements following each other one by one.
The problem however is that loading a picture will load the picture from disk, store the graphics data into memory, prepare the graphics to finally send a request to the GUI to update the control that displays the picture for you. This GUI update can happen only after the update request is received and being handled, but since your code is still running it will 'block' this request.
Is it not possible to see the picture and then hear the sound?
Yes. Make a call to
application.processmessages directly after loading the picture and before playing the sound. With this call you do an explicit request to handle the (pending) messages, which would include the request to update your graphics control.
No need to complicate things with using a timer, although the effect is the same: you offer your application time to handle the update message so that the GUI has time to be able to update its graphics.