Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    VC++ , valori doppi in una ComboBox

    Ho un problema con una ComboBox! Devo eliminare i valori doppi!
    I dati della Combo vengono caricati tramite una Query.
    Purtroppo non ho la possibilità di modificare nè la Query nè il DB (in Access).
    Rappresento il mio caso con un banale esempio:
    - quando apro la lista della ComboBox
    in ordine ho:

    Milano
    Palermo
    Roma
    Roma

    - ovviamente i valori caricati hanno sempre un ordine diverso
    a seconda della query.

    Ho solo la possibilità di lavorare sulla ComboBox una volta popolata!
    Come posso eliminare i valori doppi??
    Ci sto sbattendo la testa da 2 giorni!!

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    58
    Per Patrick-Roma

    Potresti fare due cicli uno dentro l'altro: con il primo prendi un campo alla volta della lista e con il secondo controlli che nella stessa lista non ci sia un campo uguale (nel caso in cui lo trovassi lo potrai cancellare dalla ComboBox).
    Ge

  3. #3

    già provato! :-(

    Ti ringrazio... purtroppo però ho già provato ma credo che non riesco a prendere i valori che hanno popolato la ComboBox.

    faccio una cosa del genere:

    for(int i=0; i<cb->GetCount(); i++)
    {
    for(int k=0; k<cb->GetCount(); k++)
    {
    if (cb[i] == cb[k])
    {
    cb->DeleteString(i);
    ....
    ....

    e continuo ma niente da fare.

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    58
    Ma nella combo ci sono molti valori?

    Perchè se no potresti provare a memorizzare prima i tutti i valori della combobox in un array e poi confrontare questo con la combobox, perchè magari non gli piace fare dei controlli su se stessa.
    Ge

  5. #5

    Così mi da errore! :-(

    già provato! :-(

    se scrivo

    CComboBox copia = pCBIndirizzo;

    mi da un errore di questo tipo:

    error C2440: 'initializing' : cannot convert from 'class CComboBox *' to 'class CComboBox'

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    58
    Ci sono!!!

    devi fare due cicli che non siano For ma ad esempio do..loop.
    Non ti so spiegare bene, ma ti scrivo qui il codice il Vb6. spero che riuscirai a capirlo e a tradurlo.

    m = Me.Combo1.ListCount - 1

    i = 0
    k = 0
    Do While i <= m
    k = 0
    k = k + i
    Do While k <= m
    If Me.Combo1.List(i) <> "canc" Then
    If Me.Combo1.List(k) = Me.Combo1.List(i) Then
    If k <> i Then
    Me.Combo1.List(k) = "canc"
    End If
    End If
    End If
    k = k + 1
    Loop
    i = i + 1
    Loop

    For i = 0 To m
    If Me.Combo1.List(i) = "canc" Then
    Me.Combo1.RemoveItem (i)
    End If
    Next i

    Se non capisci dimmelo e provo a scrivertelo in vc++. (il fatto è che mi trovo meglio con vb6 e vb.net).
    Ge

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.