As tecla denovo..

Delphi

13/02/2008

Dei uma pesquisada e não achei no forum,alguem sabe como capturar duas teclas pressionadas junta?
Valeu.


Kroki

Kroki

Curtidas 0

Respostas

Djjunior

Djjunior

13/02/2008

1º em um form novo crie 2 edits 1 memo
2º a propriedade keyPreview do form coloque true
3º coloque o seguinte código no keyDown do form:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
 Edit1.Text := chr(key);

 if      (ssShift  in Shift)  and (ssAlt    in Shift) then Edit2.Text := ´ ssShift  ssAlt   ´
 else if (ssAlt    in Shift)  and (ssCtrl   in Shift) then Edit2.Text := ´ ssAlt    ssCtrl  ´
 else if (ssCtrl   in Shift)  and (ssLeft   in Shift) then Edit2.Text := ´ ssCtrl   ssLeft  ´
 else if (ssLeft   in Shift)  and (ssRight  in Shift) then Edit2.Text := ´ ssLeft   ssRight ´
 else if (ssRight  in Shift)  and (ssMiddle in Shift) then Edit2.Text := ´ ssRight  ssMiddle´
 else if (ssMiddle in Shift)  and (ssDouble in Shift) then Edit2.Text := ´ ssMiddle ssDouble´
 else if (ssDouble in Shift)  and (ssShift  in Shift) then Edit2.Text := ´ ssDouble ssAlt´
 else if  ssShift  in Shift then Edit2.Text := ´ ssShift ´
 else if ssAlt    in Shift then Edit2.Text := ´ ssAlt   ´
 else if ssCtrl   in Shift then Edit2.Text := ´ ssCtrl  ´
 else if ssLeft   in Shift then Edit2.Text := ´ ssLeft  ´
 else if ssRight  in Shift then Edit2.Text := ´ ssRight ´
 else if ssMiddle in Shift then Edit2.Text := ´ ssMiddle´
 else if ssDouble in Shift then Edit2.Text := ´ ssDouble´
 else Edit2.Text := ´´;
end;


ademais são as outras combinações do shift (deve dar umas 49 hehe) be happy


GOSTEI 0
Djjunior

Djjunior

13/02/2008

ops errei... são +/- 140 já que podem haver até 3 ´shifts´´precionados ao mesmo tempo (shift + ctrl + alt)...

o único inconveniente que notei é que o tab não é capturado por essa função


GOSTEI 0
Kroki

Kroki

13/02/2008

Não é bem isso que preciso,preciso capturar quando for precionado ´h´e´j´ ao mesmo tempo.Valeu pelo esforço.


GOSTEI 0
Kroki

Kroki

13/02/2008

Queimei um pouco de retina na Net e achei oque queria:
...
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
If ((GetKeyState(ord(´H´))AND 128)=128)and((GetKeyState(ord(´J´))AND 128)=128)
then ShowMessage(´H e J Pressionadas´);
end;

end.

...


GOSTEI 0
POSTAR