EXIBICAO DE UM DETERMINADO ITEM DO COMBO-BOX

PEPPERRJ 12/02/2010 11:19:46
#334256
Meu programa possui uma tabela com os códigos dos bancos e sua respectiva descrições (p.ex.: 001 - Banco do Brasil) cujos dados são passados para um combo-box em ordem do código do banco.
Quero dar ao usuário a oportunidade de escolher um novo código ou manter o anteriormente digitado.
Para esse efeito, em cima do txt do form abro, por cima, o combo-box, com os seguintes comandos:
txtCodBanco00.Visible = False
cboBancos.Visible = True
cboBancos.Text = cboBancos.List(0)
Call ListDown(cboBancos)
cboBancos.SetFocus
O comando cboBancos(0) determina que o combo-box vai exibir a partir do primeiro item armazenado.
Eu gostaria de abrir o combo-box a partir do código de banco que estava no txt do form (p.ex.: o cod 104 é da Caixa Econômina e seria o terceiro item do combo-box, caso em que o comando ficaria: cboBancos.List (3) )
Lembro que o conteúdo do combo-box deverá permanecer inalterado, o que permitiria ao usuário escolher um item cujo código seria menor que o então exibido.
Não faço a mínima idéia de como fazer isso.
Alguma [Ô]dica[Ô] ?
Antecipadamente grato
FADSYSTEM 12/02/2010 23:33:09
#334302
Resposta escolhida
No Module adicione o código abaixo:

[txt-color=#0000f0]Public Declare Function SendMessageStr Lib [Ô]user32[Ô] Alias [Ô]SendMessageA[Ô] _
(ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As String) As Long

[ô]ComboBox
Public Const CB_SHOWDROPDOWN = &H14F [ô]Abrir a lista do ComboBox
Public Const CB_LIMITTEXT& = &H141 [ô]ComboBox max texto
Public Const CB_FINDSTRINGEXACT = &H158 [ô]Localizar string [ô]igual a[ô]
Public Const CB_FINDSTRING = &H14C [ô]Localizar string [ô]que contenha a[ô][/txt-color]

No Form faça o teste:

[txt-color=#0000f0]Private Sub Command1_Click()
Dim Index As Integer
Index = SendMessageStr(Combo1.hwnd, CB_FINDSTRING, 0&, Text1.Text)
Combo1.ListIndex = Index
SendMessageStr Combo1.hwnd, CB_SHOWDROPDOWN, True, 0&
End Sub[/txt-color]

Observe que usei CB_FINDSTRING para localizar parte do texto, que no caso é o número do banco, para localizar o texto completo use CB_FINDSTRINGEXACT ao invés de CB_FINDSTRING, porém na caixa de texto de conter o código mais o nome do banco.

Atenciosamente,

Fabio Araujo Damascena
PEPPERRJ 18/02/2010 09:24:56
#334656
Fabio,

Muito obrigado.
Funcionou perfeitamente.

SDS/Sergio
Tópico encerrado , respostas não são mais permitidas