TAMANHO COLUNA LISTVIEW
Como posso bloquear o tamanho da coluna no Listview, para que não permita ao usuário aumentar ou diminuir o tamanho?
Com a rotina abaixo acaba retirando a primeira linha do Listview, e não é isso que quero:
lvwLista.HideColumnHeaders = True
Sugestões?
www.vbforums.com/showthread.php?743049-RESOLVED-Prevent-User-From-Resizing-Column-Width-in-ListView
www.vbforums.com/showthread.php?743341-VB6-Lock-ListView-Columns
Citação::
Cara, acho que você vai ter que fazer isso via API. Veja se isso aqui te ajuda:
www.vbforums.com/showthread.php?743049-RESOLVED-Prevent-User-From-Resizing-Column-Width-in-ListView
www.vbforums.com/showthread.php?743341-VB6-Lock-ListView-Columns
Oi JABA, encontrei esta rotina, porém ele apresenta o erro abaixo na variável [ô]tNMH[ô]:
Private Function WindowProc(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Dim tNMH As NMHDR
Dim tNMHEADER As NMHEADER
Dim tITEM As HDITEM
Select Case Msg
Case WM_NOTIFY
[ô] COPY THE NOTIFY MESSAGE HEADER TO A HEADER STRUCTURE
CopyMemory tNMH, ByVal lParam, Len(tNMH)
Select Case tNMH.code
Case HDN_DIVIDERDBLCLICKA
[ô]IF THE USER IS TRYING TO DOUBLECLICK A COLUMN HEADER...
[ô]EXTRACT INFORMATION ABOUT THE HEADER BEING SIZED
CopyMemory tNMHEADER, ByVal lParam, Len(tNMHEADER)
[ô]GET THE INFO ABOUT THE HEADER (IE. INDEX#)
[ô]DONT ALLOW COLUMNS 1 OR 2 TO BE DOUBLECLICKED
If (tNMHEADER.iItem < 3) = True Then
WindowProc = 1
Exit Function
ElseIf (tNMHEADER.iItem = 5) = True Then [ô]DURATION
WindowProc = 1
Exit Function
End If
Case HDN_BEGINTRACK
[ô]IF THE USER IS TRYING TO SIZE A COLUMN HEADER...
[ô]EXTRACT INFORMATION ABOUT THE HEADER BEING SIZED
CopyMemory tNMHEADER, ByVal lParam, Len(tNMHEADER)
[ô]GET THE INFO ABOUT THE HEADER (IE. WIDTH)
CopyMemory tITEM, ByVal tNMHEADER.lPtrHDItem, Len(tITEM)
[ô]DONT ALLOW ZERO OR COLUMNS 1 OR 2 TO BE SIZED
If (tNMHEADER.iItem < 3) = True Then [ô]TYPE & STATUS
WindowProc = 1
Exit Function
ElseIf (tNMHEADER.iItem = 5) = True Then [ô]DURATION
[ô]If (tITEM.mask And HDI_WIDTH) = HDI_WIDTH And tITEM.cxy = 27 Then
WindowProc = 1
Exit Function
[ô]End If
End If
End Select
Case WM_DESTROY
[ô]REMOVE SUBCLASSING WHEN LISTVIEW IS DESTROYED (FORM UNLOADED)
WindowProc = CallWindowProc(mlPrevWndProc, hWnd, Msg, wParam, lParam)
Call SetWindowLong(hWnd, GWL_WNDPROC, mlPrevWndProc)
Exit Function
End Select
[ô]CALL DEFAULT WINDOW HANDLER
WindowProc = CallWindowProc(mlPrevWndProc, hWnd, Msg, wParam, lParam)
End Function
Sugestão?
Citação::
Esse código foi tirado daqui: vbnet.mvps.org/index.html?code/subclass/lvheadernotifications.htm, tem tudo o que você precisa aÃ.
Oi JABA, não rolou, como já havia olhado antes neste link e como é vb.net não consegui adaptar para o vb6.
Citação:Oi JABA, não rolou, como já havia olhado antes neste link e como é vb.net não consegui adaptar para o vb6.
Está dizendo lá que o código é para vb5 e vb6.
Citação::
Oi JABA, não rolou, como já havia olhado antes neste link e como é vb.net não consegui adaptar para o vb6.
Está dizendo lá que o código é para vb5 e vb6.
Oi JABA, coloquei no módulo e no form conforme estava explicando no artigo e tava apresentando erro na declaração das variáveis.
Citação::
Não lembro como faz para a IDE aceitar [Ô]STATIC[Ô] no vb6, mas você pode substituÃ-lo por um [Ô]DIM[Ô] que irá funcionar.
Oi JABA, já tinha tentado com o Dim, Public e não deu.
Citação::
Eu montei aqui e funcionou perfeitamente. Tentei dar um Resize na última coluna e ele não deixou. Pra funcionar, tem que habilitar clicando no botão. Faça o teste aà na sua máquina.
Ok JABA, vou realizar os testes com base em seu exemplo hoje a noite e retorno com a resposta aqui.