Executar evento OnChange em ComboBox via mouse

05/01/2006

Antes de mais nada, gostaria de solicitar desculpas em postar uma dúvida tão banal, porém não consegui encontrar nenhuma solução adequada neste fórum ou em outras fontes.
Em minha aplicação, um determinado Form contém um DBGrid que exibe uma listagem de municípios cuja origem dos dados é uma instrução SQL, sendo que a sintaxe da referida consulta sofre alterações (em tempo de execução) de acordo com o conteúdo de uma ComboBox cujos itens são as siglas dos estados brasileiros, de modo que se o usuário especificar, por exemplo, ´SP´, o DBGrid exibirá uma listagem com todas as cidades daquele Estado; para tanto, implementei a codificação adequada no evento OnChange da referida Combo, contudo o processo só é executado corretamente se o usuário alterar o conteúdo do componente via teclado, mas não se selecionar o item pelo mouse. Ao pesquisar o Help do Delphi, fui informado que o evento OnChange não ocorre em Combos do estilo DropDownList (que é exatamente o meu caso), e recomenda o uso do evento OnSelect (que sequer é mencionado no Object Inspector). Cheguei a alterar o Style do componente, mas o problema ainda persiste. Alguém poderia me dizer o que está havendo de errado?
Aproveitando o ensejo, também percebi que após o evento DropDown, as teclas direcionais (setas Acima e Abaixo) não percorrem os itens da Combo. Esse é o comportamento padrão em Combos Delphi? É necessário codificação para executar esta tarefa? Faço tais indagações porque ainda sou inexperiente nesta linguagem de programação.
Desde já, agradeço a atenção dispensada


Spiritwwwalker

Respostas

05/01/2006

Caninha51

Spirit, tu tah usando combobox ou dbcombobox?
Eu testei aki com um combobox com a propriedade style como csDropDownList. Povoei os items dele, coloquei uma label no form, e no evento onchange do combobox coloquei pra ele jogar sua propriedade text pro caption da label. Funcionou perfeitamente tanto no mouse como no teclado.


Responder Citar

06/01/2006

Spiritwwwalker

Prezado caninha51:

Eu utilizava um DBComboBox cujo evento OnChange, não sei porque razão, não ocorria quando um item era selecionado via mouse. Mas segui sua sugestão e substituí o componente para um ComboBox e tudo passou a funcionar perfeitamente. Ocorre, porém, que não demorará muito e serei obrigado a utilizar um DBComboBox, seja nesta, seja em outras aplicações. Tem idéia do motivo dessa anomalia e como sana-la? Agradeço desde já a atenção dispensada.


Responder Citar

06/01/2006

Caninha51

Se for usar um componente dbXXXXX eh melhor trabalhar em cima dos eventos do dataset, como o afterscroll por exemplo.


Responder Citar