|
|
|
|
|
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
|
|
|
|
|