non funziona perchè se digito una lettera sull'area di testo della combo non scateno l'evento combo change quindi non mi filtra le item.
il funzionamento è così:
digito un carattere sull'area text di combobox per esempio A
PUBLIC SUB ComboDescrizione_KeyRelease()
MakeComboDescrizione()
ComboDescrizione.Popup ' qui mi apre la lista correttamente filtrata in base ai caratteri scritti sulla text di combobox
ComboDescrizione.SetFocus ' qui vorrei posizionarmi sulla text di combobox per aggiungere un altro carattere a quello già scritto ma non succede
END
PUBLIC SUB MakeComboDescrizione()
DIM variabile AS String
OpenDB()
ComboDescrizione.Clear
variabile = "%" & ComboDescrizione.Text & "%"
sql = "SELECT*FROM DESCRIZIONE WHERE descrizione LIKE '" & variabile & "'"
hres = $hConn.Exec(sql)
FOR EACH hres
IF hres.Available = TRUE THEN
ComboDescrizione.Add(hres!descrizione)
ENDIF
NEXT
ComboDescrizione.Sorted = TRUE
$hConn.Close
END
Ciao, vedi se puoi adattare questo mio codice, magari domani se ho più tempo vedo di fare meglio :D
PUBLIC SUB tbfornit1_Change()
DIM sql AS String
DIM p AS Integer
DIM myfiltro AS String
p = tbfornit1.Pos
IF p > 0 THEN
myfiltro = Left$(tbfornit1.Text, p)
sql = "select * from fornitori WHERE "
sql = sql & "fornitore LIKE '" & myfiltro & "%' "
sql = sql & "order by fornitore"
MyRS = MODMain.$conn.Exec(sql)
IF MyRS.Available = TRUE THEN
MyRS.movefirst
tbfornit1.Text = myfiltro & Right$(MyRS!fornitore, (Len(MyRS!fornitore) - p))
tbfornit1.Pos = p
tbidfornitore.Text = MyRS!idfornitore
ELSE
tbfornit1.Pos = p
tbfornit1.Text = dettagli.deffornitore
tbidfornitore.Text = dettagli.defidfornitore
ENDIF
ENDIF
END
Fammi sapere
stasera provo perchè ora son al lavoro. Se non ricordo male l'unico evento che ho usato sulla textbox è key_relase dove ho scritto:
makegridbox()
if key.code =key.tab then
listbox.getfocus
endif
l'unico evento su listbox è listbox_click che dovrebbe passare il focus a valuebox ma ne key.tab ne il focus sulla value funzionano anche se il programma passa di la perchè i PRINT che ho messo fanno il loro dovere.
Vado a fare i tramezzini altrimenti i clienti i lamentano :party: