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 un esempio <SUP>[ [[#Note|Nota 1]] ]</sup>, che consente di muoversi fra le celle di una ''TableView'' anche utilizzando il tasto ''Tab''  oltre al tasto invio e ai tasti freccia.
+
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] Pagina e codice a cura del membro [http://www.gambas-it.org/smf/index.php?action=profile;u=1249 Gianluigi] del forum gambas-org.it
+
[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