Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Messaggio acustico

34 views
Skip to first unread message

Stefano Schifano

unread,
Jun 20, 2023, 4:55:00 AM6/20/23
to
Buongiorno, devo fare in modo che aprendo una maschera, mi venga detto cosa fare. Per questo, ho inserito in un modulo la funzione vox

Public Function Speak(msg As String)
Dim Vox As Object
Set Vox = CreateObject("SAPI.SpVoice")
Vox.Speak msg
End Function

sulla form, nell'evento su caricamento ho messo il seguente codice:
Me.LOC_NASCITA = "000"
Me.Cit_nascita = Mid(Forms!home!tessera, 12, 4)
Me.data_nasc = Mid(Me.codice_fiscale.Caption, 10, 2) & "/" & mese_nascita & "/" & Mid(Me.codice_fiscale.Caption, 7, 2)

If giorno < 40 Then
Me.sesso.Caption = "M"
Me.sesso_c = "M"
Else
Me.sesso.Caption = "F"
Me.sesso_c = "F"
End If

Me.attivo = True

messaggio = "Prego, inserite i vostri dati anagrafici"
Speak (messaggio)

quando però si apre la form, prima esegue Speak (messaggio) e poi tutto il resto. Ho provato a mettere un ciclo for next per ritardare il comando, ma non è servito.
Come posso fare per eseguire il comando dopo che ha eseguito le istruzioni precedenti?

Grazie

BFS

unread,
Jun 20, 2023, 5:16:24 AM6/20/23
to
il codice viene eseguito riga per riga quindi è impossibile che quel
speak venga eseguito prima delle righe che stanno sopra.

forse vuoi vedere la maschera compilata e dopo un tot far partire il
messaggio

in questo caso potresti impostare un timer interval di 2000 sulla maschera

e sull'evento Form_Timer

Private Sub Form_Timer()
dim messaggio as string
me.timerinterval=0
messaggio = "Prego, inserite i vostri dati anagrafici"
Speak (messaggio)
end sub

altrimenti spiega meglio cosa vorresti fare

BFS


Stefano Schifano

unread,
Jun 20, 2023, 6:37:29 AM6/20/23
to
Ho visto che se lo utilizzo su una maschera già aperta, mi basta mettere un me.repaint per fare in modo che il testo venga detto dopo aver inserito il dato.
Dalla maschera principale, tramite un bottone, apro una seconda maschera e qui, mi rimane il cerchio che gira, mi dice il messaggio vocale (anche se è inserito alla fine delle istruzioni) e poi mi apre la maschera mostrando i vari campi.
Ho provato con il timeinterval=5000 ma non è servito a niente.

BFS

unread,
Jun 20, 2023, 8:07:31 AM6/20/23
to
avendo messo il tuo codice sul evento "caricamento" ovvio che viene
eseguito prima che tu veda la maschera a video



BFS

Stefano Schifano

unread,
Jun 20, 2023, 10:58:35 AM6/20/23
to
Ok, allora come posso fare?
L'ho tolto dal caricamento maschera e l'ho messo su attivato nel primo campo del form da aprire, ma mi da sempre lo stesso risultato.
Come faccio perchè venga eseguito dopo l'apertura della maschera?
Grazie

BFS

unread,
Jun 20, 2023, 11:08:55 AM6/20/23
to
metti il timer interval a 3000, 3 secondi ad esempio

metti tutto il tuo codice nel

Private Sub Form_Timer()
me.timerinterval=0
.....

la maschera verrà caricata a video e dopo 3 secondi parte il tuo codice

BFS

Stefano Schifano

unread,
Jun 20, 2023, 11:44:35 AM6/20/23
to
Sei un genio, grazie mille. Funziona che è una meraviglia.
grazie
0 new messages