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

testo a capo in una casella di testo

176 views
Skip to first unread message

Giuseppe Cardascia

unread,
May 25, 2023, 11:03:24 AM5/25/23
to
Buonasera a tutti.
All'ultima casella di testo di una form ho il seguente codice:
Private Sub txtDescrizioneRicevuta_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyTab And (Shift And acShiftMask) > 0 Then
Me.txtDataPagamento.SetFocus ' sposto il focus al controllo precedente
ElseIf KeyCode = vbKeyReturn And (Shift And acShiftMask) > 0 Then
' Maiuscolo + Invio premuti
Me.txtDescrizioneRicevuta.Text = Me.txtDescrizioneRicevuta.Text & vbCrLf ' Aggiungi un nuovo paragrafo
KeyCode = 0 ' Imposta il valore del codice del tasto a 0 per evitare l'invio del carattere
Exit Sub
ElseIf KeyCode = 9 Or KeyCode = 13 Then
Me.cmdSalva.SetFocus ' sposto il focus sul controllo del piè di pagina maschera
End If
End Sub

Quando si verifica il secondo evento, il cursore anzichè posizionarsi all'inizio del nuovo rigo si posiziona all'inizio del rigo in cui ho pigiato Maiuscola+Invio.
Come modificare il codice?
Grazie
Giuseppe

Giorgio Rancati

unread,
May 31, 2023, 4:03:49 AM5/31/23
to
puoi andare a capo nel nuovo rigo senza utilizzare codice VBA premendo Ctrl+Enter

Ciao
Giorgio Rancati

Giuseppe Cardascia

unread,
Jun 19, 2023, 6:08:00 AM6/19/23
to
Ciao Giorgio grazie per il tuo intervento e scusa per la tardiva risposta.
Avendo messo
If ....
ElseIf KeyCode = 9 Or KeyCode = 13 Then
Me.cmdSalva.SetFocus ' sposto il focus sul controllo del piè di pagina maschera
End If
se premo contemporaneamente Ctrl+Enter, il focus si sposta sul pulsante cmdSalva.
Ho provato a mettere
ElseIf KeyCode = vbKeyControl And KeyCode = 13 Then ........
ma va sempre sul pulsante cmdSalva.


Giorgio Rancati

unread,
Jun 20, 2023, 2:28:54 AM6/20/23
to
sì, infatti ho scritto "senza utilizzare codice VBA" ,se togli tutto il codice dovrebbe andare come ti aspetti perchè shift+tab sposta il fuoco sul controllo precedente ctrl+enter crea un nuovo rigo nella casella testo e enter o tab spostano il fuoco sul controllo successivo che da quel che ho letto dovrebbe essere cmdsalva.

se vuoi utilizzare il codice allora puoi modificarlo così:

Private Sub txtDescrizioneRicevuta_KeyDown(KeyCode As Integer, Shift As Integer)

If KeyCode = vbKeyTab And (Shift And acShiftMask) > 0 Then
Me.txtDataPagamento.SetFocus ' sposto il focus al controllo precedente
ElseIf KeyCode = 9 Or (KeyCode = 13 And vbKeyControl = 0) Then
Me.cmdSalva.SetFocus ' sposto il focus sul controllo del piè di pagina maschera
End If

End Sub

Ciao
Giorgio Rancati

Giuseppe Cardascia

unread,
Jun 21, 2023, 3:34:02 AM6/21/23
to
Buongiorno.
Giorgio grazie ancora, ma con questo codice, sposto il focus al controllo precedente o a quello situato nel piè di pagina maschera, ma non ho la possibilità di andare a capo nel controllo stesso pigiando Maiusc+Invio o Alt+Invio o Ctrl+Invio.
Se non c'è soluzione, l'alternativa è quella di invertire la posizione con il controllo txtDataPagamento e togliere il codice su keydown.
Giuseppe

Giorgio Rancati

unread,
Jun 21, 2023, 5:37:40 AM6/21/23
to
Ciao Giuseppe,
non so che dire, prima di postare il codice l'ho provato e a me funziona perfettamente, ctrl+enter è una combinazione di tasti che in Access genera una nuova riga nelle caselle testo o nei campi di una tabella o query, probabilmente hai del codice in giro che ti consuma questa combinazione di tasti.

Ciao
Giorgio Rancati

Giuseppe Cardascia

unread,
Jun 21, 2023, 12:50:04 PM6/21/23
to
Girogio farò dei tentativi con solo codice sui controlli interessati e cercherò di capire se c'è del codice che come dici tu mi consuma prima la combinazione dei tasti.
Ciao.
Giuseppe
0 new messages