判断按键序列
Copyright(C) 2003, Kingron
如何判断用户输入的一个序列是不是指一个指定的序列?例如如何监测用户输入了kingron这个序列?
可以采用下面的方法:
定义一个数组:
var
CharBuf:array [1..7] of char;
然后在窗体的OnKeyPress中添加如下代码即可:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
var
i:integer;
begin
for i:=Low(Buf) to High(buf)-1 do
CharBuf[i]:=Charbuf[i+1];
CharBuf[High(Buf)]:=Key;
if CharBuf='kingron' then ShowMessage('OK!');
end;
如果要检测带功能键的,则可以利用ShortCut来做:
use Menus;
var
CharBuf:array [1..7] of Word;
const
/// ALT + KINGRON
Keys : array[1..7] of Word=(32843, 32841, 32846, 32839, 32850, 32847, 32846);
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
i:integer;
begin
for i:=Low(CharBuf) to High(Charbuf)-1 do
CharBuf[i]:=Charbuf[i+1];
CharBuf[High(CharBuf)]:=ShortCut(Key, Shift);
if CompareMem(@CharBuf[1], @Keys[1], SizeOf(Keys)) then ShowMessage('OK!');
end;