📄 u_timecollect.pas
字号:
unit U_TimeCollect;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
HGrids, HDBGrids, TB97Tlbr, TB97Ctls, TB97, DBTables, Db, Menus,
ComCtrls, ExtCtrls, ImgList, TeeProcs, TeEngine, Chart;
type
TFm_TimeCollect = class(TForm)
MDS: TDataSource;
Dock: TDock97;
Tb97_Func: TToolbar97;
TbBtn_Help: TToolbarButton97;
TbBtn_Exit: TToolbarButton97;
MQuery: TQuery;
MUpSQL: TUpdateSQL;
PPM: TPopupMenu;
PM_Help: TMenuItem;
PM_Exit: TMenuItem;
MTrView: TTreeView;
Spl_Main: TSplitter;
Pnl_DAn: TPanel;
MGrid: THDBGrid;
ImageList: TImageList;
TbSep02: TToolbarSep97;
MQuerys_bjhao: TStringField;
MQuerys_bjmcheng: TStringField;
MQueryi_sjtshu: TIntegerField;
MQueryi_bjtshu: TIntegerField;
MQueryi_kkjshu: TIntegerField;
MQueryi_cdcshu: TIntegerField;
MQueryi_ztcshu: TIntegerField;
TbBtn_Pie: TToolbarButton97;
TabCtrl_Graph: TTabControl;
Notebook_Chart: TNotebook;
Chart_Line: TChart;
Chart_Bar: TChart;
Chart_Pie: TChart;
PM_Z01: TMenuItem;
PM_Pie: TMenuItem;
TbBtn_Print: TToolbarButton97;
TbSp01: TToolbarSep97;
PM_Print: TMenuItem;
PM_Z02: TMenuItem;
procedure TbBtn_ExitClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Spl_MainCanResize(Sender: TObject; var NewSize: Integer;
var Accept: Boolean);
procedure Spl_FuCanResize(Sender: TObject; var NewSize: Integer;
var Accept: Boolean);
procedure MTrViewGetImageIndex(Sender: TObject; Node: TTreeNode);
procedure MTrViewGetSelectedIndex(Sender: TObject; Node: TTreeNode);
procedure MTrViewChange(Sender: TObject; Node: TTreeNode);
procedure TbBtn_HelpClick(Sender: TObject);
procedure TbBtn_PieClick(Sender: TObject);
procedure TbBtn_PrintClick(Sender: TObject);
private
public
FGraphFlag: Boolean;
{Ser_Line: array of TFastLineSeries;
Ser_Bar: array of TBarSeries;
Ser_Pie: array of TPieSeries;}
end;
var
Fm_TimeCollect: TFm_TimeCollect;
procedure Show_TimeCollect;
implementation
uses U_Main, U_GlobalProc, U_GlobalVar, U_DM, U_Print;
{$R *.DFM}
procedure Show_TimeCollect;
var
i: integer;
begin
for i := Fm_Main.MDIChildCount - 1 downto 0 do
begin
if (Fm_Main.MDIChildren[i].Name <> 'Fm_Wizard') and
(Fm_Main.MDIChildren[i].Name <> 'Fm_TimeCollect') then
Fm_Main.MDIChildren[i].Close;
end;
if not Assigned(Fm_TimeCollect) then
begin
Fm_TimeCollect := TFm_TimeCollect.Create(Application);
with Fm_TimeCollect do
begin
FGraphFlag := False;
//MQuery.Open;
RefreshGridStyle(MGrid);
MakeGradeTree(MTrView, 0, True);
MTrView.Items[0].Selected := True;
end;
end;
with Fm_TimeCollect do
begin
if WindowState <> wsMaximized then
WindowState := wsMaximized;
Show;
SetFocus;
end;
end;
procedure TFm_TimeCollect.TbBtn_ExitClick(Sender: TObject);
begin
Close;
end;
procedure TFm_TimeCollect.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
MQuery.Close;
Action := caFree;
Fm_TimeCollect := nil;
end;
procedure TFm_TimeCollect.Spl_MainCanResize(Sender: TObject;
var NewSize: Integer; var Accept: Boolean);
begin
if NewSize < 8 then
Accept := False;
end;
procedure TFm_TimeCollect.Spl_FuCanResize(Sender: TObject;
var NewSize: Integer; var Accept: Boolean);
begin
if NewSize < 8 then
Accept := False;
end;
procedure TFm_TimeCollect.MTrViewGetImageIndex(Sender: TObject;
Node: TTreeNode);
begin //
if Node.HasChildren then
begin
if Node.Expanded then
Node.ImageIndex := 2
else
Node.ImageIndex := 1;
end
else
begin
if Node.Level = 0 then
Node.ImageIndex := 1
else
Node.ImageIndex := 0;
end;
end;
procedure TFm_TimeCollect.MTrViewGetSelectedIndex(Sender: TObject;
Node: TTreeNode);
begin
if Node.HasChildren then
begin
if Node.Expanded then
Node.SelectedIndex := 5
else
Node.SelectedIndex := 4;
end
else
begin
if Node.Level = 0 then
Node.SelectedIndex := 4
else
Node.SelectedIndex := 3;
end;
end;
procedure TFm_TimeCollect.MTrViewChange(Sender: TObject;
Node: TTreeNode);
var
aQuery: TQuery;
i, j: integer;
ContAll, ContGrade: array[2..6] of integer;
begin
with MQuery do
begin
DisableControls;
Close;
SQL.Text := 'SELECT d1.s_bjhao, d1.s_bjmcheng, ' +
'd2.i_sjtshu, d2.i_bjtshu, d2.i_kkjshu, d2.i_cdcshu, ' +
'd2.i_ztcshu FROM bj d1, xskqtj d2 WHERE 1=2';
Open;
end;
aQuery := TQuery.Create(Application);
with aQuery do
try
DataBaseName := DataDBase;
if Integer(Node.Data) = 0 then
begin // 全校 // 学生信息
for j := 2 to 6 do
ContAll[j] := 0;
for i := 0 to SI_GradeCount - 1 do
begin
SQL.Text := 'SELECT d1.s_bjhao, d1.s_bjmcheng, ' +
'SUM(d2.i_sjtshu), SUM(d2.i_bjtshu), SUM(d2.i_kkjshu), ' +
'SUM(d2.i_cdcshu), SUM(d2.i_ztcshu) FROM bj d1, xskqtj d2, xsjbxx d3 ';
SQL.Text := SQL.Text + 'WHERE d1.s_bjhao = d3.s_bjhao AND d2.s_xhao = d3.s_xhao' +
' AND d2.s_xqhao=''' + S_CurTermCode + ''' AND ' +
'd1.si_dqnji=' + IntToStr(i + 1) + 'GROUP BY d1.s_bjhao, d1.s_bjmcheng';
Open;
for j := 2 to 6 do
ContGrade[j] := 0;
while not Eof do
begin
MQuery.Append;
try
for j := 0 to 6 do
begin
MQuery.Fields[j].AsString := Fields[j].AsString;
if j > 1 then
Inc(ContGrade[j], Fields[j].AsInteger);
end;
MQuery.Post;
except
MQuery.Cancel;
end;
Next;
end;
Close;
MQuery.Append;
try
MQuery.Fields[1].AsString := '小计';
for j := 2 to 6 do
begin
MQuery.Fields[j].AsInteger := ContGrade[j];
Inc(ContAll[j], ContGrade[j]);
end;
MQuery.Post;
except
MQuery.Cancel;
end;
end;
MQuery.Append;
try
MQuery.Fields[1].AsString := '总计';
for j := 2 to 6 do
MQuery.Fields[j].AsInteger := ContAll[j];
MQuery.Post;
except
MQuery.Cancel;
end;
end
else if Integer(Node.Data) < 9999 then
begin // 年级
SQL.Text := 'SELECT d1.s_bjhao, d1.s_bjmcheng, ' +
'SUM(d2.i_sjtshu), SUM(d2.i_bjtshu), SUM(d2.i_kkjshu), ' +
'SUM(d2.i_cdcshu), SUM(d2.i_ztcshu) FROM bj d1, xskqtj d2, xsjbxx d3 ';
SQL.Text := SQL.Text + 'WHERE d1.s_bjhao = d3.s_bjhao AND d2.s_xhao = d3.s_xhao' +
' AND d2.s_xqhao=''' + S_CurTermCode + ''' AND ' +
'd1.si_dqnji=' + IntToStr(W_CurYear - Integer(Node.Data) + 1) +
'GROUP BY d1.s_bjhao, d1.s_bjmcheng';
Open;
for j := 2 to 6 do
ContGrade[j] := 0;
while not Eof do
begin
MQuery.Append;
try
for j := 0 to 6 do
begin
MQuery.Fields[j].AsString := Fields[j].AsString;
if j > 1 then
Inc(ContGrade[j], Fields[j].AsInteger);
end;
MQuery.Post;
except
MQuery.Cancel;
end;
Next;
end;
Close;
MQuery.Append;
try
MQuery.Fields[1].AsString := '小计';
for j := 2 to 6 do
begin
MQuery.Fields[j].AsInteger := ContGrade[j];
Inc(ContAll[j], ContGrade[j]);
end;
MQuery.Post;
except
MQuery.Cancel;
end;
end
else
begin // 班级
SQL.Text := 'SELECT SUM(d2.i_sjtshu), SUM(d2.i_bjtshu), SUM(d2.i_kkjshu), ' +
'SUM(d2.i_cdcshu), SUM(d2.i_ztcshu) FROM xskqtj d2, xsjbxx d3 ';
SQL.Text := SQL.Text + 'WHERE d2.s_xhao = d3.s_xhao' +
' AND d2.s_xqhao=''' + S_CurTermCode + ''' AND ' +
'd3.s_bjhao=''' + IntFormatStr(Integer(Node.Data), 9) + '''';
Open;
while not Eof do
begin
MQuery.Append;
try
MQuery.Fields[0].AsString := IntFormatStr(Integer(Node.Data), 9);
MQuery.Fields[1].AsString := Node.Text;
for j := 0 to 4 do
MQuery.Fields[j+2].AsString := Fields[j].AsString;
MQuery.Post;
except
MQuery.Cancel;
end;
Next;
end;
Close;
end;
finally
Close;
Free;
MGrid.BringToFront;
if FGraphFlag then
begin
MGrid.BringToFront;
FGraphFlag := False;
TbBtn_Pie.Caption := '图形';
TbBtn_Pie.Hint := '按图形方式显示统计结果 F7';
TbBtn_Pie.ImageIndex := 20;
FGraphFlag := False;
end;
MQuery.EnableControls;
end;
end;
procedure TFm_TimeCollect.TbBtn_HelpClick(Sender: TObject);
begin //
end;
procedure TFm_TimeCollect.TbBtn_PieClick(Sender: TObject);
begin
if FGraphFlag then
begin
MGrid.BringToFront;
FGraphFlag := False;
TbBtn_Pie.Caption := '图形';
TbBtn_Pie.Hint := '按图形方式显示统计结果 F7';
TbBtn_Pie.ImageIndex := 20;
end else
begin
TabCtrl_Graph.BringToFront;
FGraphFlag := True;
TbBtn_Pie.Caption := '表格';
TbBtn_Pie.Hint := '按表格方式显示统计结果 F7';
TbBtn_Pie.ImageIndex := 28;
end;
end;
procedure TFm_TimeCollect.TbBtn_PrintClick(Sender: TObject);
begin//
Show_Print(MGrid);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -