Fórum Enviar teclas #293631

30/08/2005

0

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

Responder

Posts

30/08/2005

Flaviosan

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.


Responder

Gostei + 0

30/08/2005

Adriano Santos

  Chr(SuaString);



Responder

Gostei + 0

30/08/2005

Flaviosan

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?


Responder

Gostei + 0

30/08/2005

Adriano Santos

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


Responder

Gostei + 0

30/08/2005

Flaviosan

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;



Responder

Gostei + 0

30/08/2005

Massuda

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];
...



Responder

Gostei + 0

30/08/2005

Adriano Santos

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;



Responder

Gostei + 0

30/08/2005

Flaviosan

Obrigado Adriano e Massuda, mataram a pau.


Responder

Gostei + 0

30/08/2005

Dopi

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


Responder

Gostei + 0

30/08/2005

Flaviosan

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


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar