Newsgroup: it.comp.lang.visual-basic
Titolo: [Faq] Visualizzare dati in combo/listbox

Vorrei fare selezionare all'utente un Progetto da un elenco "esteso" (non
piu di qualche centinaio).
Al posto della combobox volevo utilizzare una text box + 1 pulsante di
commando + 1 listbox (suggerimento trovato sul NG):
nella textbox c'è l'ID e affianco il pulsante stile freccia combobox
quando clicco rendo visibile una listbox prima invisibile contenente
l'elenco dei progetti con qualche informazione in più per facilitare la
selezione. L'utente seleziona quindi il progetto desiderato e ...
Avete altre idee?
Grazie
Hubert

 ha scritto nel messaggio news:b13jtm$va7k8$1@ID-

Usare un combobox?
Ciao

 Usare un combobox?
Come? Vorrei vedere solamente l'ID nella combo così mi occupa uno spazio
ristretto.
Quando seleziono un ID vorrei che mi si aprisse sotto una specie di grid
molto più largo della combo contenente l'elenco completo dei progetti con le
varie descrizioni nelle relative colonne.

 varie descrizioni nelle relative colonne.
Ah, allora il problema č questo.
Mica l'avevi detto :)
Fai un SendMessage sul Combo con un CB_SETDROPPEDWIDTH per settare la
larghezza della "listbox" del combo.
Ciao


Forse è un pò troppo per le mie capacità. Penso di rimanere sulla
combinazione combo (oppure textbox + pulsante) + listbox.
Sapreste dirmi se è possibile fare lo scroll della listbox solamento facendo
passare il mouse in verticale (quindi senza necessariamente utilizzare la
scrollbar) con relativa selezione dell'item che si trova sotto il puntatore
del mouse?
Grazie

 combinazione combo (oppure textbox + pulsante) + listbox.
Nah, non ti sottovalutare, vediamo un po':
<START CODE>
Public Declare Function SendMessage Lib _
    "USER32" Alias "SendMessageA" _
    (ByVal hwnd As Long, ByVal Msg As Long, _
    ByVal wParam As Long, ByVal lParam As _
    Long) As Long
Public Const CB_GETDROPPEDWIDTH = &H15F
Public Const CB_SETDROPPEDWIDTH = &H160
Public Const CB_ERR = -1
Public Function GetDropdownWidth(cboHwnd As Long) As Long
    Dim lRetVal As Long
    '*** To get the combo box drop-down width.
    '*** You may use this function if you want
    '*** to change the width in proportion
    '*** i.e. double, half, 3/4 of existing width.
    lRetVal = SendMessage(cboHwnd, CB_GETDROPPEDWIDTH, 0, 0)
    If lRetVal <> CB_ERR Then
        GetDropdownWidth = lRetVal
        'Width in pixels
    Else
        GetDropdownWidth = 0
    End If
End Function
Public Function SetDropdownWidth(cboHwnd As _
        Long, NewWidthPixel As Long) As Boolean
    Dim lRetVal As Long
    ' *** To set combo box drop-down width ***
    lRetVal = SendMessage(cboHwnd, _
        CB_SETDROPPEDWIDTH, NewWidthPixel, 0)
    If lRetVal <> CB_ERR Then
        SetDropdownWidth = True
    Else
        SetDropdownWidth = False
    End If
End Function
<END CODE>
Allora ste robe le metti in un modulo, poi le usi così GetDropdownWidth
(Combo1.hwnd) per prendere la dimensione attuale.
SetDropdownWidth(Combo1.hwnd,NuovaDimensione) per ridimensionarlo [puoi
anche fare un ridimensionamento proporzionale, usando il get con il set]
Ciao
--
Timothy Redaelli
timothy(dot)redaelli(at)email(dot)it
-----------------------------------
Links
Sito Comune: 
www.it-lang-vb.net
MSDN: 
msdn.microsoft.com
P.S. Se non è chiaro io ci sono :P

 > del mouse?
Suppongo quindi che anche per il secondo problema (scroll di combo/listbox
senza scrollbar) dovrei usare delle chiamate API?.
Grazie lo stesso
Hubert


Se dovessi convertirmi all'uso delle API siuramente mi č sei stato d'aiuto.
Grazie
Hubert