W
wusongping1983
Unregistered / Unconfirmed
GUEST, unregistred user!
本人接触delphi,打算做个计算器,但遇到一些问题,望大家指点下。
先说我的思路:比如 先按计算器中的 1,这个时候在 edit1 中显示 1,同时把 1 保存到 一个全局变量 x 中,如果接下来 按 2 ,这个时候 我先判断 这个全局变量 x 里面的值 是否在 集合 ['0'..'9'] 中,如果是 说明 前面按的是 数字键,这个时候 edit1 里面应该显示是 12 ,如果不在这个集合中,则 edit1 中应该显示 2,后面对于符号判断原理一样,我就不细说了,我写的代码如下:
var
Form1: TForm1;
x:string ='0';
y:char;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
if ('x' in ['0'..'9']) then
begin
x:='1';
Edit1.Text:=Edit1.Text+'1';
end
else
Edit1.Text:='1';
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if ('x' in ['0'..'9']) then
begin
x:='2';
Edit1.Text:=Edit1.Text+'2';
end
else
Edit1.Text:='2';
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
if ('x' in ['0'..'9']) then
begin
x:='3';
Edit1.Text:=Edit1.Text+'3';
end
else
Edit1.Text:='3';
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
if ('x' in ['0'..'9']) then
begin
x:='4';
Edit1.Text:=Edit1.Text+'4';
end
else
Edit1.Text:='4';
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
if ('x' in ['0'..'9']) then
begin
x:='5';
Edit1.Text:=Edit1.Text+'5';
end
else
Edit1.Text:='5';
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
if ('x' in ['0'..'9']) then
begin
x:='6';
Edit1.Text:=Edit1.Text+'6';
end
else
Edit1.Text:='6';
end;
procedure TForm1.Button7Click(Sender: TObject);
begin
if ('x' in ['0'..'9']) then
begin
x:='7';
Edit1.Text:=Edit1.Text+'7';
end
else
Edit1.Text:='7';
end;
procedure TForm1.Button11Click(Sender: TObject);
begin
if ('x' in ['0'..'9']) then
begin
x:='8';
Edit1.Text:=Edit1.Text+'8';
end
else
Edit1.Text:='8';
end;
procedure TForm1.Button10Click(Sender: TObject);
begin
if ('x' in ['0'..'9']) then
begin
x:='9';
Edit1.Text:=Edit1.Text+'9';
end
else
Edit1.Text:='9';
end;
procedure TForm1.Button9Click(Sender: TObject);
begin
if ('x' in ['0'..'9']) then
begin
x:='0';
Edit1.Text:=Edit1.Text+'0';
end
else
Edit1.Text:='0';
end;
上面是 10个 按键的代码。
问题是:我执行调试的时候 发现 x这个变量的值 总是 0 ,好象每次按键 都不能把当前的 值 传给 x,望高手指点!
先说我的思路:比如 先按计算器中的 1,这个时候在 edit1 中显示 1,同时把 1 保存到 一个全局变量 x 中,如果接下来 按 2 ,这个时候 我先判断 这个全局变量 x 里面的值 是否在 集合 ['0'..'9'] 中,如果是 说明 前面按的是 数字键,这个时候 edit1 里面应该显示是 12 ,如果不在这个集合中,则 edit1 中应该显示 2,后面对于符号判断原理一样,我就不细说了,我写的代码如下:
var
Form1: TForm1;
x:string ='0';
y:char;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
if ('x' in ['0'..'9']) then
begin
x:='1';
Edit1.Text:=Edit1.Text+'1';
end
else
Edit1.Text:='1';
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if ('x' in ['0'..'9']) then
begin
x:='2';
Edit1.Text:=Edit1.Text+'2';
end
else
Edit1.Text:='2';
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
if ('x' in ['0'..'9']) then
begin
x:='3';
Edit1.Text:=Edit1.Text+'3';
end
else
Edit1.Text:='3';
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
if ('x' in ['0'..'9']) then
begin
x:='4';
Edit1.Text:=Edit1.Text+'4';
end
else
Edit1.Text:='4';
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
if ('x' in ['0'..'9']) then
begin
x:='5';
Edit1.Text:=Edit1.Text+'5';
end
else
Edit1.Text:='5';
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
if ('x' in ['0'..'9']) then
begin
x:='6';
Edit1.Text:=Edit1.Text+'6';
end
else
Edit1.Text:='6';
end;
procedure TForm1.Button7Click(Sender: TObject);
begin
if ('x' in ['0'..'9']) then
begin
x:='7';
Edit1.Text:=Edit1.Text+'7';
end
else
Edit1.Text:='7';
end;
procedure TForm1.Button11Click(Sender: TObject);
begin
if ('x' in ['0'..'9']) then
begin
x:='8';
Edit1.Text:=Edit1.Text+'8';
end
else
Edit1.Text:='8';
end;
procedure TForm1.Button10Click(Sender: TObject);
begin
if ('x' in ['0'..'9']) then
begin
x:='9';
Edit1.Text:=Edit1.Text+'9';
end
else
Edit1.Text:='9';
end;
procedure TForm1.Button9Click(Sender: TObject);
begin
if ('x' in ['0'..'9']) then
begin
x:='0';
Edit1.Text:=Edit1.Text+'0';
end
else
Edit1.Text:='0';
end;
上面是 10个 按键的代码。
问题是:我执行调试的时候 发现 x这个变量的值 总是 0 ,好象每次按键 都不能把当前的 值 传给 x,望高手指点!