Enviar teclas

Delphi

30/08/2005

Olá pessoal.
Faz um bom tempo que não posto aqui no forum.
Lá vai a minha duvida: preciso saber se existe um comando que dispare teclas(letras) pro meu programa. Ex.:
edit.setfocus;
enviartecla(´1´);//portugol
enviartecla(´8´);//portugol

e não :
edit.text := ´18´;

Entenderam?
Agradeço antecipadamente.


Flaviosan

Flaviosan

Curtidas 0

Respostas

Flaviosan

Flaviosan

30/08/2005

Ai gente, resolvi o problema, é só usar a função keybd_event(). Ex.:
edit.setfocus;
keybd_event(VkKeyScan(´1´,0,0,0));
keybd_event(VkKeyScan(´8´,0,0,0));

Mais isso me arrumou mais um problema, como converto string para char, pois faço um copy() em uma string pra me retornar um determido valor, mas não sei como converter essa string retornada em char pra usar com a keybd_event().
Agradeço antecipadamente.


GOSTEI 0
Adriano Santos

Adriano Santos

30/08/2005

  Chr(SuaString);



GOSTEI 0
Flaviosan

Flaviosan

30/08/2005

Olá adriano
Essa função ta dando erro ´incompatible types´.
Eu faço uma variavel string receber o resultado de um copy que deve me retornar somente uma letra. Quando passo essa variavel pra função chr() ela me retorna um erro.
Vc sabe o que esta acontecendo?


GOSTEI 0
Adriano Santos

Adriano Santos

30/08/2005

Como está a sua string?
Passa pra gente o trecho de código que tá usando.


GOSTEI 0
Flaviosan

Flaviosan

30/08/2005

Lá vai:
var
   sCodArea1, sCodArea2 : String;
   chCodArea1, chCodArea1 : Char;
begin
   sCodArea1 := Copy(´(18)0000-0000´, 2, 1);
   sCodArea2 := Copy(´(18)0000-0000´, 3, 1);
   
   chCodArea1 := chr(sCodArea1); //o erro acontece aqui
   ...
   ...

end;



GOSTEI 0
Massuda

Massuda

30/08/2005

sCodArea1 é uma string de tamanho 1. Como toda string é uma sequencia/array de char, você pode fazer assim...
chCodArea1 := sCodArea1[1];
ou seja, não precisa do Chr para converter para Char. Mas como escrevi aí em cima que toda string é uma sequencia/array de char, nem precisa do Copy...
var
  s: string;
...
  s := ´(18)0000-0000´;

  chCodArea1 := s[2];
  chCodArea2 := s[3];
...



GOSTEI 0
Adriano Santos

Adriano Santos

30/08/2005

sCodArea1 é uma string de tamanho 1. Como toda string é uma sequencia/array de char, você pode fazer assim...
chCodArea1 := sCodArea1[1];
ou seja, não precisa do Chr para converter para Char. Mas como escrevi aí em cima que toda string é uma sequencia/array de char, nem precisa do Copy...
var
  s: string;
...
  s := ´(18)0000-0000´;

  chCodArea1 := s[2];
  chCodArea2 := s[3];
...


Eu ia responder com bem menos detalhes, mas já que o [b:d69975b951]Massuda[/b:d69975b951] tah mais rápido que eu...rs....

procedure TForm1.Button2Click(Sender: TObject);
var
   sCodArea1 : String;
   chCodArea2 : Char;
begin

   chCodArea2 := sCodArea1[1];

   Edit1.setfocus;
   keybd_event(VkKeyScan(chCodArea2),0,0,0);
end;



GOSTEI 0
Flaviosan

Flaviosan

30/08/2005

Obrigado Adriano e Massuda, mataram a pau.


GOSTEI 0
Dopi

Dopi

30/08/2005

Ola Flavio,

Porque vc não usa a unit SndKey32.pas (que vem no CD do Delphi)

Veja esse tópico:
http://forum.clubedelphi.net/viewtopic.php?t=66119&highlight=sndkey32


GOSTEI 0
Flaviosan

Flaviosan

30/08/2005

Beleza Daniel, vou dar uma olhada nessa unit, obrigado.


GOSTEI 0
POSTAR