1 unit formkeyoption;
2
3 {$mode objfpc}{$H+}
4
5 interface
6
7 uses
8 Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ButtonPanel,
9 StdCtrls;
10
11 type
12 { TfmKeyOpt }
13
14 TfmKeyOpt = class(TForm)
15 ButtonPanel1: TButtonPanel;
16 chkCtrl: TCheckBox;
17 chkAlt: TCheckBox;
18 chkShift: TCheckBox;
19 chkMeta: TCheckBox;
20 ed: TComboBox;
21 procedure FormCreate(Sender: TObject);
22 private
23 { private declarations }
24 public
25 { public declarations }
26 end;
27
DoDialogHotkeynull28 function DoDialogHotkey(S: string): string;
29
30 implementation
31
32 {$R *.lfm}
33
DoDialogHotkeynull34 function DoDialogHotkey(S: string): string;
35 var
36 n: integer;
37 begin
38 Result:= S;
39 with TfmKeyOpt.Create(nil) do
40 try
41 chkCtrl.Checked:= Pos('Ctrl+', S)>0;
42 chkAlt.Checked:= Pos('Alt+', S)>0;
43 chkShift.Checked:= Pos('Shift+', S)>0;
44 chkMeta.Checked:= Pos('Meta+', S)>0;
45
46 repeat
47 n:= Pos('+', S);
48 if n=0 then Break;
49 Delete(S, 1, n);
50 until false;
51
52 ed.ItemIndex:= ed.Items.IndexOf(S);
53 if ed.ItemIndex<0 then
54 ed.ItemIndex:= 0;
55
56 case ShowModal of
57 mrOk:
58 begin
59 Result:= ed.Text;
60 if chkMeta.Checked then Result:= 'Meta+'+Result;
61 if chkShift.Checked then Result:= 'Shift+'+Result;
62 if chkAlt.Checked then Result:= 'Alt+'+Result;
63 if chkCtrl.Checked then Result:= 'Ctrl+'+Result;
64 end;
65 mrClose:
66 Result:= '';
67 end;
68 finally
69 Free;
70 end;
71 end;
72
73 { TfmKeyOpt }
74
75 procedure TfmKeyOpt.FormCreate(Sender: TObject);
76 var
77 i: integer;
78 begin
79 for i:= Ord('A') to Ord('Z') do
80 ed.Items.Add(Chr(i));
81 for i:= 0 to 9 do
82 ed.Items.Add(Inttostr(i));
83 for i:= 1 to 12 do
84 ed.Items.Add('F'+Inttostr(i));
85
86 ed.Items.Add('Left');
87 ed.Items.Add('Right');
88 ed.Items.Add('Up');
89 ed.Items.Add('Down');
90 ed.Items.Add('Ins');
91 ed.Items.Add('Del');
92 ed.Items.Add('Home');
93 ed.Items.Add('End');
94 ed.Items.Add('PgUp');
95 ed.Items.Add('PgDn');
96 ed.Items.Add('Enter');
97 ed.Items.Add('BkSp');
98 ed.Items.Add('Tab');
99 ed.Items.Add('Esc');
100 ed.Items.Add('-');
101 ed.Items.Add('=');
102 ed.Items.Add('`');
103 ed.Items.Add(',');
104 ed.Items.Add('.');
105 ed.Items.Add(';');
106 ed.Items.Add('''');
107 ed.Items.Add('\');
108 ed.Items.Add('/');
109 ed.Items.Add('[');
110 ed.Items.Add(']');
111
112 for i:= 0 to 9 do
113 ed.Items.Add('Num'+Inttostr(i));
114 ed.Items.Add('NumPlus');
115 ed.Items.Add('NumMinus');
116 ed.Items.Add('NumMul');
117 ed.Items.Add('NumDiv');
118 ed.Items.Add('NumDot');
119 ed.Items.Add('NumClear');
120
121 ed.Items.Add('NumLock');
122 ed.Items.Add('ScrollLock');
123 ed.Items.Add('CapsLock');
124 ed.Items.Add('Break');
125 ed.Items.Add('PopUp');
126 end;
127
128 end.
129
130