12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- unit Unit1;
- interface
- uses
- System.SysUtils, System.Classes,
- Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs,
- Vcl.StdCtrls, Vcl.ExtCtrls, Vcl.Buttons,
-
- GLS.Keyboard;
- type
- TForm1 = class(TForm)
- Timer1: TTimer;
- PAUp: TPanel;
- Label1: TLabel;
- PALeft: TPanel;
- PARight: TPanel;
- Label2: TLabel;
- procedure Timer1Timer(Sender: TObject);
- procedure PAUpClick(Sender: TObject);
- procedure FormCreate(Sender: TObject);
- private
-
- public
-
- end;
- var
- Form1: TForm1;
- implementation
- {$R *.DFM}
- procedure TForm1.FormCreate(Sender: TObject);
- begin
- Label1.Caption:='Hit one/any of the keys below to light up the panel...';
- end;
- procedure TForm1.Timer1Timer(Sender: TObject);
- procedure CheckPanel(panel : TPanel);
- begin
- // check if key associated to current panel's caption is down
- if IsKeyDown(KeyNameToVirtualKeyCode(panel.Caption)) then
- panel.Color:=clRed // down, set panel to red
- else panel.Color:=clBtnFace; // up, set panel to default color
- end;
- begin
- // check all keys
- CheckPanel(PALeft);
- CheckPanel(PAUp);
- CheckPanel(PARight);
- end;
- procedure TForm1.PAUpClick(Sender: TObject);
- var
- keyCode : Integer;
- begin
- Label1.Caption:='Type key to map...';
- // wait for a key to be pressed
- repeat
- Application.ProcessMessages; // let other messages happen
- Sleep(1); // relinquish time for other processes
- keyCode:=KeyPressed;
- until keyCode>=0;
- // retrieve keyname and adjust panel caption
- TPanel(Sender).Caption:=VirtualKeyCodeToKeyName(keyCode);
- TPanel(Sender).Tag:=keyCode;
- // restore default label1.caption
- FormCreate(Self);
- end;
- end.
|