SELECIONAR LINHA NO MSFLEXGRID DE ACORDO COM TEXTO
marcelo testei esse codigo, mais não acontece nada, não da erro, não seleciona a linha, não acontece nada, estranho. acho que esse codigo ta certo, mais acho que tem que ao seleciona a linha, muda a cor dele
Pessoal esse codigo aki deu certo.
With MSFlexGrid1
For F = 1 To .Rows - 1
If .TextMatrix(F, 0) = txtPesquisa1.Text Then
.Row = F
MSFlexGrid1.Col = 0
MSFlexGrid1.TopRow = F
Exit For
End If
Next F
End With
mais como faço pra deixa essa linha toda azul -> MSFlexGrid1.TopRow
With MSFlexGrid1
For F = 1 To .Rows - 1
If .TextMatrix(F, 0) = txtPesquisa1.Text Then
.Row = F
MSFlexGrid1.Col = 0
MSFlexGrid1.TopRow = F
Exit For
End If
Next F
End With
mais como faço pra deixa essa linha toda azul -> MSFlexGrid1.TopRow
Ou você muda a propriedade do flexgrid para selecionar só a linha inteira e não por células, ou então após achar a linha desejada, faz outro loop, percorrendo coluna por coluna e pintando o fundo dessas células da linha. O problema aqui é que pintar o fundo, tem que ter outra rotina que volte a cor padrão, quando selecionar outra linha. Isso é um pouco mais trabalhoso.
Opá pessoal, pronto o codigo abaixo, estar quasse como eu quero, ta faltando apenas um outro detalhe.
With MSFlexGrid1
For F = 1 To .Rows - 1
If .TextMatrix(F, 0) = txtPesquisa1.Text Then
.Row = F
MSFlexGrid1.Col = 0
MSFlexGrid1.TopRow = F
MSFlexGrid1.CellBackColor = vbRed
Exit For
End If
Next F
End With
neste codigo o filtro através do campo txtPesquisa1, só faz o filtro se o nome estiver correto e completo, gostaria que da maneira que fosse digitando fosse filtrando, ae assim ficava como eu quero.
With MSFlexGrid1
For F = 1 To .Rows - 1
If .TextMatrix(F, 0) = txtPesquisa1.Text Then
.Row = F
MSFlexGrid1.Col = 0
MSFlexGrid1.TopRow = F
MSFlexGrid1.CellBackColor = vbRed
Exit For
End If
Next F
End With
neste codigo o filtro através do campo txtPesquisa1, só faz o filtro se o nome estiver correto e completo, gostaria que da maneira que fosse digitando fosse filtrando, ae assim ficava como eu quero.
verdade, ficou cerca de 2 segundos mais rapido.
José ir filtrando como você quer só tem uma forma, usar no change do textbox uma nova consulta ao banco e preencher o grid com o resultado encontrado. O problema disso é o grande volume de dados trafegados na rede a cada digitação de um caracter, além disso se o programa for muito usado e por várias pessoas, talvez tenha problemas de congestionamento no servidor e muita lentidão nas estações, claro levando em conta vários fatores: Número de usuário simultâneos, quantidade de acesso, tamanho da tabela acessada, velocidade do servidor e estações, etc..
Uma alternativa para tentar ajudar nesse caso (meia-boca) seria fazer isso:
Assim ele procuradia somente nos primeiros caracteres e com quantos você digitar, não precisando digitar o nome completo.
Pode até melhorar um pouco, oferecendo opções de como pesquisar, pelas iniciais ou em qualquer parte do campo (célula), para isso usaria um Option Button de configuração, selecionado antes de pesquisar, onde o padrão poderia ser pelas iniciais. Nesse caso teria de usar uma função de procura em qualquer parte do texto pesquisado.
Uma alternativa para tentar ajudar nesse caso (meia-boca) seria fazer isso:
Dim iQdeCaracteres As Integer
iQdeCaracteres = Len(txtPesquisa1.Text)
If Mid(.TextMatrix(F, 0),1,iQdeCaracteres) = txtPesquisa1.Text Then
Assim ele procuradia somente nos primeiros caracteres e com quantos você digitar, não precisando digitar o nome completo.
Pode até melhorar um pouco, oferecendo opções de como pesquisar, pelas iniciais ou em qualquer parte do campo (célula), para isso usaria um Option Button de configuração, selecionado antes de pesquisar, onde o padrão poderia ser pelas iniciais. Nesse caso teria de usar uma função de procura em qualquer parte do texto pesquisado.
beleza, vou fazer isso pra ver se fica pampa. muito obrigado.
Tópico encerrado , respostas não são mais permitidas