?? frmhomepage.pas
字號:
unit frmhomepage;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, RzPanel, RzGroupBar, RzTabs, RzButton, StdCtrls, RzLstBox,
Grids, RzGrids, RzSplit, RzBorder, RzLabel, Mask, RzEdit, RzSpnEdt, RzCmboBx,
ImgList;
type
THomepageFm = class(TForm)
panChild: TRzPanel;
Splt_Main: TRzSplitter;
PnlDate: TRzPanel;
Splt_Child: TRzSplitter;
Pnl_Income: TRzPanel;
Pnl_Payout: TRzPanel;
Pnl_bank: TRzPanel;
GrpBx_Month: TRzGroupBox;
SpEdit_Year: TRzSpinEdit;
lbl_Year: TRzLabel;
ImgLst: TImageList;
lbl_Bank: TRzLabel;
lbl_Payout: TRzLabel;
Strgrd_Payout: TRzStringGrid;
Strgrd_Bank: TRzStringGrid;
DisplayEdit: TRzLEDDisplay;
cmdclose: TRzButton;
Strgrd_Income: TRzStringGrid;
StrGrd_stat: TRzStringGrid;
lbl_Income: TRzLabel;
lbl_stat: TRzLabel;
Timer1: TTimer;
BtnDisplay: TRzBitBtn;
Image1: TImage;
procedure SpEdit_YearChange(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure StrGrd_statDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
procedure Strgrd_BankDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
procedure Strgrd_IncomeDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
procedure Strgrd_PayoutDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FirstRun;
procedure cmdCloseClick(Sender: TObject);
procedure Income_stat;
procedure Payout_stat;
procedure bank_stat;
procedure sum_stat;
private
{ Private declarations }
public
{ Public declarations }
end;
var
HomepageFm: THomepageFm;
implementation
uses frmmain, Common, frmdata;
{$R *.dfm}
procedure THomepageFm.FirstRun;
const Ary_Week: array[1..7] of string =('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat');
begin
MainFm.RzProgressStatus1.Percent:=10;
//MainFm.Caption:=application.Title+'-'+'主頁';
SpEdit_Year.Text:=GetPrestr(FormatDateTime('YYYY"-"MM"-"DD', date),0,4);
//CmbBx_Month.Text:=GetPrestr(FormatDateTime('YYYY"-"MM"-"DD', date),6,2);
DisplayEdit.Caption:='Today:'+datetostr(date)+' '+Ary_Week[DayOfWeek(Now)];
MainFm.RzProgressStatus1.Percent:=20;
Income_stat;//收入統計
MainFm.RzProgressStatus1.Percent:=40;
Payout_stat;//開支統計
MainFm.RzProgressStatus1.Percent:=60;
bank_stat; //銀行帳戶余額統計
MainFm.RzProgressStatus1.Percent:=80;
sum_stat;
MainFm.RzProgressStatus1.Percent:=100;
//MainFm.RzProgressStatus1.Percent:=0;
Timer1.Enabled:=true;
end;
procedure THomepageFm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//MainFm.Caption:=application.Title;
end;
procedure THomepageFm.SpEdit_YearChange(Sender: TObject);
begin
Screen.Cursor:=crHourGlass;
MainFm.RzProgressStatus1.Percent:=20;
Income_stat;//收入統計
MainFm.RzProgressStatus1.Percent:=40;
Payout_stat;//開支統計
MainFm.RzProgressStatus1.Percent:=60;
bank_stat; //銀行帳戶余額統計
MainFm.RzProgressStatus1.Percent:=80;
sum_stat;
MainFm.RzProgressStatus1.Percent:=100;
Timer1.Enabled:=true;
Screen.Cursor := crDefault;
end;
procedure THomepageFm.Strgrd_BankDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
s:string;
r:TRect;
begin
with Strgrd_Bank do
begin
Canvas.FillRect(Rect);
s:=Cells[ACol,ARow];
r:=Rect;
DrawText(Canvas.Handle,PChar(s),Length(s),r,DT_CENTER or DT_SINGLELINE or DT_VCENTER);
end;
end;
procedure THomepageFm.Strgrd_IncomeDrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
var
s:string;
r:TRect;
begin
with Strgrd_Income do
begin
Canvas.FillRect(Rect);
s:=Cells[ACol,ARow];
r:=Rect;
DrawText(Canvas.Handle,PChar(s),Length(s),r,DT_CENTER or DT_SINGLELINE or DT_VCENTER);
end;
end;
procedure THomepageFm.Strgrd_PayoutDrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
var
s:string;
r:TRect;
begin
with Strgrd_Payout do
begin
Canvas.FillRect(Rect);
s:=Cells[ACol,ARow];
r:=Rect;
DrawText(Canvas.Handle,PChar(s),Length(s),r,DT_CENTER or DT_SINGLELINE or DT_VCENTER);
end;
end;
procedure THomepageFm.cmdCloseClick(Sender: TObject);
begin
panChild.Parent:=homepageFm;
homepageFm.Close;
end;
procedure THomepageFm.Income_stat; //收入統計
var i,renyuanNum,colx,CurrentTableRecordNum:integer;
family_name,riqi:string;
begin
if datafm.Tbl_Income.RecordCount<1 then
begin
Strgrd_Income.RowCount:=2;
Strgrd_Income.colcount:=2;
Strgrd_Income.Cells[0,0]:='無統計數據';
end
else
begin
ClearStrGrd(Strgrd_Income);
Strgrd_Income.Cells[0,0]:='統計日期';
renyuanNum:=dataFm.Tbl_family_option.RecordCount; //第一步添加人員
colx:=0;
if renyuanNum > 0 then
begin
Strgrd_Income.ColCount:=2;
with dataFm.Tbl_family_option do
begin
CurrentTableRecordNum :=RecNo;
first;
while not EOF do
begin
family_name:=FieldByName('xm').AsString;
{with dataFm.Qry_income_stat_renyuan do
begin // 0
close;
sql.clear;
sql.add('select * from income where renyuan='+''''+family_name+'''');
open; }
//if RecordCount>0 then
//begin //1
colx:=colx+1;
Strgrd_Income.RowCount:=14;
Strgrd_Income.ColCount:=Strgrd_Income.ColCount+1;
Strgrd_Income.Cells[colx,0]:=family_name;
for I := 1 to 12 do // 按月查詢
begin //2
riqi:=SpEdit_Year.Text+'-'+FormatMonth(i);
with dataFm.Qry_income_stat_renyuan do
begin //3
close;
sql.clear;
sql.add('select * from income where renyuan='+''''+family_name+''''+'and riqi like'+'''%'+riqi+ '%''');
open;
Strgrd_Income.Cells[0,i]:=SpEdit_Year.Text+'年'+FormatMonth(i)+'月';
Strgrd_Income.Cells[colx,i]:=SumField(dataFm.Qry_income_stat_renyuan,'jine');
end; //3
end; //2
//end; //1
//end; //0
next;
end;
MoveBy(CurrentTableRecordNum);
colx:=colx+1;
Strgrd_Income.Cells[colx,0]:='共計';
Strgrd_Income.Cells[0,13]:='共計';
StrGrdSum(Strgrd_Income);
end;
end;
end;
end;
procedure THomepageFm.StrGrd_statDrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
var
s:string;
r:TRect;
begin
with StrGrd_stat do
begin
Canvas.FillRect(Rect);
s:=Cells[ACol,ARow];
r:=Rect;
DrawText(Canvas.Handle,PChar(s),Length(s),r,DT_CENTER or DT_SINGLELINE or DT_VCENTER);
end;
end;
procedure THomepageFm.Payout_stat;//開支統計
var CurrentTableRecordNum,Month,colx:integer;
PayoutName,SearchData:string;
begin
if datafm.Tbl_Payout.RecordCount<1 then
begin
Strgrd_Payout.RowCount:=2;
Strgrd_Payout.colcount:=2;
Strgrd_Payout.Cells[0,0]:='無統計數據';
end
else
begin
ClearStrGrd(Strgrd_Payout);
Strgrd_Payout.RowCount:=14;
Strgrd_Payout.colcount:=2;
colx:=0;
Strgrd_Payout.Cells[0,0]:='統計日期';
Strgrd_Payout.Cells[0,13]:='共計';
if datafm.Tbl_Payout_option.RecordCount>0 then
begin
with datafm.Tbl_Payout_option do
begin
CurrentTableRecordNum :=RecNo;
first;
while not EOF do
begin
PayoutName:='';
PayoutName:=FieldByName('xiangmu').AsString;
{with datafm.Qry_Payout_stat1 do
begin
close;
sql.clear ;
sql.add('select * from payout where xiangmu='+''''+PayoutName+'''');
open; }
//if datafm.Qry_Payout_stat1.RecordCount>0 then
// begin
Strgrd_Payout.colcount:=Strgrd_Payout.colcount+1;
colx:=colx+1;
Strgrd_Payout.Cells[colx,0]:= PayoutName;
for Month := 1 to 12 do
begin
SearchData:= SpEdit_Year.Text+'-'+FormatMonth(Month);
with datafm.Qry_Payout_stat2 do
begin
close;
sql.Clear;
sql.add('select * from payout where xiangmu='+''''+PayoutName+''''+'and riqi like'+'''%'+SearchData+ '%''');
open;
Strgrd_Payout.Cells[0,month]:=SpEdit_Year.Text+'年'+FormatMonth(Month)+'月';
Strgrd_Payout.Cells[colx,month]:=SumField(dataFm.Qry_Payout_stat2,'jine');
close;
end;
end;
//end;
//close;
//end;
next;
end;
MoveBy(CurrentTableRecordNum);
colx:=colx+1;
Strgrd_Payout.Cells[colx,0]:='共計' ;
StrGrdSum(Strgrd_Payout);
end;
end;
end;
end;
procedure THomepageFm.bank_stat; //銀行帳戶余額統計
var CurrentTableRecordNum ,rowy,i:integer;
bankbook:string;
Cunru,Quchu,Sum:double;
begin
if datafm.Tbl_Bank.RecordCount<1 then
begin
Strgrd_Bank.RowCount:=1;
Strgrd_Bank.colcount:=1;
Strgrd_Bank.Cells[0,0]:='無統計數據';
end
else
begin
rowy:=0;
ClearStrGrd(Strgrd_Bank);
Strgrd_Bank.ColCount:=2;
Strgrd_Bank.RowCount:=2;
Strgrd_Bank.ColWidths[0]:=100;
Strgrd_Bank.ColWidths[1]:=60;
Strgrd_Bank.Cells[0,0]:='銀行帳戶名稱';
Strgrd_Bank.Cells[1,0]:='帳戶余額';
with DataFm.Tbl_Bank_Option do
begin
CurrentTableRecordNum :=RecNo;
first;
while not EOF do
begin
rowy:=rowy+1;
bankbook:='';
bankbook:= FieldByName('yhmc').AsString+'-'+FieldByName('zh').AsString;
Strgrd_Bank.RowCount:=Strgrd_Bank.RowCount+1;
Strgrd_Bank.Cells[0,rowy]:=bankbook;
with DataFm.Qry_Bank_Stat1 do
begin
close;
sql.clear;
sql.add('select * from bank where kahao='+''''+bankbook+''''+'and xiangmu='+'''存入''');
open;
Cunru:=strtofloat(SumField(dataFm.Qry_Bank_Stat1,'jine'));
end;
with DataFm.Qry_Bank_Stat2 do
begin
close;
sql.clear;
sql.add('select * from bank where kahao='+''''+bankbook+''''+'and xiangmu<>'+'''存入''');
open;
Quchu:=strtofloat(SumField(dataFm.Qry_Bank_Stat2,'jine'));
end;
Strgrd_Bank.Cells[1,rowy]:=floattostr(Cunru-Quchu);
next;
end;
MoveBy(CurrentTableRecordNum);
rowy:=rowy+1;
Strgrd_Bank.Cells[0,rowy]:='共計';
Sum:=0;
for I := 1 to rowy-1 do
begin
Sum:=Sum+strtofloat(Strgrd_Bank.Cells[1,i]);
end;
Strgrd_Bank.Cells[1,rowy]:=floattostr(Sum);
end;
end;
end;
procedure THomepageFm.sum_stat;
var YearIncomeStat,YearPayoutStat,IncomeStat,PayoutStat:double;
year:string;
begin
with StrGrd_stat do //統計表格格式
begin
ClearStrGrd(StrGrd_stat);
ColCount:=2;
RowCount:=8;
ColWidths[0]:=100;
ColWidths[1]:=60;
RowHeights[4]:=5;
Cells[0,0]:='統計項目';
Cells[1,0]:='金額';
Cells[0,1]:=SpEdit_Year.Text+'年'+'收入';
Cells[0,2]:=SpEdit_Year.Text+'年'+'支出';
Cells[0,3]:=SpEdit_Year.Text+'年'+'余額';
Cells[0,5]:='總收入';
Cells[0,6]:='總支出';
Cells[0,7]:='總余額';
end;
year:=SpEdit_Year.Text; //獲取要查看的年份
with DataFm.Qry_income_stat3 do // 查看的年份的收入
begin
close;
sql.Clear;
sql.add('select * from income where riqi like'+'''%'+year+ '%''');
open;
YearIncomeStat:=strtofloat(SumField(DataFm.Qry_income_stat3,'jine'));
StrGrd_stat.Cells[1,1]:=floattostr(YearIncomeStat);
close;
end;
with DataFm.Qry_payout_stat3 do // 查看的年份的支出
begin
close;
sql.Clear;
sql.add('select * from payout where riqi like'+'''%'+year+ '%''');
open;
YearPayoutStat:=strtofloat(SumField(DataFm.Qry_payout_stat3,'jine'));
StrGrd_stat.Cells[1,2]:=floattostr(YearPayoutStat);
close;
end;
StrGrd_stat.Cells[1,3]:=floattostr(YearIncomeStat-YearPayoutStat);// 查看的年份的余額
with DataFm.Qry_income_stat4 do //總收入
begin
close;
sql.Clear;
sql.add('select * from income');
open;
IncomeStat:=strtofloat(SumField(DataFm.Qry_income_stat4,'jine'));
StrGrd_stat.Cells[1,5]:=floattostr(IncomeStat);
close;
end;
with DataFm.Qry_payout_stat4 do //總支出
begin
close;
sql.Clear;
sql.add('select * from payout');
open;
PayoutStat:=strtofloat(SumField(DataFm.Qry_payout_stat4,'jine'));
StrGrd_stat.Cells[1,6]:=floattostr(PayoutStat);
close;
end;
StrGrd_stat.Cells[1,7]:=floattostr(IncomeStat-PayoutStat); //總余額
end;
procedure THomepageFm.Timer1Timer(Sender: TObject);
begin
Timer1.Tag:=Timer1.Tag+1;
if Timer1.Tag>0 then
begin
MainFm.RzProgressStatus1.Percent:=0;
Timer1.Enabled:=false;
Timer1.Tag:=0;
end;
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -