Ir para conteúdo
Fórum Script Brasil
  • 0

Mshflexgrid


Gabriel Cabral

Pergunta

Olá pessoal.....

alguém aí sabe me dizer como eu faço uma busca rápida no mshflexgrid....

assim....

eu sei fazer com uma listbox....

tendo uma textbox e uma list com vários nomes, conforme eu digito uma palavra na textbox, ela vai apontando na list...

e fiz isso desa maneira

em GENERAL coloquei

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As _
Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Any) As Long

Private Const LB_FINDSTRING = &H18F
e no evento change da textbox, coloquei
Private Sub txtClientes_Change()
   lstClientes.ListIndex = SendMessage(lstClientes.hwnd, LB_FINDSTRING, -1, ByVal CStr(txtClientes.Text))
End Sub

é possivel fazer isso num mshflexgrid???

que conforme eu digite algo na texbox ele va apontando um registro no mshflexgrid ao invés da listbox....

obrigado

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Sim, você pode fazer algo assim (onde HF1 é uma Hierarchical Flexgrid):

Private Sub txtBusca_Change()
    achou = False
    HF1.Col = 1
    For i = 1 To HF1.Rows - 1
        If HF1.TextMatrix(i, 1) Like txtBusca.Text & "*" Then
            HF1.Row = i
            HF1.TopRow = i
            achou = True
            Exit For
        End If
    Next i
    If Not achou Then
        txtBusca.BackColor = vbRed
        txtBusca.ForeColor = vbWhite
    Else
        txtBusca.BackColor = vbWhite
        txtBusca.ForeColor = vbBlack
    End If
End Sub

A parte do final (onde a cor da caixa de texto é alterada) é opcional, mas é legal para dar um aviso ao usuário de que ele não encontrará nada a partir do que está escrito.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
Sim, você pode fazer algo assim (onde HF1 é uma Hierarchical Flexgrid):

Private Sub txtBusca_Change()
    achou = False
    HF1.Col = 1
    For i = 1 To HF1.Rows - 1
        If HF1.TextMatrix(i, 1) Like txtBusca.Text & "*" Then
            HF1.Row = i
            HF1.TopRow = i
            achou = True
            Exit For
        End If
    Next i
    If Not achou Then
        txtBusca.BackColor = vbRed
        txtBusca.ForeColor = vbWhite
    Else
        txtBusca.BackColor = vbWhite
        txtBusca.ForeColor = vbBlack
    End If
End Sub

A parte do final (onde a cor da caixa de texto é alterada) é opcional, mas é legal para dar um aviso ao usuário de que ele não encontrará nada a partir do que está escrito.

Abraços,

Graymalkin

Então Graymalkin, fiz isso mas não ta dando nada....

a única coisa que acontece é a txtbox ficar com fundo vermelho e fonte branca...

eu queria que ao digitar na textbox, axasse e marcasse no MSHFlexGrid

mas parece que não ta axando nada...

o que pode estar acontecendo??

obrigado

Link para o comentário
Compartilhar em outros sites

  • 0

Realmente não está encontrando mesmo (se a caixa está ficando vermelha, esse é o motivo). Mas, você está digitando o *início* do que deve ser procurado? Porque se não for o início você pode colocar um * (asterisco) na frente do texto no código:

If HF1.TextMatrix(i, 1) Like "*" & txtBusca.Text & "*" Then

Experimente mudar essa linha e veja se dá certo.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
Realmente não está encontrando mesmo (se a caixa está ficando vermelha, esse é o motivo). Mas, você está digitando o *início* do que deve ser procurado? Porque se não for o início você pode colocar um * (asterisco) na frente do texto no código:

If HF1.TextMatrix(i, 1) Like "*" & txtBusca.Text & "*" Then

Experimente mudar essa linha e veja se dá certo.

Abraços,

Graymalkin

aí Graymalkin....

percebi onde estava o problema....

no numero da coluna....não era 1, mas 2

e assim....na MSHFlexGrid está tudo em maiusculo...

tem como eu colocar um UCase na textbox para ao digitar, as letras forem ficando maiusculas e assim sendo encontrado o desejado na MSHFlexGrid????

se tem, onde devo colocar??

obrigado

Coloquei

txtBuscaMSH.Text = UCase(txtBuscaMSH.Text)

no evento CHANGE da textbox....

o UCase funcionou.....as letras foram ficando maiusculas conforme digitadas, mas a ordem delas foram mudando, e consequentemente nada foi encontrado na MSHFlexGrid

por exemplo.....ao digitar gabriel, a text ficou com o texto LEIRBAG

Tem como a ordem ficar certa ???? :P

obrigado

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...