fKeymapD.pas 1.7 KB

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