Utilizzare il tasto Tab della tastiera per spostare il cursore del mouse fra le celle di una TableView
Da Gambas-it.org - Wikipedia.
Versione del 13 ott 2016 alle 15:45 di Vuott (Discussione | contributi)
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".
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 variante del codice precedente, e suppone che oltre alla TableView sia presente sul Form almeno un altro oggetto (in questo esempio avremo due Button).
Public Sub Form_Open() TableView1.Width = 400 TableView1.Columns.Count = 4 TableView1.Rows.Count = 5 TableView1.Columns[0].Width = 100 TableView1.Columns[1].Width = 100 TableView1.Columns[2].Width = 100 TableView1.Columns[3].Width = 100 End Public Sub TableView1_Click() ' Impedisce che ai due "Button" possa essere attribuito il Focus con tasto Tab: Button1.NoTabFocus = True Button2.NoTabFocus = True ' Però, qualora non vi siano oggetti sul Form, si farà riferimento al solo Form così: ' Me.NoTabFocus = True 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() ' Se si intende, dopo aver raggiunto l'ultima cella della "TableView", passare - premendo il tasto "Tab" - il Focus ai due "Button" (decommentare queste righe): ' If (TableView1.Row = TableView1.Rows.Max) And (TableView1.Column = TableView1.Columns.Max) Then ' Button1.NoTabFocus = False ' Button2.NoTabFocus = False ' Endif TableView1.Edit 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