键盘控制实例
代码
1 unit Unit1;
2
3 interface
4
5 uses
6 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7 Dialogs, ExtCtrls, StdCtrls, Buttons;
8
9 type
10 TmainForm1 = class(TForm)
11 charLabel1: TLabel;
12 valueLabel2: TLabel;
13 shiftLabel3: TLabel;
14 closeBitBtn1: TBitBtn;
15 Bevel1: TBevel;
16 procedure FormKeyDown(Sender: TObject; var Key: Word;
17 Shift: TShiftState);
18 procedure FormKeyPress(Sender: TObject; var Key: Char);
19 procedure FormKeyUp(Sender: TObject; var Key: Word;
20 Shift: TShiftState);
21 private
22 { Private declarations }
23 public
24 { Public declarations }
25 end;
26
27 var
28 mainForm1: TmainForm1;
29
30 implementation
31
32 {$R *.dfm}
33 const
34 ctrl_A=1; {ascll value for ctrl+A}
35 ctrl_Z=26;{ascll value for ctrl+Z}
36 functionkeys:array[vk_f1..vk_f12]of string[3]=
37 ('f1','f2','f3','f4','f5','f6','f7','f8','f9','f10','f11','f12');
38 procedure TmainForm1.FormKeyDown(Sender: TObject; var Key: Word;
39 Shift: TShiftState);
40 var
41 s:string;
42 begin
43 {show integer key value}
44 valuelabel2.caption:=inttostr(key);
45 {show key shift state}
46 s:='';
47 if ssShift in Shift then
48 s:=s+'Shift+';
49 if ssalt in shift then
50 s:=s+'alt+';
51 if ssctrl in shift then
52 s:=s+'ctrl+';
53 if length(s)>0 then
54 delete(s,length(s),1);
55 shiftlabel3.Caption:=s;
56 if key in[vk_f1..vk_f12]then
57 charlabel1.Caption:=functionkeys[key]
58 else
59 charlabel1.Caption :='';
60 if key=vk_space then
61 key:=0;
62 end;
63
64 procedure TmainForm1.FormKeyPress(Sender: TObject; var Key: Char);
65 begin
66 if ord(key)in[ctrl_A..ctrl_Z]then
67 charlabel1.Caption :=chr(ord(key)+ord('A')-1)
68 else
69 charlabel1.Caption :=key;
70 valuelabel2.Caption :=inttostr(ord(key));
71 end;
72
73 procedure TmainForm1.FormKeyUp(Sender: TObject; var Key: Word;
74 Shift: TShiftState);
75 begin
76 charlabel1.Caption :='';
77 valuelabel2.Caption :='';
78 shiftlabel3.Caption :='';
79 end;
80 end.
81
2
3 interface
4
5 uses
6 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7 Dialogs, ExtCtrls, StdCtrls, Buttons;
8
9 type
10 TmainForm1 = class(TForm)
11 charLabel1: TLabel;
12 valueLabel2: TLabel;
13 shiftLabel3: TLabel;
14 closeBitBtn1: TBitBtn;
15 Bevel1: TBevel;
16 procedure FormKeyDown(Sender: TObject; var Key: Word;
17 Shift: TShiftState);
18 procedure FormKeyPress(Sender: TObject; var Key: Char);
19 procedure FormKeyUp(Sender: TObject; var Key: Word;
20 Shift: TShiftState);
21 private
22 { Private declarations }
23 public
24 { Public declarations }
25 end;
26
27 var
28 mainForm1: TmainForm1;
29
30 implementation
31
32 {$R *.dfm}
33 const
34 ctrl_A=1; {ascll value for ctrl+A}
35 ctrl_Z=26;{ascll value for ctrl+Z}
36 functionkeys:array[vk_f1..vk_f12]of string[3]=
37 ('f1','f2','f3','f4','f5','f6','f7','f8','f9','f10','f11','f12');
38 procedure TmainForm1.FormKeyDown(Sender: TObject; var Key: Word;
39 Shift: TShiftState);
40 var
41 s:string;
42 begin
43 {show integer key value}
44 valuelabel2.caption:=inttostr(key);
45 {show key shift state}
46 s:='';
47 if ssShift in Shift then
48 s:=s+'Shift+';
49 if ssalt in shift then
50 s:=s+'alt+';
51 if ssctrl in shift then
52 s:=s+'ctrl+';
53 if length(s)>0 then
54 delete(s,length(s),1);
55 shiftlabel3.Caption:=s;
56 if key in[vk_f1..vk_f12]then
57 charlabel1.Caption:=functionkeys[key]
58 else
59 charlabel1.Caption :='';
60 if key=vk_space then
61 key:=0;
62 end;
63
64 procedure TmainForm1.FormKeyPress(Sender: TObject; var Key: Char);
65 begin
66 if ord(key)in[ctrl_A..ctrl_Z]then
67 charlabel1.Caption :=chr(ord(key)+ord('A')-1)
68 else
69 charlabel1.Caption :=key;
70 valuelabel2.Caption :=inttostr(ord(key));
71 end;
72
73 procedure TmainForm1.FormKeyUp(Sender: TObject; var Key: Word;
74 Shift: TShiftState);
75 begin
76 charlabel1.Caption :='';
77 valuelabel2.Caption :='';
78 shiftlabel3.Caption :='';
79 end;
80 end.
81



浙公网安备 33010602011771号