News
Articoli
Download
Tips & Tricks
Link
Guestbook
 
 
 
 
Copyright© 2004
Ivanov Dmitrij
Evghegnevich
e-mail

Risoluzione consigliata
1024 x 768
 
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 API
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

' 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'intestazione
ListViewAdjustColumnWidth ListView1, 0, True

' ridimensiona tutte le colonne tenendo in
' considerazione il testo delle intestazioni
ListViewAdjustColumnsWidth ListView1, True

' ridimensiona la prima colonna non tenendo in
' considerazione il testo dell'intestazione
ListViewAdjustColumnWidth ListView1, 0, False

' ridimensiona tutte le colonne non tenendo in
' considerazione il testo delle intestazioni
ListViewAdjustColumnsWidth ListView1, False