2
0

Unit1.pas 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. unit Unit1;
  2. interface
  3. uses
  4. System.SysUtils, System.Classes,
  5. Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs,
  6. Vcl.StdCtrls, Vcl.ExtCtrls, Vcl.Buttons,
  7. GLS.Keyboard;
  8. type
  9. TForm1 = class(TForm)
  10. Timer1: TTimer;
  11. PAUp: TPanel;
  12. Label1: TLabel;
  13. PALeft: TPanel;
  14. PARight: TPanel;
  15. Label2: TLabel;
  16. procedure Timer1Timer(Sender: TObject);
  17. procedure PAUpClick(Sender: TObject);
  18. procedure FormCreate(Sender: TObject);
  19. private
  20. public
  21. end;
  22. var
  23. Form1: TForm1;
  24. implementation
  25. {$R *.DFM}
  26. procedure TForm1.FormCreate(Sender: TObject);
  27. begin
  28. Label1.Caption:='Hit one/any of the keys below to light up the panel...';
  29. end;
  30. procedure TForm1.Timer1Timer(Sender: TObject);
  31. procedure CheckPanel(panel : TPanel);
  32. begin
  33. // check if key associated to current panel's caption is down
  34. if IsKeyDown(KeyNameToVirtualKeyCode(panel.Caption)) then
  35. panel.Color:=clRed // down, set panel to red
  36. else panel.Color:=clBtnFace; // up, set panel to default color
  37. end;
  38. begin
  39. // check all keys
  40. CheckPanel(PALeft);
  41. CheckPanel(PAUp);
  42. CheckPanel(PARight);
  43. end;
  44. procedure TForm1.PAUpClick(Sender: TObject);
  45. var
  46. keyCode : Integer;
  47. begin
  48. Label1.Caption:='Type key to map...';
  49. // wait for a key to be pressed
  50. repeat
  51. Application.ProcessMessages; // let other messages happen
  52. Sleep(1); // relinquish time for other processes
  53. keyCode:=KeyPressed;
  54. until keyCode>=0;
  55. // retrieve keyname and adjust panel caption
  56. TPanel(Sender).Caption:=VirtualKeyCodeToKeyName(keyCode);
  57. TPanel(Sender).Tag:=keyCode;
  58. // restore default label1.caption
  59. FormCreate(Self);
  60. end;
  61. end.