Cardoso G
|
PATOS DE MINAS MG - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 21/02/2008 11:02 hs
formata todos com 7 digitos
|
|
|
|
Treze
|
SÃO VICENTE SP - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 21/02/2008 11:36 hs
gostaria d einformar os colegas que tem como se fazer um listview zebrado veja o código em um módulo cole este código Option Explicit
Public Const NM_CUSTOMDRAW = (-12&) Public Const WM_NOTIFY As Long = &H4E& Public Const CDDS_PREPAINT As Long = &H1& Public Const CDRF_NOTIFYITEMDRAW As Long = &H20& Public Const CDDS_ITEM As Long = &H10000 Public Const CDDS_ITEMPREPAINT As Long = CDDS_ITEM Or CDDS_PREPAINT Public Const CDRF_NEWFONT As Long = &H2& Public Type NMHDR hWndFrom As Long idFrom As Long code As Long End Type Public Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type Public Type NMCUSTOMDRAW hdr As NMHDR dwDrawStage As Long hDC As Long rc As RECT dwItemSpec As Long uItemState As Long lItemlParam As Long End Type Public Type NMLVCUSTOMDRAW nmcd As NMCUSTOMDRAW clrText As Long clrTextBk As Long End Type
Public g_addProcOld As Long Public g_MaxItems As Long Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (lpDest As Any, lpSource As Any, ByVal cBytes&) Public Declare Function CallWindowProc& Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc&, ByVal hwnd&, ByVal Msg&, ByVal wParam&, ByVal lParam&) Public Function WindowProc(ByVal hwnd As Long, ByVal iMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Select Case iMsg Case WM_NOTIFY Dim udtNMHDR As NMHDR CopyMemory udtNMHDR, ByVal lParam, 12& With udtNMHDR If .code = NM_CUSTOMDRAW Then Dim udtNMLVCUSTOMDRAW As NMLVCUSTOMDRAW CopyMemory udtNMLVCUSTOMDRAW, ByVal lParam, Len(udtNMLVCUSTOMDRAW) With udtNMLVCUSTOMDRAW.nmcd Select Case .dwDrawStage Case CDDS_PREPAINT WindowProc = CDRF_NOTIFYITEMDRAW Exit Function Case CDDS_ITEMPREPAINT If Val(Form1.ListView1.ListItems(.dwItemSpec + 1).Text) 100 Then udtNMLVCUSTOMDRAW.clrText = vbBlack Else udtNMLVCUSTOMDRAW.clrText = vbRed End If 'I used Listitem.Tag Property To Set color, though you can use Text etc. udtNMLVCUSTOMDRAW.clrTextBk = Val(Form1.ListView1.ListItems(.dwItemSpec + 1).Tag) CopyMemory ByVal lParam, udtNMLVCUSTOMDRAW, Len(udtNMLVCUSTOMDRAW) WindowProc = CDRF_NEWFONT Exit Function End Select End With End If End With End Select WindowProc = CallWindowProc(g_addProcOld, hwnd, iMsg, wParam, lParam) End Function
'No formulário. coloque esse código: Option Explicit Private Const GWL_WNDPROC As Long = (-4&) Private Declare Function SetWindowLong& Lib "user32" Alias "SetWindowLongA" (ByVal hwnd&, ByVal nIndex&, ByVal dwNewLong&)
Private Sub Form_Load() With ListView1 .FullRowSelect = True .View = lvwReport .ColumnHeaders.Add , , "Item Column" .ColumnHeaders.Add , , "Subitem 1" .ColumnHeaders.Add , , "Subitem 2" Dim i& For i = 1 To 30 With .ListItems.Add(, , CStr(Int(200 * Rnd))) .SubItems(1) = "Subitem 1" .SubItems(2) = "Subitem 2" .Tag = QBColor(15) If i Mod 2 Then .Tag = CStr(QBColor(14)) End With Next g_MaxItems = .ListItems.Count - 1 End With g_addProcOld = SetWindowLong(hwnd, GWL_WNDPROC, AddressOf WindowProc) End Sub
Private Sub Form_Unload(Cancel As Integer) Call SetWindowLong(hwnd, GWL_WNDPROC, g_addProcOld) End Sub
|
|
|
Treze
|
SÃO VICENTE SP - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 21/02/2008 11:39 hs
Agora para ordenar eis a melhor forma carregue se listview normalmente agora cole este código Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader) ' Este código ordena a lista ' por qualquer coluna. Se a lista já estiver ordenada por esta coluna, ' a ordem será invertida. With ListView1 If (ColumnHeader.Index - 1) = .SortKey Then .SortOrder = (.SortOrder + 1) Mod 2 Else .Sorted = False .SortOrder = 0 .SortKey = (ColumnHeader.Index - 1) .Sorted = True End If End With End Sub de um click sobre a coluna pela qual deseja ordenar o listview e pronto ordem em tempo de execução
|
|
|
Alex Xavier
não registrado
|
|
ENUNCIADA !
|
|
|
Postada em 19/08/2008 13:55 hs
Meus parabéns treze. Espero que tenha treze anos.
|
|
|
ventana
|
SANTOS SP - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 20/08/2008 16:58 hs
Ola Eu tenho uma rotina para ordenar qualquer campo do ListView (numeros,strings,Datas), posso lhe enviar mas somente a noite. Esse exemplo alias esta em uma das respostas que eu recebi aqui mesmo no VBWEB. Quando a mudar a cor das linhas, realmente o FlexGrid e muito melhor para isso, pois me parece que so da para mudar a cor da fonte. Um Abraco
|
|
|
|
Postada em 20/08/2008 17:02 hs
Felipe, se vc nao quiser colocar os zeros a esquerda pra ordenar, é so vc criar uma coluna no list com o tamanho zero , ou seja, uma coluna invisivel, e colocar zeros a esquerda nela, ai vai ficar ordenado certinho, mas vai aparecer so a coluna que esta com o 3,4,5,6,7 e a que esta ordenando mesmo nao vai aparecer ok
|
|
|
|