动态创建的Edit怎么判断是整型的啊?(100分)

  • 主题发起人 主题发起人 夜之紫瞳
  • 开始时间 开始时间

夜之紫瞳

Unregistered / Unconfirmed
GUEST, unregistred user!
做了一个动态创建的表,录入界面是用动态创建的Label和Edit做的,怎么判断
Edit输入的是整型的啊?[:(]
 
看你的问题好象是限制Edit的录入为0-9之间的数字,如果是这样的话,
可定义OnChange方法,
procedure TfrmAutoMain.EditChange(Sender: TObject);
var
s:String;
begin
s:=TEdit(Sender).Text;
if not (Copy(s,Length(s)-1,1) in ['0'..'9']) then Abort;
end;

运行时,将你的Edit.Onchange:=EditChange;
是不是这样。
 
给你个函数
function IsInt(const strText:string):boolean;
var
intConvert:integer;
blnResult:boolean;
begin
try
intConvert:=strToint(strText);
blnResult:=true;
except
blnResult:=False;
end;{try}
Result:=blnResult;
end;
 
Just use:
SetWindowLong(Edit1.Handle, GWL_STYLE,GetWindowLong(Edit1.Handle, GWL_STYLE) or ES_NUMBER);
 
a:= strtointdef(edit1.text,-1); //(-1也可用你不可能出现的整数表示)
if a=-1 then
showmessage('输入不合法!');
 
试了一下creation-zy的方法,捧极了!
 
我有floatedit 组件,要不要
 
to:creation-zy
不行不行。如果我要再输入+,-号呢?
 
在edit的OnKeyPress过程里写:
if not ( Key in ['0'..'9','+','-',#13]) then Key := #0
 
to NetRobot2001:

谢谢作答,但我想用creation-zy的API方法来实现,所以不知如何做了?
 
Well Done! creation-zy!
 
看你的问题好象是限制Edit的录入为0-9之间的数字,如果是这样的话,
可定义Onexit方法,
procedure TfrmAutoMain.editexit(Sender: TObject);
begin
try
strToint((sender as tedit).Text);
except
showmessage('输入不合法!');
end;{try}
end;

运行时,将你的Edit.Onchange:=editexit;
是不是这样。
 
小弟这个Edit是动态创建的,刚开始并没有啊。
creation-zy的建议据说是挺好的,可惜的是小弟对API函数不是很熟悉,唉~~~
我的一个想法是,先建立一个过程比如说procedure MyKeyPress(Sender:TObject)
if not key in ['0'..'9'] then key:=#0;
然后用Edit的OnKeyPress事件
然后把MyKeyPress赋值给这个事件,但是好像不行。
下面是源代码:
代码:
Table1.Open;
Table1.First;
while not Table1.Eof do
begin
L:=TLabel.Create(self);
L.Parent:=Tab;{建立父对象}
with L do
begin
Name:='L'+IntToStr(i);
Caption:=Table1.FieldByName('S_NAME').AsString;
Width:=70;
Top:=x+10;
Left:=y+10;
Visible:=True;
end;
E:=TEdit.Create(self);
E.Parent:=Tab;
with E do
begin
Text:='0';
AutoSize:=True;
Top:=x+10;
Left:=y+20+L.Width;
Visible:=True;
end;
x:=x+25;
i:=i+1;
if x>PageControl1.Height then
begin
x:=PageControl1.Top;
y:=PageControl1.Width div 2;
second:=second+1;
if second=3 then
begin
Counter:=Counter+1;
Tab:=TTabSheet.Create(PageControl1);
with Tab do
begin
PageControl := PageControl1;
Name := 'tsPage' + IntToStr(Counter);
Caption :='Page'+IntToStr(Counter);
end;
x:=PageControl1.Top;
y:=PageControl1.Left;
second:=0
end;
end;
Table1.Next;
end;
Table1.Close;
 
procedure TForm1.MyKeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9']) then key:=#0;
end;
就可以了。哈哈。给分
 
哈,解决了,谢谢gotosea
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
916
SUNSTONE的Delphi笔记
S
后退
顶部