Hai risolto trovando una scappatoia, cioè non caricando il layout.
Non è possibile fare:
If TTS1.isReady then .... ?
Sarebbe stato più semplice .. o no ?
perché il comando non è sincrono, non ti da il risultato immediatamente.
Cmq vedo che tu hai fatto qualche controllo :
If SubExists(mCallBack, mEventName & "_Ready") Then
CallSubDelayed2(mCallBack, mEventName & "_Ready", Success)
End If
Questa routine è un tipico modo per implementare un evento in una tua classe.
Ad esempio, quando scrivi:
Sub Button1_Click
questa è una routine che gestisce un evento.
Io potrei creare una classe che chiami quel Button1_Click (in genere chiamerà un evento inventato da te che non riguarderà l'interfaccia grafica) e in quell'esempio la routine chiamata è _Ready (potevo pure chiamarla Pippo).
Un comando tipo questo:
mTTS.Initialize (Me,"TTS")
Mi fa pensare anche a qualcosa di simile ad una libreria ...
Come ti dicevo, mTTS non è un nome appropriato, meglio objTTS, che ti fa subito capire che si tratta di un oggetto.
Comunque, una libreria è una (o più classi); infatti, se tu crei un progetto B4A, ad esempio con la sola Main e una tua classe, poi puoi compilare il progetto come libreria e le funzionalità delle tua classe (le routine ma anche le proprietà) saranno disponibili tramite la libreria creata.
PS: Consiglio di mettere in svariate parti dell'app
il comando :
log("Scrivere quello che deve fare l'app")
in modo da capire cosa sta facendo il programma e dove eventualmente si blocca.
Una msgbox o un toastmessageshow non funzionerebbero!
Già, verissimo. Infatti ho pubblicato una mia utility che non molte persone hanno scaricato (incompetenti
),
AddLogs (guarda la mia signature-firma)