Newsgroup: it.comp.lang.visual-basic
Titolo: passare il nome di una combo a una function in un modulo

Ciao a tutti.
Ho una function in un modulo che devo richiamare ad ogni evento UP di ogni
combobox nel mio programma.
la function si chiama "gestionecombo" e richiede come parametri il nome del
form, il nome della combobox e la variabile Keycode.
Io la richiamo cosě:
gestionecombo me, ???, Keycode
Il problema č che non riesco a passargli il nome della combobox a cui far
riferimento (non so se dicendo "nome" dico una cosa giusta) mi basterebbe
anche passargli il "nome" del controllo col focus o qualcosa del genere.
Anche un'esempio mi andrebbe bene... o anche soltanto la "parolina" da
cercare in msdn visto che alla voce "parametri" e "function" non č che abbia
trovato molto.
Grazie

 ha scritto nel messaggio

non so se ho capito, cmq:
nuovo progetto, su un form1 metti un combo1 + un text1 o un qualunque
altro controllo che possa prendere il focus.
incolla il codice qui sotto, lancia il vbp, prova a cliccare
alternativamente sul txt e sul combo
--
ciao, j.
www.sundaysw.com
Option Explicit
Private Sub AddCombo(c As ComboBox)
    Static j
    j = j + 1
    c.AddItem CStr(j)
    c = c.List(c.ListCount - 1)
End Sub
Private Sub Combo1_GotFocus()
    AddCombo Combo1
End Sub


Cosě avevo giŕ provato perň quando va alla function mi da l'errore
"proprietŕ o metodo non supportati dall'oggetto" se mi posiziono sulla
variabile "C" mi indica come valore il tasto che ho premuto (perchč il
richiamo alla combo l'ho messo nell'evento KEYUP.
Ti metto il codice che uso se puň essere di aiuto.
(Grazie)
Private Sub ComboAlbum_KeyUp(KeyCode As Integer, Shift As Integer)
gestionecombo Me, ComboAlbum, KeyCode
End Sub
Function gestionecombo(F As Form, C As ComboBox, Code As Integer)
If Code > 47 Then
   Dim K As Variant, J As Integer
   If F.C.Text <> "" Then                                        <-L'ERRORE
LO DA QUI
      For K = 0 To F.C.ListCount - 1
          J = Len(F.C.Text)
          If Left(F.C.List(K), J) = F.C.Text Then
             F.C.Text = F.C.List(K)
             F.C.SelStart = J
             F.C.SelLength = Len(F.C.Text) - J
          Exit For
          End If
      Next K
   End If
End If

    If F.C.Text <> "" Then
<-L'ERRORE
Ok, è il momento della lezione di logica :)
1) Se C viene passato perchè devi chiamarlo da F?
2) F contiene un combo di nome C?
3) A cosa ti serve F in questa funzione?
Togli F dalla dichiarazione e tutto ti sarà più chiaro.
Ciao
--
' // Initialize the expression evaluator
Engines.Evaluator = CreateObject("
http://www.neodatatype.net
")
' // you can find resources for and from the NG here!
Me.SitoComune = "
http://www.it-lang-vb.net
"

 Togli F dalla dichiarazione e tutto ti sarà più chiaro.
Premetto che togliendo F tutto va a meraviglia....
Io pensavo che essendo in un modulo la function dovessi passargli proprio
tutto il (diciamo) percorso. quindi "nome form" e "nome controllo". Pensavo
male.
Grazie a entrambi, ciao

 male.
Se tu passi un oggetto, passi proprio *quell*'oggetto.
Sa già lui dove andarselo a prendere.
Ciao

ho aggiunto un comboalbum, sorted=true.
il codice sembra funzionare
--
ciao, j.
www.sundaysw.com
Option Explicit
Private Sub AddCombo(C As ComboBox)
    Static J
    J = J + 1
    C.AddItem CStr(J)
    C = C.List(C.ListCount - 1)
End Sub
Private Sub Combo1_GotFocus()
    AddCombo Combo1
End Sub
Private Sub ComboAlbum_KeyUp(KeyCode As Integer, Shift As Integer)
    gestioneCombo comboAlbum, KeyCode
End Sub
'form non serve, glielo passi event come frm2.cbo3
Private Sub gestioneCombo(C As ComboBox, Code As Integer)
    If Code > 47 Then
'anche k e' un numero
        Dim K As Long, J As Long
        If C.Text <> "" Then
            For K = 0 To C.ListCount - 1
                J = Len(C.Text)
                If Left(C.List(K), J) = C.Text Then
                    C.Text = C.List(K)
                    C.SelStart = J
                    C.SelLength = Len(C.Text) - J
                    Exit For
                End If
            Next K
        End If
    End If
End Sub
Private Sub Form_Load()
    With comboAlbum
        .AddItem "aaa111"
        .AddItem "aaa123"
        .AddItem "aaabbb"
        .AddItem "aaabbbcc"
        .AddItem "aaafff"
        .AddItem "aaaddd"
        .AddItem "aaaeee"
        .AddItem "aaaxxx"
        .AddItem "aaa1x"
        .AddItem "aaax1"
        .AddItem "aaaexx"
    End With
End Sub

Grazie,ho risolto, il problema me lo dava proprio sull'utilizzo della
varibile F (as form), una cosa inutile che aggiungevo...
ciao