با سلام
كسي سورس ماشين حساب ويندوز كه با دلفي نوشته شده باشه داره
Printable View
با سلام
كسي سورس ماشين حساب ويندوز كه با دلفي نوشته شده باشه داره
قبلا راجع به این موضوع در قسمت دلفی بحث شده
به تاپیک مربوطه که در بالای قسمت برنامه نویسی هست مراجعه نمایید
اينجا رو يه نگاهي كننقل قول:
نوشته شده توسط zhila
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
با سلام
اينم يه هديه كوچولو از من به شما (سروس ماشين حساب در دلفي)
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
کد ماشین حساب به شرح زیر است:
unit MachinHsab;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, XPMan, ComCtrls, ToolWin, Buttons;
type
TForm1 = class(TForm)
Edit1: TEdit;
B1: TBitBtn;
B2: TBitBtn;
B3: TBitBtn;
B4: TBitBtn;
B5: TBitBtn;
B6: TBitBtn;
B7: TBitBtn;
B8: TBitBtn;
B9: TBitBtn;
B0: TBitBtn;
Sub: TBitBtn;
BitBtn2: TBitBtn;
Mul: TBitBtn;
Div1: TBitBtn;
JZR: TBitBtn;
NotNum: TBitBtn;
Power: TBitBtn;
Mos: TBitBtn;
RM: TBitBtn;
WM: TBitBtn;
CM: TBitBtn;
C: TBitBtn;
Button1: TBitBtn;
Button2: TBitBtn;
BackSpace: TBitBtn;
Dot: TBitBtn;
procedure B1Click(Sender: TObject);
procedure B2Click(Sender: TObject);
procedure B0Click(Sender: TObject);
procedure B3Click(Sender: TObject);
procedure B4Click(Sender: TObject);
procedure B5Click(Sender: TObject);
procedure B6Click(Sender: TObject);
procedure B7Click(Sender: TObject);
procedure B8Click(Sender: TObject);
procedure B9Click(Sender: TObject);
procedure DotClick(Sender: TObject);
procedure AddClick(Sender: TObject);
procedure MulClick(Sender: TObject);
procedure Div1Click(Sender: TObject);
procedure CClick(Sender: TObject);
procedure Sub1Click(Sender: TObject);
procedure JZRClick(Sender: TObject);
procedure NotNumClick(Sender: TObject);
procedure PowerClick(Sender: TObject);
procedure MosClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure RMClick(Sender: TObject);
procedure WMClick(Sender: TObject);
procedure CMClick(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure B3MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure SubClick(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure B5MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure BackSpaceClick(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Op,CC,KK:Char;
Num,MR,R:Real;
implementation
uses StrUtils;
{$R *.dfm}
Procedure Calc;
begin
Num:=StrToFloat(form1.Edit1.Text);
Case Op of
'+':begin
R:=R+Num;
form1.Edit1.Text:=FloatToStr(R);
Op:='+';
end;
'-':begin
if KK='0' then begin R:=StrToFloat(form1.edit1.text); KK:='1'; CC:='1'; Op:='-'; exit; end;
R:=R-Num;
form1.Edit1.Text:=FloatToStr(R);
Op:='-';
end;
'*':begin
if KK='0' then begin R:=StrToFloat(form1.edit1.text); KK:='1'; CC:='1'; Op:='*'; exit; end;
R:=R*Num;
form1.Edit1.Text:=FloatToStr(R);
Op:='*';
end;
'/':begin
if KK='0' then begin R:=StrToFloat(form1.edit1.text); KK:='1'; CC:='1'; Op:='/'; exit; end;
if Num=0 then
ShowMessage('ÚÏÏ ÕÝÑ ÈÑÇÈÑ ÈÇ ãÎÑÌ ÔÏå æ ÊÞÓíã Çã˜Çä ÐíÑ äíÓÊ')
else
begin
R:=R/Num;
form1.Edit1.Text:=FloatToStr(R);
Op:='/';
end;
end;
'S':begin
R:=Sqrt(Num);
form1.Edit1.Text:=FloatToStr(R);
Op:='S';
end;
'@':Begin
R:=1/Num;
Form1.Edit1.Text:=FloatToStr(R);
Op:='@';
end;
'N':begin
R:=Num*(-1);
form1.Edit1.Text:=FloatToStr(R);
Op:='N';
end;
'X':begin
if KK='0' then begin R:=StrToFloat(form1.edit1.text); KK:='1'; CC:='1'; Op:='X'; exit; end;
R:=R*R;
form1.Edit1.Text:=FloatToStr(R);
Op:='X';
end;
end;
CC:='1'; KK:='1';
end;
procedure TForm1.B1Click(Sender: TObject);
begin
if CC='0' then
Edit1.Text:=Edit1.Text+'1'
else
begin
Edit1.Clear;
Edit1.Text:=Edit1.Text+'1'
end;
CC:='0';
end;
procedure TForm1.B2Click(Sender: TObject);
begin
if CC='0' then
Edit1.Text:=Edit1.Text+'2'
else
begin
Edit1.Clear;
Edit1.Text:=Edit1.Text+'2'
end;
CC:='0';
end;
procedure TForm1.B0Click(Sender: TObject);
begin
if CC='0' then
Edit1.Text:=Edit1.Text+'0'
else
begin
Edit1.Clear;
Edit1.Text:=Edit1.Text+'0'
end;
CC:='0';
end;
procedure TForm1.B3Click(Sender: TObject);
begin
if CC='0' then
Edit1.Text:=Edit1.Text+'3'
else
begin
Edit1.Clear;
Edit1.Text:=Edit1.Text+'3'
end;
CC:='0';
end;
procedure TForm1.B4Click(Sender: TObject);
begin
if CC='0' then
Edit1.Text:=Edit1.Text+'4'
else
begin
Edit1.Clear;
Edit1.Text:=Edit1.Text+'4'
end;
CC:='0';
end;
procedure TForm1.B5Click(Sender: TObject);
begin
if CC='0' then
Edit1.Text:=Edit1.Text+'5'
else
begin
Edit1.Clear;
Edit1.Text:=Edit1.Text+'5'
end;
CC:='0';
end;
procedure TForm1.B6Click(Sender: TObject);
begin
if CC='0' then
Edit1.Text:=Edit1.Text+'6'
else
begin
Edit1.Clear;
Edit1.Text:=Edit1.Text+'6'
end;
CC:='0';
end;
procedure TForm1.B7Click(Sender: TObject);
begin
if CC='0' then
Edit1.Text:=Edit1.Text+'7'
else
begin
Edit1.Clear;
Edit1.Text:=Edit1.Text+'7'
end;
CC:='0';
end;
procedure TForm1.B8Click(Sender: TObject);
begin
if CC='0' then
Edit1.Text:=Edit1.Text+'8'
else
begin
Edit1.Clear;
Edit1.Text:=Edit1.Text+'8'
end;
CC:='0';
end;
procedure TForm1.B9Click(Sender: TObject);
begin
if CC='0' then
Edit1.Text:=Edit1.Text+'9'
else
begin
Edit1.Clear;
Edit1.Text:=Edit1.Text+'9'
end;
CC:='0';
end;
procedure TForm1.DotClick(Sender: TObject);
begin
if CC='0' then
Edit1.Text:=Edit1.Text+'.'
else
begin
Edit1.Clear;
Edit1.Text:=Edit1.Text+'.'
end;
CC:='0';
end;
procedure TForm1.AddClick(Sender: TObject);
begin
if Op=' ' then Op:='+';
Op:=Op;
Calc;
Op:='+';
end;
procedure TForm1.MulClick(Sender: TObject);
begin
if Op=' ' then Op:='*';
Op:=Op;
Calc;
Op:='*';
end;
procedure TForm1.Div1Click(Sender: TObject);
begin
if Op=' ' then Op:='/';
Op:=Op;
Calc;
Op:='/';
end;
procedure TForm1.CClick(Sender: TObject);
begin
Op:=' ';
Edit1.Clear;
Num:=0;
R:=0;
Edit1.Text:='0.0';
CC:='1'; KK:='0';
end;
procedure TForm1.Sub1Click(Sender: TObject);
begin
if Op=' ' then Op:='#';
Op:=Op;
Calc;
Op:='#';
end;
procedure TForm1.JZRClick(Sender: TObject);
begin
if Op=' ' then Op:='S';
Op:=Op;
Calc;
Op:='S';
Calc;
end;
procedure TForm1.NotNumClick(Sender: TObject);
begin
if Op=' ' then Op:='N';
Op:=Op;
Calc;
Op:='N';
Calc;
end;
procedure TForm1.PowerClick(Sender: TObject);
begin
if Op=' ' then Op:='X';
Op:=Op;
Calc;
R:=StrToFloat(Edit1.Text);
Op:='X';
Calc;
end;
procedure TForm1.MosClick(Sender: TObject);
begin
Calc;
Op:='?';
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Op:=' ';
Num:=0; R:=0; KK:='0';
end;
procedure TForm1.RMClick(Sender: TObject);
begin
if Op=' ' then Op:='R';
Op:=Op;
Calc;
Edit1.Text:=FloatToStr(MR);
end;
procedure TForm1.WMClick(Sender: TObject);
begin
if Op=' ' then Op:='W';
Op:=Op;
Calc;
MR:=StrToFloat(Edit1.Text);
end;
procedure TForm1.CMClick(Sender: TObject);
begin
if Op=' ' then Op:='#';
Op:=Op;
Calc;
MR:=0;
end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
label L;
begin
Case Key Of
8:BackSpaceClick(Self);
96:B0Click(Self);
97:B1Click(Self);
98:B2Click(Self);
99:B3Click(Self);
100:B4Click(Self);
101:B5Click(Self);
102:B6Click(Self);
103:B7Click(Self);
104:B8Click(Self);
105:B9Click(Self);
13:begin Calc; Op:='?'; end;
107:AddClick(Self);
109:SubClick(Self);
106:MulClick(Self);
110:begin if Pos('.',Edit1.Text)<>0 then exit; DotClick(Self); end;
111:Div1Click(Self);
end;
end;
procedure TForm1.B3MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Edit1.SetFocus;
end;
procedure TForm1.SubClick(Sender: TObject);
begin
if Op=' ' then Op:='-';
Op:=Op;
Calc;
Op:='-';
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
if Op=' ' then Op:='+';
Op:=Op;
Calc;
Op:='+';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if Op<>' ' then Op:='@';
Op:=Op;
Calc;
Op:='@';
Calc;
end;
procedure TForm1.B5MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Edit1.SetFocus;
end;
procedure TForm1.BackSpaceClick(Sender: TObject);
begin
if Edit1.Text='' then Edit1.Text:='0.0';
if StrToFloat(Edit1.Text)=0 then Exit;
Edit1.Text:=LeftBStr(edit1.Text,length(edit1.Text)-1);
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
if Pos('.',Edit1.Text)<>0 then exit;
if CC='0' then
Edit1.Text:=Edit1.Text+'.'
else
begin
Edit1.Clear;
Edit1.Text:=Edit1.Text+'.'
end;
CC:='0';
end;
end.
خداحافظ :biggrin: