Differenze tra le versioni di "Utilizzare il tasto Tab della tastiera per spostare il cursore del mouse fra le celle di una TableView"
Riga 75: | Riga 75: | ||
TableView1.Columns[2].Width = 100 | TableView1.Columns[2].Width = 100 | ||
TableView1.Columns[3].Width = 100 | TableView1.Columns[3].Width = 100 | ||
+ | |||
+ | '''End''' | ||
+ | |||
+ | |||
+ | '''Public''' Sub TableView1_Click() | ||
<FONT Color=gray>' ''Impedisce che ai due "Button" possa essere attribuito il Focus con tasto Tab:''</font> | <FONT Color=gray>' ''Impedisce che ai due "Button" possa essere attribuito il Focus con tasto Tab:''</font> | ||
Button1.NoTabFocus = True | Button1.NoTabFocus = True | ||
Button2.NoTabFocus = True | Button2.NoTabFocus = True | ||
− | |||
− | |||
− | |||
− | |||
− | |||
EditaTableView() | EditaTableView() | ||
Riga 109: | Riga 109: | ||
'''Private''' Procedure EditaTableView() | '''Private''' Procedure EditaTableView() | ||
+ | |||
+ | <FONT Color=gray>' ''Se si intende, dopo aver raggiunto l'ultima cella della "TableView", passare - premendo il tasto "Tab" - il Focus ai due "Button":'' | ||
+ | '''If (TableView1.Row = TableView1.Rows.Max) And (TableView1.Column = TableView1.Columns.Max) Then''' | ||
+ | '''Button1.NoTabFocus = False''' | ||
+ | '''Button2.NoTabFocus = False''' | ||
+ | '''Endif'''</font> | ||
TableView1.Edit | TableView1.Edit |
Versione delle 15:52, 11 ott 2016
Mostriamo innanzitutto 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 (in questo esempio avremo due BUutton).
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 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": If (TableView1.Row = TableView1.Rows.Max) And (TableView1.Column = TableView1.Columns.Max) Then Button1.NoTabFocus = False Button2.NoTabFocus = False Endif TableView1.Edit End
Qualora non vi siano altri oggetti sul Form, si farà riferimento al Form medesimo così:
Public Sub Form_GotFocus() TableView1.SetFocus End
3° esempio [ Nota 3 ]
In questo terzo esempio, invece, si impedisce che anche i tasti "invio" 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 tasto 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