Ma forse... si può fare più semplicemente...Si, probabilmente hai ragione. Ho notato che se si clicca sulla combo in modo che si apra, digitando la lettera
Public Sub Form_Open()
ComboBox1.Tag = 1
End
Public Sub ComboBox1_Change()
With ComboBox1
.Text = ComboBox1[.List.Find(String.Left(.Text, .Pos) & "*", gb.Like)].Text
.Pos = .Tag
End With
End
Public Sub ComboBox1_KeyRelease()
If Key.Code < 127 Then
Inc ComboBox1.Tag
Else
ComboBox1.Tag = ComboBox1.Pos + 1
Endif
EndOhibò! Qui si parla di TAG...
Di Tag ignoravo l'esistenza sig! La cosa un po mi demoralizza mi sento sempre più inadeguato all'improbo compito che mi sono dato.Tranquillo Gianluigi, come vedi sei in buona compagnia; la cosa che considero molto importante è l'ammissione dei propri limiti, perchè se tutti si considerassero professori, questo forum non avrebbe alcun senso, e non verrebbero alla luce certe peculiarità che fanno di gambas un prodotto d'eccellenza.
Tranquillo Gianluigi, come vedi sei in buona compagnia; la cosa che considero molto importante è l'ammissione dei propri limiti, perchè se tutti si considerassero professori, questo forum non avrebbe alcun senso, e non verrebbero alla luce certe peculiarità che fanno di gambas un prodotto d'eccellenza.
' Gambas class file
Public carattere As String
Public Sub Form_Open()
Cmb_prova.Tag = 1
End
Public Sub Cmb_prova_Change()
With Cmb_prova
.Text = Cmb_prova[.List.Find(String.Left(carattere, .Pos) & "*", gb.Like)].Text
.Pos = .Tag
End With
End
Public Sub Cmb_prova_KeyRelease()
With Cmb_prova
If Key.Code < 127 Then
Inc .Tag
Else
.Tag = .Pos + 1
Endif
End With
End
Public Sub Cmb_prova_KeyPress()
carattere = Key.Text
End
Riprendendo il tuo esempio, ho notato che dopo aver trovato la prima ricorrenza, se ti scappa di digitare un carattere senza porsi all'inizio della stringa nella combo, si presenta un errore.
Public Sub Form_Open()
ComboBox1.Tag = 1
End
Public Sub ComboBox1_Change()
Dim s As Short
With ComboBox1
s = .List.Find(String.Left(.Text, .Pos) & "*", gb.Like)
If s > -1 Then
.Text = ComboBox1[s].Text
.Pos = .Tag
Endif
End With
End
Public Sub ComboBox1_KeyRelease()
If Key.Code < 127 Then
Inc ComboBox1.Tag
Else
ComboBox1.Tag = ComboBox1.Pos + 1
Endif
End Public carattere As String
Public Sub Form_Open()
Cmb_prova.Tag = 1
End
Public Sub Cmb_prova_Change()
With Cmb_prova
.Text = Cmb_prova[.List.Find(carattere & "*", gb.Like)].Text
.Pos = .Tag
End With
Catch
Stop Event
Cmb_prova.Text = ""
End
Public Sub Cmb_prova_KeyRelease()
With Cmb_prova
If Key.Code < 127 Then
Inc .Tag
Else
.Tag = .Pos + 1
Endif
End With
End
Public Sub Cmb_prova_KeyPress()
carattere = Key.Text
End
Public Sub Cmb_prova_Click()
carattere = ""
End