delphi 编程:从输入框中输入的数据如何到指定的编辑框中显示、计算
现有edit1,edit2.....edit20和一个maskedit1,从maskedit1中输入数据,如01220则edit1中显示220,02188则在edit2中...
现有edit1,edit2.....edit20和一个maskedit1,从maskedit1中输入数据,如01220则edit1中显示220,02188则在edit2中显示188,123456则是在edit12中显示3456.同时Tedit中可以进行加、减运算,如在maskedit1中第一次输入01348则edit1中为348,第二次输入012则edit1中显示为350.第三次输入01-10则显示为340.
不用多个Tedit用数据表如何实现? 展开
不用多个Tedit用数据表如何实现? 展开
2个回答
展开全部
//在按回车事件内判断(在此之前先将edit1,edit2……edit20的值初始化为0)
procedure TForm1.MaskEdit1KeyPress(Sender: TObject; var Key: Char);
var s1,s2:string;//s1为输入内容的前两位,S2后面部分,
i2,symbol:integer; //symbol运算符号; i2对应s2的整数类型
begin
if key=#13 then
begin
// 判断maskedit1中输入数据是否符合规范,
if length(maskEdit1.Text)<3 then
begin
MessageDlg('输入不正确,请重新输入',mtinformation,[mbok],0);
maskEdit1.setFocus;
maskEdit1.selectAll;
exit;
end;
S1:=Copy(maskEdit1.Text,1,2);
S2:=Copy(maskEdit1.Text,3,length(maskEdit1.Text)-2);
if S2[0]='-' then
begin
symbol:=-1;
S2:=Copy(S2,2,length(S2)-1);
end else
symbol=1;
try
strToint (s1);
i2:=strToint(s2);
except
MessageDlg('输入不正确,请重新输入',mtinformation,[mbok],0);
maskEdit1.setFocus;
maskEdit1.selectAll;
exit;
end;
if s1='01' then
Edit1.Text:=intToStr(StrToInt(Edit1.Text)+i2*Symbol);
else if s1='02' then begin
Edit2.Text:=intToStr(StrToInt(Edit2.Text)+i2*Symbol);
//中间的部分自己加进去
else if s1='20' then
Edit20.Text:=intToStr(StrToInt(Edit20.Text)+i2*Symbol);
end;
end;
procedure TForm1.MaskEdit1KeyPress(Sender: TObject; var Key: Char);
var s1,s2:string;//s1为输入内容的前两位,S2后面部分,
i2,symbol:integer; //symbol运算符号; i2对应s2的整数类型
begin
if key=#13 then
begin
// 判断maskedit1中输入数据是否符合规范,
if length(maskEdit1.Text)<3 then
begin
MessageDlg('输入不正确,请重新输入',mtinformation,[mbok],0);
maskEdit1.setFocus;
maskEdit1.selectAll;
exit;
end;
S1:=Copy(maskEdit1.Text,1,2);
S2:=Copy(maskEdit1.Text,3,length(maskEdit1.Text)-2);
if S2[0]='-' then
begin
symbol:=-1;
S2:=Copy(S2,2,length(S2)-1);
end else
symbol=1;
try
strToint (s1);
i2:=strToint(s2);
except
MessageDlg('输入不正确,请重新输入',mtinformation,[mbok],0);
maskEdit1.setFocus;
maskEdit1.selectAll;
exit;
end;
if s1='01' then
Edit1.Text:=intToStr(StrToInt(Edit1.Text)+i2*Symbol);
else if s1='02' then begin
Edit2.Text:=intToStr(StrToInt(Edit2.Text)+i2*Symbol);
//中间的部分自己加进去
else if s1='20' then
Edit20.Text:=intToStr(StrToInt(Edit20.Text)+i2*Symbol);
end;
end;
展开全部
在maskedit1的onEditValueChanged事件中用LeftStr(Str,2)函数截取maskedit1.text开始2个字符,赋值给变量,然后根据变量值进行条件判断,设定计算公式,但只能固定+或—或×或/,不可能实现输入一个值能自动进行两种以上的运算
更多追问追答
追问
关于你所说的“
截取maskedit1.text开始2个字符,赋值给变量,然后根据变量值进行条件判断
”,现在的问题是如何把提取的字符与TEDIT对应起来。如提取的是01,如何在edit1显示01后面的数字?
追答
用Copy(Str,3,n)截取,从第三个字符开始取,n你设定最长的可能位数就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询