Newsgroup: it.comp.lang.visual-basic
Titolo: Mantenere Ordinato un Combobox,Come?

C'è la possibilità in modo automatico ti tenere ordinato un ComboBox?
Infatti ho notato che fino a quando si lavora con pochi valori ordinare il 
tutto è semplice, ma se si lavora con 100 e passa elementi come le provincia 
italiane resta più noioso e complesso.
Ma se non si puo' fare in altro modo, con un po' di buona volontà ci si 
riesce.
Certo pero' che se ci fosse un modo automatico.....
Grazie come sempre di tutto! 

"Thommino"

se stai parlando di vb6, la proprieta' .sorted non va bene?
-- 
ciao, a.
news://it-alt.comp.software.openoffice : Il newsgroup dedicato a
OpenOffice.org, la suite open source di applicazioni per ufficio.

 se stai parlando di vb6, la proprieta' .sorted non va bene?
PArlo di VBA. Dove trovo la proprietà sorted?
Come la uso?
Grazie 

 Grazie
se stai parlando di access, e magari se dici tutto subito uno capisce 
meglio, sorry, da me si e' incasinato e non mi mostra la toolbox.
in ogni modo, dovresti poter caricare il combo da codice con una query 
usando la clausola order by.
ciao, a.

 ciao, a.
Non sto parlando di access, ma delle macro che si possono creare per 
programmi tipo Excel,ecc.. Usano il VBA.
Ma se mi dice come ordinare il Visual Basic tradizionale, posso vedere se 
esiste la stessa funzione anche per VBA.
Grazie 

 Grazie
conosco poco e niente vba. in vb farei *qualcosa come* (vado a mano libera 
usando il modello dao, che mi semrba si possa usare in vba; cmq vedi tu di 
adattare all'accesso ai dati che usi e controllando sintassi ecc.)
dim db as database: set db=opendatabase(...)
dim rs as recordset
set rs=db.openrecordset("select sigla from province order by sigla")
with rs
    do while not .eof
        if not isnull(!sigla) then cboProvincia.additem !sigla
        .movenext
    loop
end with
rs.close: set rs=nothing
db.close: set db=nothing
ti carica in un attimo centinaia di righe in un combo ordinato.
collega il codice al form_load, a un pulsante di una maschera, vedi tu.
hth, ciao, a.

 collega il codice al form_load, a un pulsante di una maschera, vedi tu.
Forse mi sono spiegato male. Io non ho database da caricare.
I combobox che ho io sono caricati in questo modo:
Private Sub ComboBox1_C() MultiPage1.Tec.ComboBox1.AddItem "A"
MultiPage1.Tec.ComboBox1.AddItem "P"
MultiPage1.Tec.ComboBox1.AddItem "M"
MultiPage1.Tec.ComboBox1.AddItem "I"
End Sub 

 End Sub
E in questo modo carichi tutte le provincie italiane?
Ciò è bello ed istruttivo...
Per favore, potresti controllare se il tuo combobox ha la proprietà
"sorted"?
(te la metto facile: se scrivi multipage1.tec.combobox1.sorted = true ti
dà errore o fa quello che vuoi tu)
Nel caso funzionasse: questo è il primo suggerimento che ti ha dato andrea.
-- 
Salutoni
Sergio
C'è il giorno in cui nasci e quello in cui scegli di vivere
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 "sorted"?
In basso a sinistra in Visual Basic Editor non vedo la proprietą Sorted.
Immagino che quanto dici vada messo nella inizializzazione. Quindi:
Private Sub UserForm_Initialize()
MultiPage1.tec.ComboBox1.Sorted = True
End Sub
Ho provato. Purtroppo non funziona mi da errore.
Qualche altra idea? 

 Qualche altra idea?
No.
Cioè, tante, ma non usando vba non so se sono applicabili.
Forse, ma dico forse, potresti mettere i valori in un array, ordinarlo con
un algoritmo di quick sort (ne trovi parecchi in rete) e poi inserire con
un ciclo gli elementi già ordinati.


 
temo per lui che sia l'unica soluzione.
a parte il fatto che se il caricamento degli item del combobox e' fatto 
una tantum con valori costanti ( parlava dele province italiane ) 
questio possono essere ordinati 'a mano' nel sorgente.

 ha scritto nel messaggio 
news:e6peot$lbk$1...@news.unina.it...

Si infatti, è tutto fatto una tantum. Quindi per il momento ho ordinato 
tutto manualmente, ma sarebbe stato carino buttarle dentro a caso e farle 
ordinare dalla macchina. PEnsavo ci fosse una funzione già scritta. Alla 
fine mantenere in ordine una combobox non mi pare una cosa tanto stramba. 

 possono essere ordinati 'a mano' nel sorgente.
hardcoding rischiosissimo.
aspetterei almeno il referendum, giusto per sapere _quali sono_ :)
ciao, a.

 aspetterei almeno il referendum, giusto per sapere _quali sono_ :)
Se vi viene in mente qualche cosa sapete dove trovarmi ;-)
Grazie 

 Se vi viene in mente qualche cosa sapete dove trovarmi ;-)
non volendo usare db, in casi simili io faccio un file di testo, e posso 
ordinare quello.
la lettura e' molto simile a quella col db, solo che invece del recordset 
ecc usi open e line input.
se vuoi automatizzare il tutto, lo lasci disordinato man mano che aggiungi 
righe, poi dopo averlo aperto carichi le righe in una matrice e usi un 
algoritmo di sorting come quelli che diceva melchiade.
ciao, a. 

 ciao, a.
Grazie per l'aiuto. Sono riuscito a usare questo, che sembra funzionare alla 
grande.
Private Sub InsertSort()
Dim sColl As New Collection
Dim f As Long
    InsertInCollection sColl, "B"
    InsertInCollection sColl, "F"
    InsertInCollection sColl, "E"
    InsertInCollection sColl, "A"
    InsertInCollection sColl, "C"
    InsertInCollection sColl, "G"
    For f = 1 To sColl.Count
        myComboBox.AddItem sColl.Item(f)
    Next f
End Sub
Private Sub InsertInCollection(aColl As Collection, vValue As Variant)
Dim f As Long
    For f = 1 To aColl.Count
        If aColl.Item(f) > vValue Then
            aColl.Add vValue, , f
            Exit Sub
        End If
    Next f
    aColl.Add vValue
End Sub