Chamando um evento OnKeyDown

Delphi

06/01/2007

Boa Tarde Galera!

Gostaria de saber como que eu faço para chamar um evento onKeyDown através de outro procedimento. Na verdade eu não sei o que colocar no parâmetro Shift: TShiftState.


Desde já Obrigado!


Ruyoutor

Ruyoutor

Curtidas 0

Respostas

Raserafim

Raserafim

06/01/2007

o TShiftState pode ser:
ssShift, ssAlt, ssCtrl, ssLeft, ssRight, ssMiddle, ssDouble


GOSTEI 0
Ruyoutor

Ruyoutor

06/01/2007

É depois que eu postei a dúvida eu vi essas opções mas quando eu declaro ele me retorna um erro relacionando a variavle Key que é passada como parâmetro.

teria como alguem declarar uma chamada desse tipo para que eu possa vêr

Na verdade o q eu quero é inserir um valor de uma tecla num edit sem precisar clicar na mesma.

Desde de já obrigado


GOSTEI 0
Rodc

Rodc

06/01/2007

O parâmetro Key deve ser uma variável.
Não sei a sintaxe está toda correta, mas segue um exemplo.

var MeuKey: word;
begin
    MeuKey := VK_RETURN;
    Edit1KeyDown(Edit1, MeuKey, ssCtrl);
end;



GOSTEI 0
Ruyoutor

Ruyoutor

06/01/2007

Muito obrigado meu amigo!

Acho que é isso mesmo por causa dessa chamada eu procurei saber um pouco mas sobre passagem de parametros por referêrencia e tinha chagado a essa conclusão também


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

06/01/2007

Na verdade o q eu quero é inserir um valor de uma tecla num edit sem precisar [b:1ce54c346e]clicar[/b:1ce54c346e] na mesma.
sem clicar ou sem pressionar a tecla???

se eu entendi direito, você quer simular o pressionamento da tecla, certo? se for isso, faça assim:
var
   letra: word;
begin
   letra := ord(´A´);

   if not Edit1.Focused then Edit1.SetFocus;
//   Edit1.SelStart := length(Edit1.Text);
   keybd_event( letra, MapVirtualKey(letra, 0), 0, 0 );
end;
no exemplo acima a linha Edit1.SelStart está desabilitada porque o código está no evento de um speedbutton (que não recebe foco). se você puser esse código no evento de um componente que recebe foco, como um button ou bitbutton, essa linha deverá ser habilitada ou a propriedade AutoSelect do EditX deverá ser False.


GOSTEI 0
POSTAR