procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char); begin if (Key<>#8)and(Key<>#9)and(Key<>#13)and(Key<>#27)and(Key<>#46) then if (key<'0') or (key>'9') then begin showmessage('error'); key := #0; end; end;
ASCII码应该看看。 不赋值当然没用。 procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char); begin if (Key<>#8)and(Key<>#9)and(Key<>#13)and(Key<>#27)and(Key<>#46) then try edit1.Text :=edit1.Text + char(strtoint(key)); except key := #0; end; end;CTRL+V是组合键,当时没有考虑到。 有简单的方法解决吗?
无聊之间试试。 解决了。unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Edit1: TEdit; procedure Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure Edit1KeyPress(Sender: TObject; var Key: Char); private boolFlag : boolean; public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if ((shift=[ssctrl]) and (key in [86,118])) or (chr(key) in [#27,#17,#13,#46,'0'..'9',#9,#8]) then begin boolFlag := true; end else boolFlag := false; end;procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if not boolFlag then key := #0; end;end.
最有效的方法就是用
try
except
end;或者通过字符串数组处理。
edit2.Text[序数]
begin
if (Key<>#8)and(Key<>#9)and(Key<>#13)and(Key<>#27)and(Key<>#46) then
if (key<'0') or (key>'9') then
begin
showmessage('error');
key := #0;
end;
end;
try
strtoint(edit1.text)
except
showmessage('');
exit;
end;
可是这样还是没用呀!!
可以选择只能输入整型、浮点型、所有的字符,
还可以设置显示格式,如:¥12,345.67,(不是MASK)
你要的话给我MAIL:[email protected]
不赋值当然没用。
procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
if (Key<>#8)and(Key<>#9)and(Key<>#13)and(Key<>#27)and(Key<>#46) then
try
edit1.Text :=edit1.Text + char(strtoint(key));
except
key := #0;
end;
end;CTRL+V是组合键,当时没有考虑到。
有简单的方法解决吗?
解决了。unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Edit1: TEdit;
procedure Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
private
boolFlag : boolean;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if ((shift=[ssctrl]) and (key in [86,118])) or (chr(key) in [#27,#17,#13,#46,'0'..'9',#9,#8]) then
begin
boolFlag := true;
end
else
boolFlag := false;
end;procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not boolFlag then
key := #0;
end;end.