Ti piace il sito?
Votalo con un clic sul
banner qui sotto ^_^
Autosize delle colonne di una listview
Con le seguenti due funzioni potrete ridimensionare in modo automatico
le colonne delle vostre listview in visualizzazione report.
Option Explicit
' dichiarazione APIPrivate 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
' costanti per il ridimensionamento colonne
Const LVM_SETCOLUMNWIDTH = &H1000 + 30
Const LVSCW_AUTOSIZE = -1
Const LVSCW_AUTOSIZE_USEHEADER = -2
' Ridimensiona le colonne del controllo listview in base alla lunghezza
' del testo contenuto.
'
' - lView : riferimento al controllo listview
'
' - UseHeader: booleano che specifica se il ridensionamento delle
' colonne deve prende in considerazione anche la lunghezza del testo
' delle intestazioni. L'ultima colonna prende lo spazio restante in
' base alla larghezza della listview
'Public Sub ListViewAdjustColumnsWidth(lView As ListView, Optional UseHeader As Boolean)
Dim CurCol As Long
Dim lParam As Long
If UseHeader Then
lParam = LVSCW_AUTOSIZE_USEHEADER
Else
lParam = LVSCW_AUTOSIZE
End If
For CurCol = 0 To lView.ColumnHeaders.Count - 1
SendMessageLong lView.hwnd, LVM_SETCOLUMNWIDTH, CurCol, ByVal lParam
Next
End Sub
' Ridimensiona una colonna del controllo listview in base alla lunghezza
' del testo contenuto.
'
' - lView: riferimento al controllo listview
'
' - Column: colonna che verrą ridimensionata (base 0)
'
' - UseHeader: booleano che specifica se il ridensionamento della
' colonna deve prende in considerazione anche la lunghezza del testo
' dell'intestazione. Se utilizzato sull'ultima colonna, la sua
' larghezza prenderą lo spazio restante in base alla larghezza della listview
'
Public Sub ListViewAdjustColumnWidth(lView As ListView, Column As Long, _
Optional UseHeader As Boolean)
Dim lParam As Long
If UseHeader Then
lParam = LVSCW_AUTOSIZE_USEHEADER
Else
lParam = LVSCW_AUTOSIZE
End If
SendMessageLong lView.hwnd, LVM_SETCOLUMNWIDTH, Column, ByVal lParam
End Sub
Esempio di utilizzo
' ridimensiona la prima colonna tenendo in
' considerazione il testo dell'intestazioneListViewAdjustColumnWidth ListView1, 0, True' ridimensiona tutte le colonne tenendo in
' considerazione il testo delle intestazioniListViewAdjustColumnsWidth ListView1, True' ridimensiona la prima colonna non tenendo in
' considerazione il testo dell'intestazioneListViewAdjustColumnWidth ListView1, 0, False' ridimensiona tutte le colonne non tenendo in
' considerazione il testo delle intestazioniListViewAdjustColumnsWidth ListView1, False