Newsgroup: it.comp.appl.access
Titolo: testo a capo in una casella di testo

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


puoi andare a capo nel nuovo rigo senza utilizzare codice VBA premendo Ctrl+Enter
 
Ciao
Giorgio Rancati


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.
 
 


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


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


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


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