📄 unitmain.~pas
字号:
unit UnitMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ComCtrls, Grids, DBGrids, StrUtils;
type
TFormMain = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
OpenDialog1: TOpenDialog;
TreeView1: TTreeView;
DBGrid1: TDBGrid;
N3: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
private
{ Private declarations }
function str_floatstr(str: string): string;
procedure InitTreeView;
public
{ Public declarations }
end;
var
FormMain: TFormMain;
implementation
uses UnitData;
{$R *.dfm}
procedure TFormMain.FormCreate(Sender: TObject);
begin
Left := 0;
Top := 0;
Width := Screen.Width;
Height := Screen.Height-30;
TreeView1.Left:=5;
TreeView1.Top:=5;
TreeView1.Width:=Width div 8;
TreeView1.Height:=Height-60;
DBGrid1.Left:=(Width div 8)+12;
DBGrid1.Top:=5;
DBGrid1.Width:=width-(Width div 8)-24;
DBGrid1.Height:=Height-60;
DBGrid1.DataSource:=DataModule1.DataSource1;
DataModule1.ADOQuery1.Active:=true;
DBGrid1.Columns[0].Width:=DBGrid1.Width*8 div 100;
DBGrid1.Columns[1].Width:=DBGrid1.Width*8 div 100;
DBGrid1.Columns[2].Width:=DBGrid1.Width*5 div 100;
DBGrid1.Columns[3].Width:=DBGrid1.Width*8 div 100;
DBGrid1.Columns[4].Width:=DBGrid1.Width*5 div 100;
DBGrid1.Columns[5].Width:=DBGrid1.Width*5 div 100;
DBGrid1.Columns[6].Width:=DBGrid1.Width*8 div 100;
DBGrid1.Columns[7].Width:=DBGrid1.Width*8 div 100;
DBGrid1.Columns[8].Width:=DBGrid1.Width*8 div 100;
DBGrid1.Columns[9].Width:=DBGrid1.Width*5 div 100;
DBGrid1.Columns[10].Width:=DBGrid1.Width*7 div 100;
DBGrid1.Columns[11].Width:=DBGrid1.Width*5 div 100;
DBGrid1.Columns[12].Width:=DBGrid1.Width*7 div 100;
DBGrid1.Columns[13].Width:=DBGrid1.Width*7 div 100;
InitTreeView;
end;
procedure TFormMain.InitTreeView;
var
vNodeText: string;
vNode: array [1..20] of TTreeNode;
g,k: integer;
begin
with TreeView1.Items do begin
Clear;
vNode[1]:=Add(nil,'学校列表');
DataModule1.ADOQuerySchool.SQL.Text:='select DISTINCT 学校 from 成绩';
DataModule1.ADOQuerySchool.Active:=true;
DataModule1.ADOQuerySchool.Open;
DataModule1.ADOQuerySchool.First;
While Not DataModule1.ADOQuerySchool.Eof do
begin
AddChild(vNode[1],DataModule1.ADOQuerySchool.Fields[0].AsString);
DataModule1.ADOQuerySchool.Next;
end;
DataModule1.ADOQuerySchool.Close;
DataModule1.ADOQueryGrade.SQL.Text:='select DISTINCT 年级 from 成绩';
DataModule1.ADOQueryGrade.Active:=true;
DataModule1.ADOQueryGrade.Open;
DataModule1.ADOQueryGrade.First;
g:=2;
While Not DataModule1.ADOQueryGrade.Eof do
begin
vNode[g]:=AddChild(nil,DataModule1.ADOQueryGrade.Fields[0].AsString);
//-------------
DataModule1.ADOQueryKm.SQL.Text:='select DISTINCT 科目 from 成绩 where 年级=:grad';
DataModule1.ADOQueryKm.Parameters.ParamByName('grad').Value:=DataModule1.ADOQueryGrade.Fields[0].AsString;
DataModule1.ADOQueryKm.Active:=true;
DataModule1.ADOQueryKm.Open;
DataModule1.ADOQueryKm.First;
While Not DataModule1.ADOQueryKm.Eof do
begin
addchild(vNode[g],DataModule1.ADOQueryKm.Fields[0].AsString);
DataModule1.ADOQueryKm.Next;
end;
DataModule1.ADOQueryKm.Close;
//-----------------
DataModule1.ADOQueryGrade.Next;
inc(g);
end;
DataModule1.ADOQueryGrade.Close;
end;
// TreeView1.FullExpand;
end;
procedure TFormMain.N2Click(Sender: TObject);
var
len: integer;
rowtype: integer;
flag:String;
schooltype : integer;
schoolname: String;
recnum: integer;
item : array [1..14] of string;
title : array [1..14] of string;
vartype: array [1..14] of Integer;
TagStream:TFileStream;
Filename: String;
weight_per: array[1..4] of Double;
color: array [1..8,1..2] of Longword ;
i,j: integer;
tempvar: Double;
begin
title[1]:='学校';
title[2]:='年级';
title[3]:='科目';
title[4]:='姓名';
title[5]:='学生数';
title[6]:='考生数';
title[7]:='参考率';
title[8]:='总分';
title[9]:='平均分';
title[10]:='及格数';
title[11]:='及格率';
title[12]:='优秀数';
title[13]:='优秀率';
title[14]:='综合得分';
vartype[1]:=1;
vartype[2]:=1;
vartype[3]:=1;
vartype[4]:=1;
vartype[5]:=2;
vartype[6]:=2;
vartype[7]:=3;
vartype[8]:=3;
vartype[9]:=3;
vartype[10]:=2;
vartype[11]:=3;
vartype[12]:=2;
vartype[13]:=3;
vartype[14]:=3;
if OpenDialog1.Execute then
begin
Filename:=OpenDialog1.FileName;
TagStream:=TFileStream.Create(Filename,fmOpenRead or fmShareDenyNone);
try
TagStream.ReadBuffer(len,sizeof(len));
Setlength(flag,len);
TagStream.ReadBuffer(flag[1],len);
TagStream.ReadBuffer(schooltype,sizeof(schooltype));
TagStream.ReadBuffer(len,sizeof(len));
Setlength(schoolname,len);
TagStream.ReadBuffer(schoolname[1],len);
item[1]:=schoolname;
for i:=1 to 4 do begin
TagStream.ReadBuffer(weight_per[i],sizeof(weight_per[i]));
end;
for i:=1 to 4 do
for j:=1 to 2 do
TagStream.ReadBuffer(color[i][j],sizeof(color[i][j]));
TagStream.ReadBuffer(len,sizeof(len));
TagStream.ReadBuffer(recnum,sizeof(recnum)); // 记录数
for i:=1 to recnum do begin
TagStream.ReadBuffer(rowtype,sizeof(rowtype));
for j:= 2 to 14 do begin
TagStream.ReadBuffer(len,sizeof(len));
Setlength(item[j],len);
TagStream.ReadBuffer(item[j][1],len);
item[j]:=str_floatstr(item[j]);
end;
{} if rowtype=0 then begin
with DataModule1.ADOQuery1 do begin
Append;
for j:=1 to 14 do
if item[j]<>'' then begin
if vartype[j]=1 then
FieldByName(title[j]).AsString:=item[j];
// Fields[j].AsString:=item[j];
if vartype[j]=2 then
FieldByName(title[j]).AsInteger:=strtoint(item[j]);
// Fields[j].AsInteger:=strtoint(item[j]);
if vartype[j]=3 then begin
tempvar:=strtoFloat(item[j]);
formatfloat('0.00', tempvar);
FieldByName(title[j]).AsFloat:=tempvar;
end;
// Fields[j].AsFloat:=strtoFloat(item[j]);
end;
Post;
end;
{} end;
end;
except
TagStream.Free;
Exit;
end;
end;
InitTreeView;
end;
function TFormMain.str_floatstr(str: string): string;
var
len: integer;
thisstr: string;
begin
thisstr:=str;
len:=StrLen(PChar(thisstr));
if RightStr(thisstr,1)='%' then
begin
thisstr:=LeftStr(str,len-1);
end;
result:=thisstr;
end;
procedure TFormMain.N3Click(Sender: TObject);
begin
with DataModule1.ADOQuery2 do begin
SQL.Clear; // 清除SQL属性中的SQL命令语句
SQL.Add('delete * From 成绩');
ExecSQL; // 没有返回结果)
end;
DataModule1.ADOQuery1.Close;
DataModule1.ADOQuery1.Open;
end;
procedure TFormMain.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
if (Node.Level=1) and (Node.Parent.Text='学校列表') then
begin
DataModule1.ADOQueryAllBySchool.SQL.Text:='select * from 成绩 where 学校=:school';
DataModule1.ADOQueryAllBySchool.Parameters.ParamByName('school').Value:=Node.Text;
DataModule1.DataSource1.DataSet:=DataModule1.ADOQueryAllBySchool;
DataModule1.ADOQueryAllBySchool.Close;
DataModule1.ADOQueryAllBySchool.Open;
end;
if (Node.Level=1) and (Node.Parent.Index>0) then
begin
DataModule1.ADOQueryAllBySchool.SQL.Text:='select * from 成绩 where 学校=:school';
DataModule1.ADOQueryAllBySchool.Parameters.ParamByName('school').Value:=Node.Text;
DataModule1.DataSource1.DataSet:=DataModule1.ADOQueryAllBySchool;
DataModule1.ADOQueryAllBySchool.Close;
DataModule1.ADOQueryAllBySchool.Open;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -