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

    [vb6] problema combo...

    ciao!
    ho una combo... dove per caricarla faccio così:
    codice:
      With cmbTest
      .AddItem "zero"
      .ItemData(0) = 0
      .AddItem "uno"
      .ItemData(1) = 1
      '.AddItem "due"
      '.ItemData(2) = 2
      .AddItem "quattro"
      .ItemData(3) = 4
      End With
    fi qui tutto ok...
    ma poi devo forzargli la selezione passando l'ItemData (voglio aver selezionato "quattro" e gli passo 4 e non 3..)
    come faccio????
    ovviamente se faccio così
    codice:
    cmbTest.ListIndex = 4
    mi da errore perchè l'ultimo è 3....

    tnx!
    ...l'importante è non cadere dal palco...
    www.sisimizi.com

    : ghiboz : | ° nani ° | : gBlog :

  2. #2
    innanzi tutto ti conviene modificare il codice che hai in questo modo:
    codice:
      With cmbTest
      .AddItem "zero"
      .ItemData(.NewIndex) = 0
      .AddItem "uno"
      .ItemData(.NewIndex) = 1
      .AddItem "due"
      .ItemData(.NewIndex) = 2
      .AddItem "quattro"
      .ItemData(.NewIndex) = 4
      End With
    poi credo che il problema della forzaturo lo hai nel caricamento della combo per cui è sufficiente mettere un ListIndex=N dove N è il NewIndex della riga appena inserita che soddisfa il tuo criterio di forzatura es poniamo che devi riempirlo con dei dati da tabella tramite un ciclo:
    codice:
    Sub RiempiCombo(CodiceDaSelezionare as Integer)
      MyIndex=-1
      With MyCombo
        Do While Not MyTab.EOF
          .AddItem(MyTab("Descrizione")
          .ItemData(.NewIndex)=MyTab("Codice")
          If MyTab("Codice")=CodiceDaSelezionare Then
             MyIndex=.NewIndex
          End If
          MyTab.MoveNext
        Loop
        If MyIndex>-1 then
          .ListIndex=MyIndex
        End If
      End With
    End Sub
    Con queste righe sei in grado di riempire la combo e selezionare forzatamente una voce dell'elenco a seconda del ItemData.
    Per selezianarne una in un secondo momento devi leggere tutti gli itemdata con un ciclo e se trovi quello giusto imposti la proprietà ListIndex sull'indice corrispondente:
    codice:
    Sub SelezionaSuCombo(CodiceDaSelezionare as Integer)
      MyIndex=-1
      With MyCombo
        For i=0 to .ListCount-1
          If .ItemData(i)=CodiceDaSelezionare Then
            MyIndex=i
            Exit For
          End If
        Next i
        If MyIndex>-1 then
          .ListIndex=MyIndex
        End If  
      End With
    End sub
    Bye
    *** Rachele TI AMO DA MORIRE!!! ***

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.