onkeypress事件中限制输入内容 procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if not (key in ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', 'p']) then key:=#0; end;
呵呵,这样backspace键就不能用了,
那backspace键怎么定义呢?还没有其他的方法解决这个问题?
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if not (key in ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', 'p',Key_Backspace]) then key:=#0; end;这样能不能解决问题?
procedure TForm4.Edit5KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin showmessage(inttostr(key)); if not (key in [49,64,8]) then key:=#0; end; 上面key:=#0是错的,因为我不知不反应的代码,showmessage是我测Key代码的
用copy函数加到keypress函数中就可以了
肯定可以的 procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if NOT ((Ord(key)>=Ord('0') AND Ord(key)<=Ord('9')) OR Ord(key)=Ord('-') OR Ord(key)=Ord('p') OR Ord(key)=VK_BACK) then key:=#0; end;
呵呵,incompatible type,不行呀
backspace 是 #8 所以procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if not (key in ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', 'p','#8']) then key:=#0; end;#8可能不要用单引号。
procedure TForm4.Edit5KeyPress(Sender: TObject; var Key: Char); begin if not (((Ord(key)>=Ord('0')) and (ord(key)<=ord('9'))) OR (Ord(key)=VK_BACK) or (ord(key)=ord('-'))) then key:=#0; end; 已测试,正确的代码,呵呵
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', 'p']) then
key:=#0;
end;
begin
if not (key in ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', 'p',Key_Backspace]) then
key:=#0;
end;这样能不能解决问题?
Shift: TShiftState);
begin
showmessage(inttostr(key));
if not (key in [49,64,8])
then
key:=#0;
end;
上面key:=#0是错的,因为我不知不反应的代码,showmessage是我测Key代码的
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if NOT ((Ord(key)>=Ord('0') AND Ord(key)<=Ord('9')) OR Ord(key)=Ord('-')
OR Ord(key)=Ord('p') OR Ord(key)=VK_BACK) then
key:=#0;
end;
所以procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', 'p','#8']) then
key:=#0;
end;#8可能不要用单引号。
begin
if not (((Ord(key)>=Ord('0')) and (ord(key)<=ord('9'))) OR (Ord(key)=VK_BACK) or (ord(key)=ord('-'))) then
key:=#0;
end;
已测试,正确的代码,呵呵