请教delphi限制输入框问题? ( 积分: 20 )

  • 主题发起人 主题发起人 siso
  • 开始时间 开始时间
S

siso

Unregistered / Unconfirmed
GUEST, unregistred user!
如下:edit1只可输入数字和字母及退格键
procedure TForm1.Edit1KeyPress(Sender: TObject;
var Key: Char);
begin
if not (key in ['0'..'9','a'..'z',#8]) then
begin
key:=#0;
MessageBeep(1);
end;
end;

但如果我需要支持复制和粘贴,于是我改为
procedure TForm1.Edit1KeyPress(Sender: TObject;
var Key: Char);
begin
if not (key in ['0'..'9','a'..'z',#8,#17]) then
begin
key:=#0;
MessageBeep(1);
end;
end;
#17是Ctrl的键盘码,可是还是不能按Ctrl+c或Ctrl+v
后来得到帮助如下 :
procedure TForm1.Edit1KeyPress(Sender: TObject;
var Key: Char);
begin
if not (key in ['0'..'9','a'..'z',#8,#3,#22]) then
begin
key:=#0;
MessageBeep(1);
end;
end;
可以复制和粘贴了,但我不清楚#3,和#22是什么意思?请各位告诉我一下。谢了!
 
如下:edit1只可输入数字和字母及退格键
procedure TForm1.Edit1KeyPress(Sender: TObject;
var Key: Char);
begin
if not (key in ['0'..'9','a'..'z',#8]) then
begin
key:=#0;
MessageBeep(1);
end;
end;

但如果我需要支持复制和粘贴,于是我改为
procedure TForm1.Edit1KeyPress(Sender: TObject;
var Key: Char);
begin
if not (key in ['0'..'9','a'..'z',#8,#17]) then
begin
key:=#0;
MessageBeep(1);
end;
end;
#17是Ctrl的键盘码,可是还是不能按Ctrl+c或Ctrl+v
后来得到帮助如下 :
procedure TForm1.Edit1KeyPress(Sender: TObject;
var Key: Char);
begin
if not (key in ['0'..'9','a'..'z',#8,#3,#22]) then
begin
key:=#0;
MessageBeep(1);
end;
end;
可以复制和粘贴了,但我不清楚#3,和#22是什么意思?请各位告诉我一下。谢了!
 
#3是^C, #22是^V
也就是复制,粘贴的快捷键
 
#數字就是表示一個按鍵的編號
 
先谢两位,退格键是#8,因为退格键的键值为8 ,这个我能理解。
但^C和^V这两个键值是如何得来的。
为什么不是 #17 Ctrl的键值为17啊~ 谢谢!
 
SetWindowLong(Edit.Handle, GWL_STYLE, (GetWindowLong(Edit.Handle, GWL_STYLE) or ES_NUMBER));
 
去看看汇编的书就知道了
 
多人接受答案了。
 
跟汇编没关系
 
后退
顶部