先坦白,这是我第一次打开delphi
前不久用java实现了一个,无界面的
老师让用delphi编一个,上网看了些教程又查了查delphi的帮助,现还有几个地方没弄明白1,空值怎么表示?我用''和null都不行呢?在运行1/x的时候需要用到2,delphi中好像没有switch,是用case else end;吗?else可以不写吗?3,我的想法是写一个函数,输入两个int型数值和一个操作符:char就计算出结果,我想用switch (op) 然后case,delphi帮助中没查到这个写法,然后下面纯属我自己瞎编:
function calValue(I, op, J):Integer;begin
case op := '+';
begin
Result := I + J;
end; case op := '-';
begin
Result := I - J;
end; case op := '*';
begin
Result := I * J;
end; case op := '/';
begin
Result := I / J;
end;end;
写法上有哪些问题啊?还有/的话,值可能为小数,怎么转换呢?4,计算器中按1后 再按+ 再按2,意思是1 + 2,在按键的事件中加入上面的函数好像还不可行,这里实在想不明白....5,如何给.exe文件换上自己想要的图标啊?run以后的.exe就是想要的文件了么?胡言乱语了,也不知道高手们看不看得懂我的意思,谢过~
1 : ...
2 : ...
.
.
else //可有可无
.
end;
3, 见2, case 用法不对
4, 通过虚拟键值和ASCII码响应处理,
5, Project-->Option-->Application-->Load Icon 可改变
function calValue(I:Integer, op:char, J:Integer):Integer;
begin
case Op of
'+': Result := I + J;
'-': Result := I - J;
'*': Result := I * J;
end
end;
不理解,能够给个例子,谢谢
2:同上
3: 同上
4:
在=号剑事件内,通过判定是+,-,×,/,调用不同的函数即可
5:
是的。同上
unit U_jsq;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, StdCtrls;type
Tfrm_jsq = class(TForm)
Edit1: TEdit;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
SpeedButton5: TSpeedButton;
SpeedButton6: TSpeedButton;
SpeedButton7: TSpeedButton;
SpeedButton8: TSpeedButton;
SpeedButton9: TSpeedButton;
SpeedButton10: TSpeedButton;
SpeedButton11: TSpeedButton;
SpeedButton12: TSpeedButton;
SpeedButton13: TSpeedButton;
SpeedButton14: TSpeedButton;
SpeedButton15: TSpeedButton;
SpeedButton16: TSpeedButton;
SpeedButton17: TSpeedButton;
SpeedButton18: TSpeedButton;
SpeedButton19: TSpeedButton;
SpeedButton20: TSpeedButton;
procedure SpeedButton5Click(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure SpeedButton6Click(Sender: TObject);
procedure SpeedButton7Click(Sender: TObject);
procedure SpeedButton8Click(Sender: TObject);
procedure SpeedButton11Click(Sender: TObject);
procedure SpeedButton12Click(Sender: TObject);
procedure SpeedButton13Click(Sender: TObject);
procedure SpeedButton16Click(Sender: TObject);
procedure SpeedButton17Click(Sender: TObject);
procedure SpeedButton14Click(Sender: TObject);
procedure SpeedButton15Click(Sender: TObject);
procedure SpeedButton18Click(Sender: TObject);
procedure SpeedButton19Click(Sender: TObject);
procedure SpeedButton10Click(Sender: TObject);
procedure SpeedButton9Click(Sender: TObject);
procedure SpeedButton20Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;var
frm_jsq: Tfrm_jsq;
temp1:string; //表示操作数
temp2:real; //表示结果
flag:integer; //表运算符
implementation{$R *.dfm}procedure Tfrm_jsq.SpeedButton5Click(Sender: TObject);
begin
frm_jsq.Close;
end;procedure Tfrm_jsq.SpeedButton4Click(Sender: TObject);
begin
Edit1.SetFocus;
Edit1.Text:='';
end;procedure Tfrm_jsq.SpeedButton1Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+'1';
end;procedure Tfrm_jsq.SpeedButton2Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+'2';
end;procedure Tfrm_jsq.SpeedButton3Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+'3';
end;procedure Tfrm_jsq.SpeedButton6Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+'4';
end;procedure Tfrm_jsq.SpeedButton7Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+'5';
end;procedure Tfrm_jsq.SpeedButton8Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+'6';
end;procedure Tfrm_jsq.SpeedButton11Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+'7';
end;procedure Tfrm_jsq.SpeedButton12Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+'8';
end;procedure Tfrm_jsq.SpeedButton13Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+'9';
end;procedure Tfrm_jsq.SpeedButton16Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+'0';
end;procedure Tfrm_jsq.SpeedButton17Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+'.';
end;procedure Tfrm_jsq.SpeedButton14Click(Sender: TObject);
begin
flag:=1;
temp1:=Edit1.Text;
Edit1.Clear;
end;procedure Tfrm_jsq.SpeedButton15Click(Sender: TObject);
begin
flag:=2;
temp1:=Edit1.Text;
Edit1.Clear;
end;procedure Tfrm_jsq.SpeedButton18Click(Sender: TObject);
begin
flag:=3;
temp1:=Edit1.Text;
Edit1.Clear;
end;procedure Tfrm_jsq.SpeedButton19Click(Sender: TObject);
begin
flag:=4;
temp1:=Edit1.Text;
Edit1.Clear;
end;procedure Tfrm_jsq.SpeedButton10Click(Sender: TObject);
begin
flag:=5;
temp1:=Edit1.Text;
// Edit1.Clear;
end;procedure Tfrm_jsq.SpeedButton9Click(Sender: TObject);
begin
flag:=6;
temp1:=Edit1.Text;
//Edit1.Clear;
end;procedure Tfrm_jsq.SpeedButton20Click(Sender: TObject);
begin
case flag of
1: temp2:=strtofloat(temp1)+strtofloat(Edit1.Text);
2: temp2:=strtofloat(temp1)-strtofloat(Edit1.Text);
3: temp2:=strtofloat(temp1)*strtofloat(Edit1.Text);
4: temp2:=strtofloat(temp1)/strtofloat(Edit1.Text);
5: temp2:=sqrt(strtofloat(temp1));
6: temp2:=strtofloat(temp1)*strtofloat(Edit1.Text);
end;
Edit1.Text:=floattostr(temp2);
end;procedure Tfrm_jsq.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:=cafree;
end;end.
procedure TForm1.Button1xClick(Sender: TObject);
begin
if (StrToFloat(Screen.Text) = 0) then
begin
Screen.Text := '不能运算';
end
else if (Screen.Text <> '') then
Screen.Text := FloatToStr(1 / StrToFloat(Screen.Text))
else
Screen.Text := '不能运算';
end;
但是这样不是很好,为空的仍然报错,我不明白错在哪,盼望高手指教还有一个问题,每次运行程序的位置怎么设定
还有按钮上文字的颜色怎么更改?我在Font属性里改成蓝色的,但是很奇怪还是黑色的
form1的Font属性也改成蓝色的了
如果改字体和粗细都是可以的