Differenze tra le versioni di "Utilizzare il tasto Tab della tastiera per spostare il cursore del mouse fra le celle di una TableView"
Da Gambas-it.org - Wikipedia.
Riga 1: | Riga 1: | ||
− | Mostriamo | + | 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'' . | ||
+ | |||
+ | |||
+ | '''1° esempio''' <SUP>[ [[#Note|Nota 1]] ]</sup> | ||
'''Public''' Sub _new() | '''Public''' Sub _new() | ||
Riga 55: | Riga 58: | ||
<FONT Color=#B22222>Desktop.SendKeys("\n") | <FONT Color=#B22222>Desktop.SendKeys("\n") | ||
Endif</font> | Endif</font> | ||
+ | |||
+ | '''End''' | ||
+ | |||
+ | |||
+ | |||
+ | '''2° esempio''' <SUP>[ [[#Note|Nota 2]] ]</sup> | ||
+ | |||
+ | '''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() | ||
+ | |||
+ | <FONT Color=gray>' ''Serve per spostarsi con tasto Tab:''</font> | ||
+ | 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 <SUP>[ [[#Note|Nota 3]] ]</sup>, 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 <FONT Color=gray>' ''Per anticipare l'evento prima che venga lanciato.''</font> | ||
+ | |||
+ | hObs = New Observer(Me) As "TableView" | ||
+ | |||
+ | '''End''' | ||
+ | |||
+ | |||
+ | '''Public''' Sub Form_Open() | ||
+ | |||
+ | TableView1.Width = 550 <FONT Color=gray>' ''dichiara la larghezza dell'intera TableView''</font> | ||
+ | TableView1.Columns.Count = 5 <FONT Color=gray>' ''dichiara il numero di colonne''</font> | ||
+ | TableView1.Rows.Count = 20 <FONT Color=gray>' ''dichiara il numero di righe''</font> | ||
+ | TableView1.Columns[0].Width = 100 <FONT Color=gray>' ''dichiara la larghezza della colonna ID''</font> | ||
+ | TableView1.Columns[1].Width = 100 <FONT Color=gray>' ''dichiara la larghezza della colonna Luogo''</font> | ||
+ | TableView1.Columns[2].Width = 100 <FONT Color=gray>' ''dichiara la larghezza della colonna GRP''</font> | ||
+ | TableView1.Columns[3].Width = 100 <FONT Color=gray>' ''dichiara la larghezza della colonna stato''</font> | ||
+ | TableView1.Columns[4].Alignment = Align.Center <FONT Color=gray>' ''centra i pulsanti''</font> | ||
+ | TableView1.Rows.Height = 30 <FONT Color=gray>' ''dichiara l'altezza della riga''</font> | ||
+ | TableView1.name = "PROVA" | ||
+ | TableView1.Header = 3 <FONT Color=gray>' ''ATTIVA L'INTESTAZIONE DELLE COLONNE''</font> | ||
+ | TableView1.Font.Size = 11 | ||
+ | TableView1.Columns[0].Alignment = 3 <FONT Color=gray>' ''Allineamento centrato''</font> | ||
+ | TableView1.Columns[1].Alignment = 3 <FONT Color=gray>' ''Allineamento centrato''</font> | ||
+ | TableView1.Columns[2].Alignment = 3 <FONT Color=gray>' ''Allineamento centrato''</font> | ||
+ | TableView1.Columns[3].Alignment = 3 <FONT Color=gray>' ''Allineamento centrato''</font> | ||
+ | |||
+ | '''End''' | ||
+ | |||
+ | |||
+ | '''Public''' Sub TableView1_Click() <FONT Color=gray>' ''Evento non osservato''</font> | ||
+ | |||
+ | TableView1.Edit | ||
+ | |||
+ | '''End''' | ||
+ | |||
+ | |||
+ | '''Public''' Sub TableView1_Save(Row As Integer, Column As Integer, Value As String) <FONT Color=gray>' ''Serve per salvare il testo scritto all'interno delle celle.''</font> | ||
+ | |||
+ | TableView1[row, column].text = value | ||
+ | |||
+ | '''End''' | ||
+ | |||
+ | |||
+ | '''Public''' Sub TableView_KeyPress() <FONT Color=gray>' ''Evento osservato''</font> | ||
+ | |||
+ | <FONT Color=gray>' ''Per impedire a questi eventi di scatenare il click quando passano alla riga successiva.</font> | ||
+ | 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''' | '''End''' | ||
Riga 62: | Riga 205: | ||
=Note= | =Note= | ||
− | [1] | + | [1] Il codice è a cura del membro [http://www.gambas-it.org/smf/index.php?action=profile;u=1249 Gianluigi] del forum gambas-org.it |
+ | |||
+ | [2] Il codice è a cura del membro [http://www.gambas-it.org/smf/index.php?action=profile;u=402 vuott] del forum gambas-org.it | ||
+ | |||
+ | [3] Il codice è a cura del membro [http://www.gambas-it.org/smf/index.php?action=profile;u=1249 Gianluigi] del forum gambas-org.it |
Versione delle 14:14, 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 ]
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