Jump to content
Fórum Script Brasil
  • 0

Mshflexgrid


Gabriel Cabral
 Share

Question

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 to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share



  • Forum Statistics

    • Total Topics
      150.2k
    • Total Posts
      647.5k
×
×
  • Create New...