Fórum Chamar Um Método Ao Pressionar a Tecla Enter De Um ComboBox #206441
14/01/2004
0
//O Método Abaixo, chama o Método GetData Ao Se Pressionar a Tecla Enter Do
ComboBox.
Procedure Tform1.ComboBox1.KeyPress(Sender:Toboject;Var Key: Char);
Begin
If Key=#13 Then
GetData;
End;
//O Método GetData Depende do Valor Combobox
Procedure GetData;
Begin
ShowMessage(Form1.ComboBox1.Text);
End;
O Problema Que Dá, é Que o Valor Que Aparece na Mensagem ShowMessage, Não é o Valor Selecionado na Lista Suspensa, Mas Sim o Valor Atual Do Combobox.
Obs:Na Realidade O Método GetData A Ser Executado Não é Tão Trivial Assim, Só a Título de Exemplo Escrevi Este Método Contendo Uma Instrução APENAS.
Já Tentei De Tudo, Ate Mesmo Chamar Uma Mensagem Personalizada Do Windows, Usando a Função Da API PostMessage.Não Deu Resultado....Mas Acredito Na
Marco Salles
Curtir tópico
+ 0Posts
14/01/2004
Anorex
Gostei + 0
14/01/2004
Marco Salles
Evento OnSelect De Quem :?: :?:
Quero Frisar Novamente [color=red:8b186ffbe2]Que ´ O Problema Existe, Que O Método a Ser Chamado\Executado Depende do Valor Do Combobox...E O Valor Do ComboBox Apresentado Para o Método Não É, 0 SELECIONADO e Sim o Valor Do Combobox Atual ´[/color:8b186ffbe2]
Como Mudar Isto,Quando Estamos Processando Um Evento Interno Do Próprio Combobox (Que No Meu Caso é o Evento ONKEYPRESS:?:
Amigos, Acredito Na Criatividade Do Pessoal Do Forum.E Agradeço Desde Já
Gostei + 0
14/01/2004
Fórum Vini
não sei se entendi muito bem o seu problema, mas tente isso:
Showmessage(Combobox1.Items[Combobox1.ItemIndex]);
Ele pega o valor do item selecionado.
Espero ter ajudado.
Vinicius.
Gostei + 0
14/01/2004
Marco Salles
E O QUE ACONTECE COM O CONTEUDO DO COMBOBOX :?: NADA,ABSOLUTAMENTE NADA :!: Então o Que Estou Querendo é : Após o Item Estiver Selecionado, e Exeutando UM <ENTER> , Este Item Selecionado Aparecesse No COMBOBOX. Dá Para Fazer Isto Ou é Impossível :?:
Gostei + 0
14/01/2004
Anorex
Fiz Do Jeito Que Você Descreveu O Que Queria E Saiu Do Jeito Que Você Está Querendo....... :!: :!: :!:
Gostei + 0
14/01/2004
Fábio Valente
Sem mais,
Gostei + 0
14/01/2004
Anorex
Gostei + 0
14/01/2004
Marco Salles
No Meu Computador Isto Não Acontece. Quando Eu Seleciono Um Item Do Suspenso do Combobox e Dou Enter, Não Muda o Conteudo Do Combo, Mesmo Que Eu Escreva a Istruçao Sugerida No Evento OnkeyPress....
procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
ComboBox1.Text := ComboBox1.Items[ComboBox1.ItemIndex];
end;
Agora Ja a Citação Do Nervouz :´O problema, pode ser, não testei.... que você está pegando o valor ´Text´ do combo ao pressionar a Tecla.... ou seja, o próprio componente não selecionou, ainda, o ítem que pressionou.... possivelmente a dica anterior do .Vini. resolverá!!!´
ACREDITO QUE DEVE SER ESTE O PROBLEMA, ESTOU AQUI PARA PEDIR UMA MANEIRA DED RESOLVER. COMO VOCE DISSE :´QUE NÃO TESTOU´,(MAS EU TESTEI) a Dica Do Vini Endossada Pelo Anorex Infelismente Não ResolveU... Amigos , Como Resolver :?:
Gostei + 0
14/01/2004
Paulo_amorim
O Text do Combo soh sera atualizado APOS o evento ONKEYPRESS
tente um evento posterior, por exemplo OnChange
Se vc coloca o mouse sobre uma opçao e clica enter mas o TEXT nao eh mudado, tente mudar a propriedade STYLE do ComboBox para DropDownList
Gostei + 0
14/01/2004
Paulo_amorim
eu tentei aqui simular oq ue voce falou
com a propriedade Style setada como DROPDOWNLIST ele funcionou
o unico inconveniente eh que o usuario nao vai poder digitar o valor (apesar que a cada letra digitada ele vai para o primeiro registro encontrado)
Gostei + 0
14/01/2004
Marco Salles
Meu Amigo Paulo, Com Esta Propiedade Selecionada(Style setada como DROPDOWNLIST) Irá Funcionar Do Jeito Que Eu Quero, [color=red:d003a19869]Mas o Problema é Que Eu Preciso Editar Valores No Combo. [/color:d003a19869]E Quanto a Sua Primeira Afirmação:´O Text do Combo so sera atualizado APOS o evento ONKEYPRESS tente um evento posterior, por exemplo OnChange ´,Posso Afirmar Que Ele Não Atualiza.[color=red:d003a19869]SÓ ATUALIZA COM A FUNÇÃO SHOWMESSAGE[/color:d003a19869].
Veja o Exemplop Abaixo Com O mesmo Form, Mesmo Combo:
procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
ComboBox1.Text := ComboBox1.Items[ComboBox1.ItemIndex];
end;
//Escrevi um Evento OnChange Como V.C Sugeriu
procedure TForm1.ComboBox1Change(Sender: TObject);
var
texto:String;
begin
Texto:=ComboBox1.Text;
end;
end.
Conclusão:O TEXTO DO COMBO NÃO É ATUALIZADO.MAS SE COLOCAR UMA FUNÇÃO SHOWMESSAGE,AÍ A HISTÓRIA É DIFERENTE.MAS O USUÁRIO NÃO QUER FICAR VENDO MENSAGEM NA TELA,TODA VEZ QUE ELE APERTAR <ENTER>. SE ALGUEM CONHECE UMA OUTRA CHAMADA
QUE SEJA INTERNA E NÃO RETORNE NADA DE INTERFACE PARA O USUÁRIO,EU ACHO QUE ESTE PODE SER UM DOS CAMINHOS.....
OBS:ESTA ESTRATÉGIA EU TENTEI USAR USANDO UMA CHAMADA A API DO WINDOS FUNÇÃO POSTMESSAGE(COMO EU DESTAQUEI NO INÍCIO DO TÓPICO)
Marco Escreveu No Início Do Tópico:´Já Tentei De Tudo, Ate Mesmo Chamar Uma Mensagem Personalizada Do Windows, Usando a Função Da API PostMessage.Não Deu Resultado´
Continuo Ainda Acreditando na Criatividade dos Meus Amigos Do Forum...
Gostei + 0
14/01/2004
Marco Salles
Gostei + 0
14/01/2004
Fabio.hc
Tente assim:
var Form1: TForm1; vtexto:string; procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char); begin vtexto:=ComboBox1.Items[ComboBox1.ItemIndex]; end; procedure TForm1.ComboBox1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = VK_RETURN then ComboBox1.Text:=vtexto; end;
Gostei + 0
14/01/2004
Marco Salles
P:S Quero Agradecer a Todos Que Atê Aqui Contribuiram Para O
Equacionamento Deste Tópico e Em Particular Parabenizar Ao ´Fabio.HC
Por Resolve-lo Da Maneira Como Ele Foi Colocado. Espero Que Ele
Contribua Mais Uma Ves Com Os Seus Conhecimentos e Mostre Como
Matou a ´Cobra´ :P
Gostei + 0
15/01/2004
Fabio.hc
[quote:baadb489f4=´Marco Salles´]O Que Esta Variável Tem [/quote:baadb489f4]É para ser usada no KeyUp e KeyDown.
[quote:baadb489f4=´Marco Salles´]e Porque Voce Escolheu o Evento ComboBox1KeyUp[/quote:baadb489f4]Este evento é acionado quando solta a tecla.
[quote:baadb489f4=´Marco Salles´]Dá Para MostrarComo Matou a ´Cobra´.[/quote:baadb489f4]Quando clica no combo e abre caixa e passa o mouse sobre os itens a variavel itemindex é a incrementada com a posição do item selecionado, quando é pressionado a tecla enter o itemindex passa a ser -1, por isso o combo fica vazio, antes disso o conteudo do combo é armazenado na variavel vtexto, quando a tecla enter é solta, aciona o evento KeyUp e a variavél vtexto é armazenda em combo1.text.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)