COMPONENTE GRID PARA VB6

FIAO 06/02/2017 22:46:53
#471454
Boa noite, Galera!

Amigos gostaria de saber se alguém conhece algum componente tipo MSFlexgrid para VB6 que ordene às colunas quando clickar no titulo da coluna(1ªlinha), lembro que já vi um grid em VB6 que quando ao clickar na 1ªLinha da coluna ele ia mudando a ordem dos dados daquela coluna... tipo deixava em ordem Crescente, Decrescente e normal.

Abraços à todos!
KERPLUNK 07/02/2017 01:42:12
#471456
Você pode usar o ADODC e tratar o evento click da coluna do DataGrid assim:

Private Sub grdDataGrid_HeadClick(ByVal ColIndex As Integer)
Dim strColName As String
Static bSortAsc As Boolean
Static strPrevCol As String

strColName = grdDataGrid.Columns(ColIndex).DataField
If strColName = strPrevCol Then


If bSortAsc Then
adoPrimaryRS.Sort = strColName & [Ô] DESC[Ô]
bSortAsc = False
Else
adoPrimaryRS.Sort = strColName
bSortAsc = True
End If
Else
adoPrimaryRS.Sort = strColName
bSortAsc = True
End If

strPrevCol = strColName
End Sub

SINCLAIR 07/02/2017 10:30:00
#471463
Colega FIAO,

Outra opção, além da apresentada pelo colega KERPLUNK, é usar Sgrid 2.0 (vbAccelerator).

http://www.vbaccelerator.com/home/VB/Code/Controls/S_Grid_2/S_Grid_2/article.asp

No link acima você encontra:

  • Instalador
  • OCX (caso queira instalar manualmente e distribuir com teu software)
  • Código fonte se desejar modificar algo

    Na época de VB6 usei muito. Mas é completo, nada precisei modificar para fazer o que desejava que fosse feito.




    Tudo de bom.
  • MARCELO.TREZE 07/02/2017 11:30:15
    #471465
    para o flex grid mesmo

    Private Sub Form_Load()
    Dim Str As String
    Dim i As Integer
    Dim j As Integer

    i = 0: j = 0
    MSFlexGrid1.Rows = 1
    Randomize
    For i = 1 To Int(Rnd() * 10) + 1
    Str = [Ô][Ô]
    For j = 1 To 10
    Str = Str & Chr(65 + Int(Rnd() * 26))
    Next
    MSFlexGrid1.AddItem Int(Rnd() * 100) & vbTab & Str
    Next
    End Sub


    Private Sub MSFlexGrid1_Click()
    Call FlexSort([Ô]A[Ô])
    End Sub


    Private Sub MSFlexGrid1_DblClick()
    Call FlexSort([Ô]D[Ô])
    End Sub


    Sub FlexSort(Mode As String)
    If MSFlexGrid1.Row = 1 Then
    If MSFlexGrid1.MouseCol = 0 Then
    MSFlexGrid1.Col = 0
    If Mode = [Ô]A[Ô] Then
    MSFlexGrid1.Sort = flexSortNumericAscending
    Else
    MSFlexGrid1.Sort = flexSortNumericDescending
    End If
    ElseIf MSFlexGrid1.MouseCol = 1 Then
    MSFlexGrid1.Col = 1
    If Mode = [Ô]A[Ô] Then
    MSFlexGrid1.Sort = flexSortStringAscending
    Else
    MSFlexGrid1.Sort = flexSortStringDescending
    End If
    End If
    End If
    End Sub
    Faça seu login para responder