Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    14

    vb6 - Item visibili in combobox

    Salve,
    domandina semplice semplice: gli item visibili di un combobox sono fissati ad otto?
    nella mia applicazione tutti i combo , una volta cliccati, evidenziano max 8 elementi.
    Vi è un sistema per farne apparire di più?
    Grazie
    bancroft

  2. #2
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    un sistema c'è... si utilizza una API, la SendMessage

    QUI trovi un esempio.

    Boolean

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    14
    Mi scuso se ritorno sull'argomento. Ho verificato quanto suggeritomi da Boolean e noto che gli item effettivamente si espandono oltre gli otto ma solo attivando il command e non agendo sul combo. Come mai?
    Ancora grazie.
    bancroft

  4. #4
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    fantasia sotto le scarpe, eh?


    ferme restando le dichiarazioni API, la routine

    Sub Command1_Click()

    sostituiscila con questa, che volendo potresti inserire in un Modulo, visto che l'ho resa generale:

    codice:
    Sub EspandiCombo(frm As Form, cmb As ComboBox, numItemsToDisplay As Integer)
    
       Dim pt As POINTAPI
       Dim rc As RECT
       Dim cWidth As Long
       Dim newHeight As Long
       Dim oldScaleMode As Long
       Dim numItemsToDisplay As Long
       Dim itemHeight As Long
       
       oldScaleMode = frm.ScaleMode
       frm.ScaleMode = vbPixels
       
       cWidth = Combo1.Width
      
       itemHeight = SendMessage(cmb.hWnd, CB_GETITEMHEIGHT, 0, ByVal 0)
       
       newHeight = itemHeight * (numItemsToDisplay + 2)
       
       Call GetWindowRect(cmb.hWnd, rc)
       pt.x = rc.Left
       pt.y = rc.Top
    
       Call ScreenToClient(frm.hWnd, pt)
    
       Call MoveWindow(cmb.hWnd, pt.x, pt.y, cmb.Width, newHeight, True)
       
       Call SendMessage(cmb.hWnd, CB_SHOWDROPDOWN, True, ByVal 0)
       
       frm.ScaleMode = oldScaleMode
    
    End Sub
    poi nell'evento Form_Load chiamala, passando come parametri, il nome del Form, il nome del Combo e il numero di elementi che deve visualizzare, ad esempio:

    codice:
    EspandiCombo Me, Combo1, 34
    Boolean

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.