PDA

Visualizza la versione completa : [VB]: Problema ListBox


Marcoski
07-09-2002, 16:53
Ciao ragazzi,
Ho un problema non riesco a capire come posso fare per poter raggiungere su una listbox il risultato che voglio premendo il tasto della lettera iniziale.
In pratica il mio problema è riuscire a creare in VB una listBox che funzioni come le listBox dei FORM HTML.

Esempio:
Ho una listbox di 300 elementi per raggiungere l'elemento chiamato Marco invece di stare a scorrere un casino di elementi vorrei raggiungere subito il primo elemento che comincia con la lettera M premendo il tasto M.
Come posso fare?
Ho visto che esiste una proprietà delle listbox che è la proprietà sorted ma quella mi mette soltanto gli elemtni in ordine alfabetico.

Ciao ciao

Mabi
07-09-2002, 17:59
Ma non funziona già così ???

Ti basta popolare la lista...


Private Sub Form_Load()
For cont = 65 To 80
List1.AddItem CStr(Chr(cont))
List1.AddItem CStr(Chr(cont))
Next cont
End Sub

...e premere un tasto, ad esempio la "P" che è l'ultimo elemento per vederlo.

Marcoski
07-09-2002, 18:37
MMMM sei sicuro?
A me non funzia così

chipdb
07-09-2002, 18:55
Ma non funziona già così ???

Ti basta popolare la lista...

code:--------------------------------------------------------------------------------
Private Sub Form_Load()
For cont = 65 To 80
List1.AddItem CStr(Chr(cont))
List1.AddItem CStr(Chr(cont))
Next cont
End Sub
--------------------------------------------------------------------------------

...e premere un tasto, ad esempio la "P" che è l'ultimo elemento per vederlo. :nonono:

Devi usare un'API.
Metti questo codice in un modulo:


Public Declare Function SendMessage Lib "user32" _
Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal _
wParam As Integer, ByVal lParam As Any) As Long
Public Const LB_FINDSTRING = &H18F

Quindi quando devi cercare la stringa:


ListName.ListIndex = SendMessage(ListName.hwnd, LB_FINDSTRING, -1, _
ByVal CStr(Text1.Text))

Ciao :ciauz:

Mabi
07-09-2002, 19:34
chipdb in questo modo viene selezionata nella lista la stringa corrispondente o simile.
Io uso VB5 e ti assicuro che premendo una lettera sulla lista la selezione si sposta su tutti gli elementi che iniziano per la lettera premuta:



Private Sub Command1_Click()
List1.SetFocus
SendKeys "P"
End Sub

chipdb
08-09-2002, 10:35
Certo lo so anch'io. Il mio codice serve quando tua hai una Text e scrivendoci una lettera si sposta sul primo valore della lista con quella lettera. Tutto qui. Vanno bene entrambi. Ciao :ciauz:

Marcoski
08-09-2002, 12:58
Grazie mille ragazzi

Loading