USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Dicas

  Visual Basic    (ActiveX/Controles/DLL)

Título da Dica:  Escanear um flexgrid para encontrar linhas iguais
Postada em 4/5/2006 por Geronimo            
Para testar desenhe num form vazio, 1 flexgrid, 1 label1 e 1 commandbutton e cole o seguinte código:

Private Sub Command1_Click()

    Label1 = ContaDuplicatas(MSFlexGrid1)
    
End Sub

Private Sub Form_Load()

    With MSFlexGrid1
        .Cols = 4
        .Rows = 1
        .FixedCols = 0
        .AddItem "Norte" & vbTab & "Sul" & vbTab & "Leste" & vbTab & "Oeste"
        .AddItem "Arvore" & vbTab & "Planta" & vbTab & "Folha" & vbTab & "Raiz"
        .AddItem "Vermelho" & vbTab & "Amarelo" & vbTab & "Azul" & vbTab & "Verde"
        .AddItem "Buda" & vbTab & "Shiva" & vbTab & "Jesus" & vbTab & "Allah"
        .AddItem "Basic" & vbTab & "C++" & vbTab & "Java" & vbTab & "Perl"
        .AddItem "Norte" & vbTab & "Sul" & vbTab & "Leste" & vbTab & "Oeste"
        .AddItem "Arvore" & vbTab & "Planta" & vbTab & "Folha" & vbTab & "Raiz"
        .AddItem "Basic" & vbTab & "C++" & vbTab & "Java" & vbTab & "Lisp"
        .AddItem "Norte" & vbTab & "Sul" & vbTab & "Leste" & vbTab & "Oeste"
    End With
    
End Sub

Function ContaDuplicatas(Grid As MSFlexGrid, Optional Eventos As Long = 0) As Long

    ' Use o parâmetro eventos para deixar o seu programa responder a eventos enquanto
    ' esta rotina estiver processando. Quanto maior for o numero mais rápido a rotina
    ' executará e menos tempo para outros eventos sua máquina vai ter.
    ' Se vc deixar eventos = 0 o processamento dessa rotina será o mais rápido possível
    ' mas usará 100% da sua CPU
    
    Dim Inicio As Long
    Dim Final As Long
    Dim I As Long
    Dim J As Long
    
    Final = Grid.Rows - 1
    Inicio = Grid.FixedRows
    
    For I = Inicio To Final
        Linha = MontaLinha(Grid, I)
        For J = I + 1 To Final
            If Linha = MontaLinha(Grid, J) Then
                ContaDuplicatas = ContaDuplicatas + 1
                Exit For
            End If
            
            If Eventos > 0 Then
                If I Mod Eventos = 0 Then
                    DoEvents
                End If
            End If
        Next
    Next
    
End Function

Function MontaLinha(Grid As MSFlexGrid, Indice As Long) As String

    Dim J As Long
    
    MontaLinha = Grid.TextMatrix(Indice, Grid.FixedCols)
    For J = Grid.FixedCols To Grid.Cols - 1
        MontaLinha = MontaLinha & Chr(160) & Grid.TextMatrix(Indice, J)
    Next

End Function
Fonte WWW.codex.com.br
 


CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página