Differenze tra le versioni di "Utilizzare il tasto Tab della tastiera per spostare il cursore del mouse fra le celle di una TableView"
Riga 1: | Riga 1: | ||
− | Mostriamo due esempi che consentono di muoversi fra le celle di una ''TableView'' anche utilizzando il tasto ''Tab'' oltre al tasto invio e ai tasti freccia. Viene mostrato, altresì, un terzo esempio in cui si consentirà l'uso del solo tasto 'Tab'' per ottenere il salto di cella. | + | Mostriamo due esempi che consentono di muoversi fra le celle di una ''TableView'' anche utilizzando il tasto ''Tab'' oltre al tasto invio e ai tasti freccia. Viene mostrato, altresì, un terzo esempio in cui si consentirà l'uso del solo tasto ''Tab'' per ottenere il salto di cella. |
E' necessario attivare i Componenti ''gb.desktop'' e ''gb.desktop.x11'' . | E' necessario attivare i Componenti ''gb.desktop'' e ''gb.desktop.x11'' . |
Versione delle 14:17, 11 ott 2016
Mostriamo due esempi che consentono di muoversi fra le celle di una TableView anche utilizzando il tasto Tab oltre al tasto invio e ai tasti freccia. Viene mostrato, altresì, un terzo esempio in cui si consentirà l'uso del solo tasto Tab per ottenere il salto di cella.
E' necessario attivare i Componenti gb.desktop e gb.desktop.x11 .
1° esempio [ Nota 1 ]
Public Sub _new() Dim hObs As Observer ' Per anticipare l'evento prima che venga lanciato. hObs = New Observer(Me) As "TableView" End Public Sub Form_Open() TableView1.Width = 550 ' dichiara la larghezza dell'intera TableView TableView1.Columns.Count = 5 ' dichiara il numero di colonne TableView1.Rows.Count = 20 ' dichiara il numero di righe TableView1.Columns[0].Width = 100 ' dichiara la larghezza della colonna ID TableView1.Columns[1].Width = 100 ' dichiara la larghezza della colonna Luogo TableView1.Columns[2].Width = 100 ' dichiara la larghezza della colonna GRP TableView1.Columns[3].Width = 100 ' dichiara la larghezza della colonna stato TableView1.Columns[4].Alignment = Align.Center ' centra i pulsanti TableView1.Rows.Height = 30 ' dichiara l'altezza della riga TableView1.name = "PROVA" TableView1.Header = 3 ' ATTIVA L'INTESTAZIONE DELLE COLONNE TableView1.Font.Size = 11 TableView1.Columns[0].Alignment = 3 ' Allineamento centrato TableView1.Columns[1].Alignment = 3 ' Allineamento centrato TableView1.Columns[2].Alignment = 3 ' Allineamento centrato TableView1.Columns[3].Alignment = 3 ' Allineamento centrato End Public Sub TableView1_Click() ' Evento non osservato TableView1.Edit End Public Sub TableView1_Save(Row As Integer, Column As Integer, Value As String) ' Serve per salvare il testo scritto all'interno delle celle. TableView1[row, column].text = value End Public Sub TableView_KeyPress() ' Evento osservato ' Serve per spostarsi con tasto Tab: If Key.Code = Key.Tab Stop Event ' Lo "Stop Event" consente alla successiva linea Desktop.SendKeys("\n") di funzionare. Desktop.SendKeys("\n") Endif End
2° esempio [ Nota 2 ]
Questo secondo esempio è una leggera variante del codice precedente, e suppone che oltre alla TableView sia presente sul Form almeno un altro oggetto (ad esmpio un BUutton).
Public Sub Form_Open() TableView1.Width = 550 TableView1.Columns.Count = 5 TableView1.Rows.Count = 5 TableView1.Columns[0].Width = 100 TableView1.Columns[1].Width = 100 TableView1.Columns[2].Width = 100 TableView1.Columns[3].Width = 100 TableView1.Columns[4].Alignment = Align.Center TableView1.Rows.Height = 30 TableView1.name = "PROVA" TableView1.Header = 3 TableView1.Font.Size = 11 TableView1.Columns[0].Alignment = 3 TableView1.Columns[1].Alignment = 3 TableView1.Columns[2].Alignment = 3 TableView1.Columns[3].Alignment = 3 End Public Sub TableView1_Click() EditaTableView() End Public Sub TableView1_Save(Row As Integer, Column As Integer, Value As String) TableView1[row, column].text = value End Public Sub TableView1_KeyRelease() ' Serve per spostarsi con tasto Tab: If Key.Code = Key.Tab Desktop.SendKeys("\n") EditaTableView() Endif End Private Procedure EditaTableView() TableView1.Edit End Public Sub Button1_GotFocus() TableView1.SetFocus End
In questo terzo esempio [ Nota 3 ], invece, si impedisce che anche i tasti e freccia possano sollevare l'evento prescelto per il solo tasto Tab.
Public Sub _new() Dim hObs As Observer ' Per anticipare l'evento prima che venga lanciato. hObs = New Observer(Me) As "TableView" End Public Sub Form_Open() TableView1.Width = 550 ' dichiara la larghezza dell'intera TableView TableView1.Columns.Count = 5 ' dichiara il numero di colonne TableView1.Rows.Count = 20 ' dichiara il numero di righe TableView1.Columns[0].Width = 100 ' dichiara la larghezza della colonna ID TableView1.Columns[1].Width = 100 ' dichiara la larghezza della colonna Luogo TableView1.Columns[2].Width = 100 ' dichiara la larghezza della colonna GRP TableView1.Columns[3].Width = 100 ' dichiara la larghezza della colonna stato TableView1.Columns[4].Alignment = Align.Center ' centra i pulsanti TableView1.Rows.Height = 30 ' dichiara l'altezza della riga TableView1.name = "PROVA" TableView1.Header = 3 ' ATTIVA L'INTESTAZIONE DELLE COLONNE TableView1.Font.Size = 11 TableView1.Columns[0].Alignment = 3 ' Allineamento centrato TableView1.Columns[1].Alignment = 3 ' Allineamento centrato TableView1.Columns[2].Alignment = 3 ' Allineamento centrato TableView1.Columns[3].Alignment = 3 ' Allineamento centrato End Public Sub TableView1_Click() ' Evento non osservato TableView1.Edit End Public Sub TableView1_Save(Row As Integer, Column As Integer, Value As String) ' Serve per salvare il testo scritto all'interno delle celle. TableView1[row, column].text = value End Public Sub TableView_KeyPress() ' Evento osservato ' Per impedire a questi eventi di scatenare il click quando passano alla riga successiva. Select Case Key.Code Case Key.Right, Key.Return, Key.Enter If TableView1.Column = 3 Then $bNoEvent = True Endif ' Serve per spostarsi con Tab. Case Key.Tab If Application.ActiveControl = TextBox1 Then If TableView1.Row = -1 Then Desktop.SendKeys("\t") Return Endif If TableView1.Row = TableView1.Rows.Count - 1 And TableView1.Column = TableView1.Columns.Count - 2 Then Desktop.SendKeys("\t") Else Stop Event Desktop.SendKeys("\n") Endif Endif End Select End
Note
[1] Il codice è a cura del membro Gianluigi del forum gambas-org.it
[2] Il codice è a cura del membro vuott del forum gambas-org.it
[3] Il codice è a cura del membro Gianluigi del forum gambas-org.it