-
Notifications
You must be signed in to change notification settings - Fork 0
/
contr.pas
132 lines (118 loc) · 3.35 KB
/
contr.pas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
unit Contr;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, StdCtrls;
type
TfmControls = class(TForm)
gbKeys: TGroupBox;
lLeft: TLabel;
lRight: TLabel;
lDown: TLabel;
lRotate: TLabel;
eLeft: TEdit;
eRight: TEdit;
eDown: TEdit;
eRotate: TEdit;
btnCancel: TButton;
btnOk: TButton;
procedure eLeftKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormCreate(Sender: TObject);
procedure btnCancelClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
function KeyToStr(Key: Word): string;
end;
var
fmControls: TfmControls;
f: file of word;
Keys, BackUp: array[1..4] of word;
implementation
{$R *.DFM}
{ TfmControls }
function TfmControls.KeyToStr(Key: Word): string;
var R: string;
begin
case Key of
48..90 : R:=Chr(Byte(Key));
166..255 : R:=Chr(Byte(Key));
VK_BACK : R:='Çàáîé';
VK_SPACE : R:='Ïðîáåë';
VK_PRIOR : R:='Ñòðàíèöà ââåðõ';
VK_NEXT : R:='Ñòðàíèöà âíèç';
VK_END : R:='Â êîíåö';
VK_HOME : R:=' íà÷àëî';
VK_LEFT : R:='Ñòåðëêà âëåâî';
VK_UP : R:='Ñòåðëêà ââåðõ';
VK_RIGHT : R:='Ñòåðëêà íàïðàâî';
VK_DOWN : R:='Ñòåðëêà âíèç';
VK_INSERT : R:='Âñòàâêà';
VK_DELETE : R:='Óäàëåíèå';
VK_LWIN : R:='Ëåâàÿ êíîïêà Windows';
VK_RWIN : R:='Ïðàâàÿ êíîïêà Windows';
VK_APPS : R:='Êíîïêà êïíòåêñòíîãî ìåíþ';
VK_NUMPAD0 : R:='0 (numeric keypad)';
VK_NUMPAD1 : R:='1 (numeric keypad)';
VK_NUMPAD2 : R:='2 (numeric keypad)';
VK_NUMPAD3 : R:='3 (numeric keypad)';
VK_NUMPAD4 : R:='4 (numeric keypad)';
VK_NUMPAD5 : R:='5 (numeric keypad)';
VK_NUMPAD6 : R:='6 (numeric keypad)';
VK_NUMPAD7 : R:='7 (numeric keypad)';
VK_NUMPAD8 : R:='8 (numeric keypad)';
VK_NUMPAD9 : R:='9 (numeric keypad)';
VK_DECIMAL : R:='Ðàçäåëèòåëü äðîáè (numeric keypad)';
else R:='Íå äîñòóïíà'
end;
Result:=R;
end;
procedure TfmControls.eLeftKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (KeyToStr(Key)<>'Íå äîñòóïíà') and not
((Key=Keys[1]) or (Key=Keys[2]) or
(Key=Keys[3]) or (Key=Keys[4])) then begin
TEdit(Sender).Text:=KeyToStr(Key);
Keys[TComponent(Sender).Tag]:=Key;
end;
end;
procedure TfmControls.FormCreate(Sender: TObject);
var i: integer;
begin
AssignFile(f,'tetkeys.dat');
{$I-} Reset(f); {$I+}
if IOResult<>0 then begin
Keys[1]:=VK_LEFT;
Keys[2]:=VK_RIGHT;
Keys[3]:=VK_DOWN;
Keys[4]:=VK_SPACE;
end else begin
for i:=1 to 4 do Read(f,Keys[i]);
CloseFile(f);
end;
end;
procedure TfmControls.btnCancelClick(Sender: TObject);
begin
Keys:=BackUp;
end;
procedure TfmControls.FormClose(Sender: TObject; var Action: TCloseAction);
var i: integer;
begin
AssignFile(f,'tetkeys.dat'); Rewrite(f);
for i:=1 to 4 do Write(f,Keys[i]);
CloseFile(f);
end;
procedure TfmControls.FormShow(Sender: TObject);
begin
eLeft.Text:=KeyToStr(Keys[1]);
eRight.Text:=KeyToStr(Keys[2]);
eDown.Text:=KeyToStr(Keys[3]);
eRotate.Text:=KeyToStr(Keys[4]);
BackUp:=Keys;
end;
end.