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

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Imagecombo
FELIPE CABRERA
SÃO CETANO DO SUL
SP - BRASIL
ENUNCIADA !
Postada em 07/02/2008 10:20 hs            
Senhores,
 
Tenho a seguinte situação: preciso mostrar em uma combo os fornecedores que com seus respectivos status, sendo que o status é representado por uma imagem. Até aí, o imagecombo atende sem problemas. Montei a função, fiz minhas adpatações e tudo beleza.
 
O problema que eu tenho é na maneira de selecionar. No caso do combobox, digitando parte do nome procurado, a lista é posicionada nesse nome. No imagemcombo isso não acontece. Mesmo que eu digite a letra "p", ele não vai para os nomes que comecem com "p".
 
Tentei várias alteranativas, mas todas um pouco complexas e difíceis de implementar.
 
Alguém teria alguma idéia de como contornar essa situação.
 
Obrigado

Felipe
   
Treze
Pontos: 2843 Pontos: 2843
SÃO VICENTE
SP - BRASIL
ENUNCIADA !
Postada em 07/02/2008 11:41 hs            
poste uma das maneiras que você tenta utilizar o image combo
 
   
ghost_jlp
Pontos: 2843 Pontos: 2843 Pontos: 2843 Pontos: 2843
SÃO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 07/02/2008 17:16 hs            
Veja se assim funciona...
 
Public Function ImageC(ByVal xCombo As ImageCombo, ByVal sTexto As String) As Long
Dim lItens As Long
For i = 1 To xCombo.ComboItems.Count
    If InStr(1, xCombo.ComboItems(i), xCombo.Text, vbTextCompare) = 1 Then
        ImageC = i
        Exit For
    End If
Next i
End Function
 
 
Private Sub ImageCombo1_KeyUp(KeyCode As Integer, Shift As Integer)
Dim idx As Long, tamanho As Long
If (Asc(UCase(Chr(KeyCode))) >= 65 And Asc(UCase(Chr(KeyCode))) <= 90) Or _
   (Chr(KeyCode) >= 0 And Chr(KeyCode) <= 9) Then

    idx = ImageC(ImageCombo1, ImageCombo1.Text)
    tamanho = Len(ImageCombo1.Text)
    If idx > 0 Then
        ImageCombo1.ComboItems(idx).Selected = True
        ImageCombo1.SelStart = tamanho
        ImageCombo1.SelLength = Len(ImageCombo1.Text) - tamanho
    End If
ElseIf KeyCode = vbKeyBack Then
    If ImageCombo1.Text = "" Then Exit Sub
    idx = ImageC(ImageCombo1, ImageCombo1.Text)
    tamanho = Len(ImageCombo1.Text)
    If idx > 0 Then
        ImageCombo1.ComboItems(idx).Selected = True
        ImageCombo1.SelStart = tamanho - 1
        ImageCombo1.SelLength = Len(ImageCombo1.Text)
    End If
    If ImageCombo1.SelLength = Len(ImageCombo1.Text) Then ImageCombo1.Text = ""
End If
End Sub
 
Pelo que testei o único problema é se digitar rápido d+ Emoções
 
Tenta ae, qualquer coisa posta.
 
at+
   
FELIPE CABRERA
SÃO CETANO DO SUL
SP - BRASIL
ENUNCIADA !
Postada em 07/02/2008 18:46 hs            
Prezado Ghost_jlp,
 
Muito obrigado pela sua ajuda! Aplausos.
 
Fiz algumas alterações e funcionou perfeitamente:
 
Criei duas subs e mantive a function:
 
A FiltroImc é colocada no keyUp da ImageCombo passando como parâmetro o objeto e o keyCode.
 
A TextoImc é colocada no LostFocus da ImageCombo para que mesmo saindo utilizando o enter (eu transformo o enter em tab) o item seja selecionado.
 
Seguem as funções como colaboração para as próximas dúvidas! Emoções
 
Muito Obrigado!
 
Felipe Cabrera
 
********************************************************
Sub FiltroImc(ByRef xImagecombo As ImageCombo, Keycode As Integer)
Dim idx As Long, tamanho As Long
   
    With xImagecombo
        If (Asc(UCase(Chr(Keycode))) >= 65 And Asc(UCase(Chr(Keycode))) <= 90) Or (Chr(Keycode) >= 0 And Chr(Keycode) <= 9) Or Keycode = vbKeyBack Then
       
            If Keycode = vbKeyBack Then If .Text = "" Then Exit Sub
           
            idx = ImageC(xImagecombo, .Text)
            tamanho = Len(.Text)
            If idx > 0 Then
                .ComboItems(idx).Selected = True
                .SelStart = tamanho - (IIf((Keycode = vbKeyBack), 1, 0))
                .SelLength = Len(.Text) - (IIf((Keycode = vbKeyBack), 0, tamanho))
            End If
            If Keycode = vbKeyBack Then If .SelLength = Len(.Text) Then .Text = ""
        End If
       
    End With
   
End Sub
 
********************************************************
 
Public Function ImageC(ByVal xCombo As ImageCombo, ByVal sTexto As String) As Long
Dim lItens As Long
Dim i As Integer
    For i = 1 To xCombo.ComboItems.Count
        If InStr(1, xCombo.ComboItems(i), xCombo.Text, vbTextCompare) = 1 Then
            ImageC = i
            Exit For
        End If
    Next i
End Function
 
********************************************************
 
Sub TextoImc(xImagecombo As ImageCombo)
Dim i As Integer
    For i = 1 To xImagecombo.ComboItems.Count
        If xImagecombo.ComboItems(i).Text = xImagecombo.Text Then
            xImagecombo.ComboItems(i).Selected = True
            Exit For
        End If
    Next i
End Sub
 
********************************************************
   
Página(s): 1/1    

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