Newsgroup: it.comp.lang.visual-basic
Titolo: forzare il beep

come si fa a forzare il vb a non fare il beep?
la circostanza è questa:
in un textbox_keypress c'è il seguente codice:
Private Sub txtModifica_KeyPress(KeyAscii As Integer)
 If KeyAscii = 13 Then 'enter
   cmdModifcaOk_Click  'come se avessi premuto il bottone premendo enter
 Else
   If KeyAscii <> 8 And (KeyAscii < 48 Or KeyAscii > 57) Then KeyAscii =
0
   'voglio solo numeri e delete
 End If
End Sub
il tutto funziona solo che subito dopo la exit sub il computer fa un
beep
è probabile che sia perchè cmdModifcaOk_Click  disabilita o fa sparire
txtModifica.
come faccio a disabilitare anche il beep?

 ha scritto nel messaggio
news:3BE53A11...@hotmail.com...

metti KeyAscii = 0 prima dell'Else.
ma non facevi prima a impostare cmdModifcaOk.Default = True ?
Ciao
Faber

> [...] come si fa a forzare il vb a non fare il beep?
Il Beep è dovuto al fatto che è stato premuto un vbKeyReturn dentro una
TextBox che ha la proprietà Multiline settata a False. Non potendo
esplicitare il vbKeyReturn nella TextBox, il VB ti vuole suggerire che è
stato premuto un tasto "inadatto".
Non sarebbe più semplice filtrare solo i tasti che ti servono (a proposito,
ti suggerisco di usare le costanti vbKeyBack, VbKey1, vbKey9, eccetera... al
posto dei più criptici 8, 45, 57 e compagnia; è una questione di miglior
leggibilità del codice) ed evitare di attivare l'evento Click del pulsante
cmdModifica da codice ma impostandone la proprietà "Default = True"?
Ciao,
Carlo.

grazie
non avevo messo default=true perchč in realta ho diversi bottoni che dovrebbero
essere 'di default'
ma sto pensando che potrei impostare default=true al bottone giusto  a secondo
del textbox in cui sono, anche se in realta la situazione č piů complessa di
quanto abbia descritto
comunque non c'č modo di non fare suonare il beep?

 comunque non c'č modo di non fare suonare il beep?
Sě, come ti dicevo, il Beep č causato dal fatto che viene premuto il tasto
ENTER (vbKeyReturn) in una routine KeyPress riferita ad una TextBox con
Multiline = False. Basta mettere KeyAscii = 0 come ha suggerito
correttamente Faber.
Ciao,
Carlo.

si avevo capito perfettamente ed è un modo intelligente di risolvere il
problema.
ma per pura curiosità volevo sapere se si puo dire al vb 'anche se dovresti ,
non fare il beep per favore'
cioè volevo sapere al di la di questo problema ormai risolto se si può
disabilitare il beep causato da un qualsiasi evento possibile
è solo sete di sapere
ciao Valerio

 [...] per pura curiositą volevo sapere se si puo dire al vb 'anche se
dovresti, non fare il beep per favore' [...]
Ah, qui passo... Non lo so!
Ciao,
Carlo.

Ah, qui passo...
E' un' impostazione a livello di sistema, non credo sia opportuno
cambiarla poiche' tale decisione imho va lasciata soltanto all' utente.
Per curiosita', si puo' giocare con il codice sotto la firma.
-- 
ciao, hal
------------------- inizio codice ------------
ption Explicit
Private Const SPI_GETBEEP = 1
Private Const SPI_SETBEEP = 2
Private Const SPIF_SENDWININICHANGE = &H2
Private Const SPIF_UPDATEINIFILE = &H1
Private Declare Function SystemParametersInfo Lib "user32" _
                            Alias "SystemParametersInfoA" ( _
                    ByVal uAction As Long, _
                    ByVal uParam As Long, ByRef lpvParam As Any, _
                    ByVal fuWinIni As Long _
                    ) As Long
' %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Public Function vbSetBeep(ByVal a_BeepOn As Boolean) As Boolean
    vbSetBeep = CBool( _
                    SystemParametersInfo(SPI_SETBEEP, Abs(CLng(a_BeepOn)), _
                            ByVal 0&, _
                            SPIF_UPDATEINIFILE Or SPIF_SENDWININICHANGE) _
                            )
End Function '// vbSetBeep
Public Function vbGetBeep() As Boolean
    Dim beep_val As Long
    If SystemParametersInfo(SPI_GETBEEP, 0&, _
                            beep_val, _
                            0&) Then
        vbGetBeep = CBool(beep_val)
    End If
End Function    '// vbGetBeep
------------------- fine codice -------------------------