Ciao oregon.![]()
Purtroppo non è un codice che ho scritto io ed è pure scritto in modo poco comprensibile; ciò che posso dirti è che per aggiungere gli item viene usato il metodo AddItem della combobox;
Nel software è previsto un array di combobox, quindi nel codice la combobox corrente è indicata dall'indice i:
dove appunto NameConv(i) è la combobox e recappLocal è il recordset contenente i dati.codice:NameConv(i).AddItem recappLocal.Fields("Descrizione").value
Mi sono creata una variabie array locale al form (Private cWidth() As Long) nella quale per ogni indice (combobox) memorizzo la lunghezza massima.
Questo è il codice nella sua interezza (le righe in rosso le ho aggiunte io):
Ora, quando viene generato l'evento DropDown, nel codice relativo devo richiamare l'istruzione SendMessage ma la larghezza della tendina viene ridimensionata male, cioè è troppo larga; perciò forse devo fare una qualche conversione, ma non saprei proprio come fare.codice:Dim myA As Single Dim myB As Single myA = 0 myB = 0 With recTagTableLocal ReDim cWidth(numNameConv) For i = 0 To numNameConv If IsNull(.Fields("Cod" & i).value) = True Then CodiciN(i) = 0 Else CodiciN(i) = .Fields("Cod" & i).value End If recappLocal.Open "select * from Tab" & Format(i, "0") & " where ID=" & CodiciN(i) & " and Action <> 'D'", ConfigurationDB, adOpenStatic, adLockOptimistic If recappLocal.EOF = False Then 'sta caricando i dati nelle combobox If IsNull(recappLocal.Fields("Descrizione").value) = True Then NameConv(i).AddItem " " myA = Len(" ") Else NameConv(i).AddItem recappLocal.Fields("Descrizione").value myA = Len(recappLocal.Fields("Descrizione").value) End If If (CodiciN(i) <> 0) Then NameConv(i).itemdata(NameConv(i).NewIndex) = CodiciN(i) NameConv(i).ListIndex = 0 End If If myA > myB Then myB = myA Else myB = 100 End If End If cWidth(i) = myB recappLocal.Close Next i End With
Oppure semplicemente mi sono impappinata io da qualche parte nel codice.
Grazie per il tuo aiuto
lady![]()


Rispondi quotando