Newsgroup: it.comp.lang.visual-basic
Titolo: [?]Impostare altezza delle combo

Ciao, avrei bisogno di impostare l'altezza di un combo... so che si puň
fare, avevo il codice, ma incredibilmente non lo trovo piů! Se qualcuno
lo avesse mi farebbe un grosso piacere a ripostarlo. Grazie.

 lo avesse mi farebbe un grosso piacere a ripostarlo. Grazie.
fai cosě: seleziona la ComboBox, poi premi sul quadratino centrale in basso
e, tenendo premuto, vai verso il basso con il maus, vedrai come si alza!!!
scherzi a parte... se intendi alzare la "tendina" della ComboBox allora ho
pigliato una classe per le ComboBox che avevo, c'č dentro altra roba ma...
piů ce n'č meglio č no? poi magari serve anche a qualcun'altro...
Option Explicit
'// Windows API calls
Private Declare Function SendMessageLong Lib "user32" Alias "SendMessageA"
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam
As Long) As Long
Private Declare Function MoveWindow Lib "user32" (ByVal hwnd As Long, ByVal
x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long,
ByVal bRepaint As Long) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA"
(ByVal hwndParent As Long, ByVal hwndChildAfter As Long, ByVal lpszClass As
String, ByVal lpszWindow As String) As Long
'// Windows message
Private Const WM_USER = &H400
'// Combo and edit box messages
Private Const CB_SHOWDROPDOWN = WM_USER + 15
Private Const CB_SETDROPPEDWIDTH = &H160
Private Const EC_LEFTMARGIN = &H1
Private Const EC_RIGHTMARGIN = &H2
Private Const EC_USEFONTINFO = &HFFFF&
Private Const EM_SETMARGINS = &HD3&
Private Const EM_GETMARGINS = &HD4&
Public Sub SetDropWidth(cbo As ComboBox, lngWidth As Long)
    SendMessageLong cbo.hwnd, CB_SETDROPPEDWIDTH, lngWidth, 0
End Sub
Public Sub SetDropHeight(cbo As ComboBox, lngHeight As Long)
    Dim intScaleMode As Integer
    '// Store the current scalemode
    intScaleMode = cbo.Parent.ScaleMode
    '// Set it to pixels
    cbo.Parent.ScaleMode = vbPixels
    '// Move the check box
    MoveWindow cbo.hwnd, cbo.Left, cbo.Top, cbo.Width, lngHeight, 1
    '// Reset the scalemode
    cbo.Parent.ScaleMode = intScaleMode
End Sub
Public Sub AddCheckBox(cbo As ComboBox, chk As CheckBox)
    Dim lngHwnd As Long
    Dim lngMargin As Long
    '// Find the edit window
    lngHwnd = FindWindowEx(cbo.hwnd, 0, "EDIT", vbNullString)
    If lngHwnd <> 0 Then
        '// Calculate the left margin
        lngMargin = chk.Width / Screen.TwipsPerPixelX + 2
        '// Set the margin
        SendMessageLong lngHwnd, EM_SETMARGINS, EC_LEFTMARGIN, lngMargin
        chk.BackColor = cbo.BackColor
        '// Move the check box
        chk.Move cbo.Left + 3 * Screen.TwipsPerPixelX, cbo.Top + 2 *
Screen.TwipsPerPixelY, chk.Width, cbo.Height - 4 * Screen.TwipsPerPixelY
        chk.ZOrder
    End If
End Sub
Public Sub DropDown(cbo As ComboBox, Optional blnShow As Boolean = True)
    SendMessageLong cbo.hwnd, CB_SHOWDROPDOWN, IIf(blnShow, 1, 0), 0
    'Oppure:
    '
    'If blnShow Then
    '    SendMessageLong cbo.hwnd, CB_SHOWDROPDOWN, 1, ByVal 0&
    'Else
    '    SendMessageLong cbo.hwnd, CB_SHOWDROPDOWN, 0, ByVal 0&
    'End If
End Sub
Saluti a tutti!
Faber

 e, tenendo premuto, vai verso il basso con il maus, vedrai come si alza!!!
ho archiviato la parte che riguarda la tendina, ma quanto sopra-- l'hai
provato ? prova un po'... vedrai che l'unico modo di variare l'altezza della
casella e' variare la dimensione del carattere, se ci provi dalle proprieta'
l'ide ti piazza un errore, se ci provi come sopra non ti considera
proprio...

proprio...
ehmmm.... effettivamente quando l'ho scritto non avevo Vb sottomano   :-)
Faber