📄 grsds.pas
字号:
unit Grsds;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, Buttons, Menus, ComCtrls;
type
TFrmGrsds = class(TForm)
GroupBox1: TGroupBox;
RaBt1: TRadioButton;
RaBt2: TRadioButton;
RaBt3: TRadioButton;
RaBt4: TRadioButton;
RaBt5: TRadioButton;
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
ChSuanBtn: TBitBtn;
JiSuanBtn: TBitBtn;
Edit2: TEdit;
HelpBtn: TBitBtn;
ExitBtn: TBitBtn;
Label3: TLabel;
Label4: TLabel;
MainMenu1: TMainMenu;
S1: TMenuItem;
NGzXj: TMenuItem;
H1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
GroupBox2: TGroupBox;
RaBtChina: TRadioButton;
RaBtNoChina: TRadioButton;
NGt: TMenuItem;
NChBao: TMenuItem;
NGChou: TMenuItem;
NLWu: TMenuItem;
NTXQuan: TMenuItem;
NLXi: TMenuItem;
NCChan: TMenuItem;
NORan: TMenuItem;
NQTa: TMenuItem;
N17: TMenuItem;
NQuit: TMenuItem;
Bevel1: TBevel;
StBar: TStatusBar;
Edit3: TEdit;
procedure FrmGrsdsCreate(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure ExitBtnClick(Sender: TObject);
procedure JiSuanBtnClick(Sender: TObject);
procedure ChSuanBtnClick(Sender: TObject);
procedure NQuitClick(Sender: TObject);
procedure RaBtChinaClick(Sender: TObject);
procedure RaBtNoChinaClick(Sender: TObject);
procedure NGzXjClick(Sender: TObject);
procedure NGtClick(Sender: TObject);
procedure NChBaoClick(Sender: TObject);
procedure NGChouClick(Sender: TObject);
procedure NLWuClick(Sender: TObject);
procedure NLXiClick(Sender: TObject);
procedure NCChanClick(Sender: TObject);
procedure NTXQuanClick(Sender: TObject);
procedure NORanClick(Sender: TObject);
procedure NQTaClick(Sender: TObject);
procedure RaBt1Click(Sender: TObject);
procedure RaBt2Click(Sender: TObject);
procedure RaBt3Click(Sender: TObject);
procedure RaBt4Click(Sender: TObject);
procedure RaBt5Click(Sender: TObject);
procedure HelpBtnClick(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure N3Click(Sender: TObject);
private
{ Private declarations }
Procedure GzXj; //声明工资薪金过程
procedure Xianshi; //显示EDIT2即计算结果的过程
procedure GeTi; //个体工商户过程
procedure GaoChou; //稿酬
Procedure LaoWu; //劳务
procedure LiXi; //利息
//Function IsCurrency(TestThis:String):boolean; //是否数字函数
public
{ Public declarations }
end;
var
FrmGrsds: TFrmGrsds;
implementation
{$R *.DFM}
uses about,ShellApi;
//*************以下本模块变量********************//0..
var
Kce,Sde,YsSde,Tax:Single;//所得额,应税所得额,税额
//***********************以下函数部分*****************************//
function IsCurrency(TestThis: String): Boolean;//forward;
begin
try
StrToCurr(TestThis);
except
on EConvertError do
result := False;
else
result := True;
end;
end;
//**********************以上是函数部分**************************//
//**********************以下是过程部分************************//
procedure TFrmGrsds.Xianshi ; //显示计算结果
begin
label4.Visible :=True;
Edit2.Text:= '¥' + CurrToStr(TAX) + '元';
end;
Procedure TFrmGrsds.GzXj ;
begin
If YsSDE < 500 Then
TAX := YsSDE * 0.05
Else If (500 <= YsSDE) And (YsSDE < 2000) then
TAX := (YsSDE * 0.1) - 25
Else If (2000 <= YsSDE) And (YsSDE < 5000)then
TAX := YsSDE * 0.15 - 125
Else If (5000 <= YsSDE) And (YsSDE < 20000) then
TAX := YsSDE * 0.2 - 375
Else If (20000 <= YsSDE) And (YsSDE < 40000) then
TAX := YsSDE * 0.25 - 1375
Else If (40000 <= YsSDE) And (YsSDE < 60000) then
TAX := YsSDE * 0.3 - 3375
Else If (60000 <= YsSDE) And (YsSDE < 80000) then
TAX := YsSDE * 0.25 - 6375
Else If (80000 <= YsSDE) And (YsSDE < 100000) then
TAX := YsSDE * 0.4 - 10375
Else If (YsSDE >= 100000) then
TAX := YsSDE * 0.45 - 15375
Else
Application.messagebox('输入错误!','输入提示',48);
end;
procedure TFrmGrsds.GeTi ; //个体工商业户过程
begin
If YsSDE < 5000 Then
TAX := YsSDE * 0.05
Else If (5000 <= YsSDE) And (YsSDE < 10000) Then
TAX := YsSDE * 0.1 - 250
Else If (10000 <= YsSDE) And (YsSDE < 30000) Then
TAX := YsSDE * 0.2 - 1250
Else If (30000 <= YsSDE) And (YsSDE < 50000) Then
TAX := YsSDE * 0.3 - 4250
Else If (YsSDE >= 50000) Then
TAX := YsSDE * 0.35 - 6750
Else
AppLication.MessageBox('输入错误!','输入提示',48);
end;
Procedure TFrmGrsds.GaoChou ; //稿酬所得
begin
If YsSDE < 4000 Then
begin
YsSDE := YsSDE-800;
end
else
begin
YsSDE := YsSDE-YsSDE*0.2;
end;
TAX := YsSDE * 0.14 //按20%计征,并按应纳税额减征30%
//Tax=(YsSDE*20%)-((YsSDE*20%)*30%)
end;
procedure TFrmGrsds.LaoWu ;//劳务过程
begin
If YsSDE < 4000 Then
begin
YsSDE := YsSDE-800;
end
else
begin
YsSDE := YsSDE-YsSDE*0.2;
end;
If YsSDE < 20000 Then
TAX := YsSDE * 0.2
Else If (20000 <= YsSDE) And (YsSDE < 50000) Then
TAX := YsSDE * 0.3 - 2000
Else If (YsSDE >= 50000) Then
TAX := YsSDE * 0.4 - 7000
Else
Application.Messagebox('输入错误!','输入提示',48);
end;
procedure TFrmGrsds.LiXi ; //利息股息红利所得过程
begin
Tax:=YsSde*0.2
end;
//*******************************以上是过程部分********************//
procedure TFrmGrsds.FrmGrsdsCreate(Sender: TObject);
begin
RaBt1.Caption :='工资、薪金所得';
RaBt2.Caption :='个体工商户生产经营所得';
label1.Caption :='对企事业单位的承包经营、'
+#10#13+'承租经营所得。';
RaBt3.Caption :='稿酬所得';
RaBt4.Caption :='劳务报酬所得';
RaBt5.Caption :='特许权使用费所得,' ;
label2.Caption :='利息、股息、红利所得,'
+#10#13+'财产租赁所得,财产转让所得,'
+#10#13+'偶然所得和其他所得。';
label4.Visible :=False;
StBar.Panels[1].text:='中国公民';
StBar.Panels[3].Text :='工资薪金所得';
RaBt1.Checked :=True; //默认选择“工资薪金”
RaBtChinaClick(self); //默认选择‘中国公民’
RaBtChina.Checked :=True;
Edit3.text:=DateTimeToStr(Now);
JiSuanBtn.Enabled :=False; //计算按钮不可用。
end;
procedure TFrmGrsds.N2Click(Sender: TObject);
begin
FrmAbout.showmodal; //以独占方式打开窗口,
//窗体显示在其他窗体上,关闭后其他窗口才可用。
end;
procedure TFrmGrsds.ExitBtnClick(Sender: TObject);
begin
close; //关闭窗口
end;
procedure TFrmGrsds.JiSuanBtnClick(Sender: TObject);
begin
if IsCurrency(Edit1.text) then
//以下计算;
begin
Sde:=StrToCurr(edit1.text);
if Sde< 0 then application.MessageBox('你的所得为负数吗?',
'输入提示!',48)
// exit //退出这一层
else
if RaBt1.Checked then //选中工资薪金所得
begin
Yssde:=Sde-Kce; //应税所得额=所得额-扣除额
if Yssde<0 Then application.MessageBox('你这个月不用纳税!^_^',
'哈哈!',64)
else
GzXj;
xianshi;
end
else if Rabt2.Checked then //选中个体工商户生产经营所得
begin
YsSde:=Sde;
GeTi;
Xianshi;
end
else if Rabt3.Checked then //稿酬
begin
YsSde:=Sde;
GaoChou;
XianShi;
end
else if Rabt4.checked then //劳务所得
begin
YsSde:=Sde;
LaoWu;
xianshi;
end
else if Rabt5.Checked then // 利息股息红利所得
begin
YsSde:=Sde;
LiXi;
XianShi;
end
else
application.MessageBox('你未选择所得种类','提示',64);
end
else
application.MessageBox ('你输入的是你的所得吗?:(',
'输入提示',48);
end;
procedure TFrmGrsds.ChSuanBtnClick(Sender: TObject);
begin
edit1.Clear; //清除文本框内容。
edit2.Clear ;
label4.Visible :=False;
JiSuanBtn.Enabled :=False;
end;
procedure TFrmGrsds.NQuitClick(Sender: TObject);
begin
ExitBtnClick(self);//退出按钮执行
end;
procedure TFrmGrsds.RaBtChinaClick(Sender: TObject);
begin
StBar.Panels[1].text:='中国公民';
Kce:=1600;
end;
procedure TFrmGrsds.RaBtNoChinaClick(Sender: TObject);
begin
StBar.Panels[1].text:='来华工作人员';
Kce:=4800;
end;
procedure TFrmGrsds.NGzXjClick(Sender: TObject);
begin
StBar.Panels[3].text:='工资薪金所得';
RaBt1.Checked :=True;
NGzXj.Checked :=True;
NGt.Checked :=False;
NChbao.Checked :=False;
NGChou.Checked :=False;
NLWu.Checked :=False;
NTXQuan.Checked :=False;
NLXi.Checked :=False;
NCChan.Checked :=False;
NORan.Checked :=False;
NQTa.Checked :=False;
end;
procedure TFrmGrsds.NGtClick(Sender: TObject);
begin
StBar.Panels[3].text:='个体工商户生产经营所得';
RaBt2.Checked :=True;
NGzXj.Checked :=False;
NGt.Checked :=True;
NChbao.Checked :=False;
NGChou.Checked :=False;
NLWu.Checked :=False;
NTXQuan.Checked :=False;
NLXi.Checked :=False;
NCChan.Checked :=False;
NORan.Checked :=False;
NQTa.Checked :=False;
end;
procedure TFrmGrsds.NChBaoClick(Sender: TObject);
begin
StBar.Panels[3].text:='对企事业单位承包、承租经营所得';
RaBt2.Checked :=True;
NGzXj.Checked :=False;
NGt.Checked :=False;
NChbao.Checked :=True;
NGChou.Checked :=False;
NLWu.Checked :=False;
NTXQuan.Checked :=False;
NLXi.Checked :=False;
NCChan.Checked :=False;
NORan.Checked :=False;
NQTa.Checked :=False;
end;
procedure TFrmGrsds.NGChouClick(Sender: TObject);
begin
StBar.Panels[3].text:='稿酬所得';
RaBt3.Checked :=True;
NGzXj.Checked :=False;
NGt.Checked :=False;
NChbao.Checked :=False;
NGChou.Checked :=True;
NLWu.Checked :=False;
NTXQuan.Checked :=False;
NLXi.Checked :=False;
NCChan.Checked :=False;
NORan.Checked :=False;
NQTa.Checked :=False;
end;
procedure TFrmGrsds.NLWuClick(Sender: TObject);
begin
StBar.Panels[3].text:='劳务报酬所得';
RaBt4.Checked :=True;
NGzXj.Checked :=False;
NGt.Checked :=False;
NChbao.Checked :=False;
NGChou.Checked :=False;
NLWu.Checked :=True;
NTXQuan.Checked :=False;
NLXi.Checked :=False;
NCChan.Checked :=False;
NORan.Checked :=False;
NQTa.Checked :=False;
end;
procedure TFrmGrsds.NLXiClick(Sender: TObject);
begin
StBar.Panels[3].text:='利息、股息、红利所得';
RaBt5.Checked :=True;
NGzXj.Checked :=False;
NGt.Checked :=False;
NChbao.Checked :=False;
NGChou.Checked :=False;
NLWu.Checked :=False;
NTXQuan.Checked :=False;
NLXi.Checked :=True;
NCChan.Checked :=False;
NORan.Checked :=False;
NQTa.Checked :=False;
end;
procedure TFrmGrsds.NCChanClick(Sender: TObject);
begin
StBar.Panels[3].text:='财产转让、财产租赁所得';
RaBt5.Checked :=True;
NGzXj.Checked :=False;
NGt.Checked :=False;
NChbao.Checked :=False;
NGChou.Checked :=False;
NLWu.Checked :=False;
NTXQuan.Checked :=False;
NLXi.Checked :=False;
NCChan.Checked :=True;
NORan.Checked :=False;
NQTa.Checked :=False;
end;
procedure TFrmGrsds.NTXQuanClick(Sender: TObject);
begin
StBar.Panels[3].text:='特许权使用费所得';
RaBt5.Checked :=True;
NGzXj.Checked :=False;
NGt.Checked :=False;
NChbao.Checked :=False;
NGChou.Checked :=False;
NLWu.Checked :=False;
NTXQuan.Checked :=True;
NLXi.Checked :=False;
NCChan.Checked :=False;
NORan.Checked :=False;
NQTa.Checked :=False;
end;
procedure TFrmGrsds.NORanClick(Sender: TObject);
begin
StBar.Panels[3].text:='偶然所得';
RaBt5.Checked :=True;
NGzXj.Checked :=False;
NGt.Checked :=False;
NChbao.Checked :=False;
NGChou.Checked :=False;
NLWu.Checked :=False;
NTXQuan.Checked :=False;
NLXi.Checked :=False;
NCChan.Checked :=False;
NORan.Checked :=True;
NQTa.Checked :=False;
end;
procedure TFrmGrsds.NQTaClick(Sender: TObject);
begin
StBar.Panels[3].text:='其他所得';
RaBt5.Checked :=True;
NGzXj.Checked :=False;
NGt.Checked :=False;
NChbao.Checked :=False;
NGChou.Checked :=False;
NLWu.Checked :=False;
NTXQuan.Checked :=False;
NLXi.Checked :=False;
NCChan.Checked :=False;
NORan.Checked :=False;
NQTa.Checked :=True;
end;
procedure TFrmGrsds.RaBt1Click(Sender: TObject);
begin
StBar.Panels[3].Text :='工资薪金所得';
Rabt1.Checked :=True;
end;
procedure TFrmGrsds.RaBt2Click(Sender: TObject);
begin
StBar.Panels[3].Text :='个体工商户生产经营所得';
Rabt2.Checked :=True;
end;
procedure TFrmGrsds.RaBt3Click(Sender: TObject);
begin
StBar.Panels [3].Text :='稿酬所得';
RaBt3.Checked :=True;
end;
procedure TFrmGrsds.RaBt4Click(Sender: TObject);
begin
StBar.Panels[3].Text :='劳务报酬所得';
RaBt4.Checked :=True;
//Kce
end;
procedure TFrmGrsds.RaBt5Click(Sender: TObject);
begin
StBar.Panels [3].Text :='特许权使用费所得';
RaBt5.Checked :=True;
end;
procedure TFrmGrsds.HelpBtnClick(Sender: TObject);
var
S:String;
begin
GetDir(0,s);
shellexecute(handle,nil,'grsds.hlp',
's',nil,SW_SHOWNORMAL);
end;
procedure TFrmGrsds.Edit1Change(Sender: TObject);
begin
JiSuanBtn.Enabled :=True
end;
procedure TFrmGrsds.N3Click(Sender: TObject);
begin
HelpBtnClick(self);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -