📄 uzsdy.pas
字号:
unit Uzsdy;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, Grids, DBGrids, StdCtrls, Buttons, RpDefine, RpRave,
ImgList, ExcelXP, OleServer;
type
Tzsdyfrm = class(TForm)
DBGrid1: TDBGrid;
TreeView1: TTreeView;
BitBtn1: TBitBtn;
Label1: TLabel;
ImageList1: TImageList;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
ExcelApplication1: TExcelApplication;
ExcelWorksheet1: TExcelWorksheet;
ExcelWorkbook1: TExcelWorkbook;
procedure InitTreeView();
procedure FormCreate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure TreeView1Click(Sender: TObject);
procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
zsdyfrm: Tzsdyfrm;
rootnode,YXnode,ZYMCnode,NJnode,BJnode:TTreeNode;
YXstr,ZYMCstr,NJstr,BJstr:string;
implementation
uses UDM, Utxcj, UMain, Ubb, Uabout, Ubbbj;
{$R *.dfm}
procedure Tzsdyfrm.InitTreeView();
var
i,j,k,t:integer;
begin
YXnode:=nil;
rootnode:=nil;
zymcnode:=nil;
NJnode:=nil;
BJnode:=nil;
if TreeView1.selected<>nil then
begin
//当选中了某个目录时,。。。。。
//TreeView1.Selected.Expand(false);
end
else
begin
//如果没有选中某个目录,并且没有根节点则创建节点
if TreeView1.Items.GetFirstNode=nil then
rootnode:= TreeView1.Items.Add(nil,'南华大学图书馆');
rootnode.ImageIndex :=0;
for i:=1 to dm.adocard.RecordCount do //加载学院名称
begin
YXstr:=dm.adocard.FieldValues['YX'];
YXnode:= TreeView1.Items.AddChild(rootnode,YXstr);
YXnode.ImageIndex :=1;
YXnode.SelectedIndex :=1;
with dm.ADOzymc do //根据学院选择专业名称
begin
close;
sql.Clear ;
sql.Add(' select distinct zymc from card where yx='''+YXstr+'''');
open;
end;
for j:=1 to dm.ADOzymc.RecordCount do //加载某学院的所有专业名称
begin
ZYMCstr:=dm.ADOzymc.FieldValues['zymc'];
ZYMCnode:= TreeView1.Items.AddChild(YXnode,ZYMCstr);
ZYMCnode.ImageIndex :=2;
ZYMCnode.SelectedIndex :=2;
with dm.ADOnj do //根据专业名称选择年级
begin
close;
sql.Clear;
sql.Add(' select distinct ZYXH from card where yx='''+YXstr+''''+' and zymc='''+ZYMCstr+'''');
open;
end;
for k:=1 to dm.ADOnj.RecordCount do //加载某学院的某专业的年级
begin
NJstr:=dm.ADOnj.FieldValues['ZYXH'];
NJstr:=copy(NJstr,1,4)+'级';
NJnode:=TreeView1.Items.AddChild(ZYMCnode,NJstr);
NJnode.ImageIndex :=3;
NJnode.SelectedIndex :=3;
with dm.ADObj do //根据专业名称选择年级
begin
close;
sql.Clear ;
sql.Add(' select distinct BHMC from card where yx='''+YXstr+''''+' and zymc='''+ZYMCstr+''''+' and ZYXH like '''+copy(NJstr,1,4)+'%''');
open;
end;
for t:=1 to dm.ADObj.RecordCount do
begin
BJstr:=dm.ADObj.FieldValues['BHMC'];
BJnode:=TreeView1.Items.AddChild(NJnode,BJstr+'班');
BJnode.ImageIndex :=4;
BJnode.SelectedIndex :=4;
dm.ADObj.Next;
end;
dm.ADOnj.Next;
end;
dm.ADOzymc.Next ;
end;
dm.adocard.Next;
end;
end;
end;
procedure Tzsdyfrm.FormCreate(Sender: TObject);
begin
dm.ADOdy.Close;
mainfrm.StatusBar1.Panels.Items[1].Text:='您当前的操作为: '+'证书打印';
with dm.adocard do
begin
close;
sql.Clear ;
sql.Add('select distinct YX from card');
open;
end;
InitTreeView(); //初始化树
BitBtn1.Enabled :=false; //使预览证书按钮不可用
bitbtn3.Enabled :=false; //使信息核对按钮不可用
if TreeView1.Items.GetFirstNode<>nil then //初始化树以后,展开显示根目录中的内容
begin
//TreeView1.Select(TreeView1.Items.GetFirstNode);
TreeView1.Items.GetFirstNode.Expand(false);
end;
end;
procedure Tzsdyfrm.BitBtn1Click(Sender: TObject); //证书预览
begin
//rvproject1.ProjectFile:=extractfilepath(application.ExeName)+'Project1.rav';
//rvproject1.Execute;
//rvproject1.Close ;
bbbjfrm.QRDBText4.Height :=25;
bbbjfrm.QuickRep1.Preview ; //报表预览
end;
procedure Tzsdyfrm.TreeView1Click(Sender: TObject);
begin
if TreeView1.Selected.Level=4 then
begin
with dm.ADOdy do
begin
close;
sql.Clear;
sql.Add('select * from card where yx='''+TreeView1.Selected.Parent.Parent.Parent.Text+''''+' and zymc='''+TreeView1.Selected.Parent.Parent.Text+''''+' and ZYXH like '''+copy(TreeView1.Selected.Parent.Text,1,4)+'%'''+' and BHMC='''+copy(TreeView1.Selected.Text,1,2)+'''');
open;
end;
SetColomnWidth(dbgrid1);
label1.Caption:='当前班级已摄像的人数是:'+inttostr(dm.ADOdy.RecordCount);
BitBtn1.Enabled :=true;
bitbtn3.Enabled :=true; //使信息核对信息按钮可用
end;
end;
procedure Tzsdyfrm.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState); //对dbgrid实现隔行着色
begin
if (DBGrid1.DataSource.DataSet.RecNo mod 2)=0 then
DBGrid1.Canvas.Brush.Color := clWhite
else
DBGrid1.Canvas.Brush.Color := clAqua;
if((State=[gdSelected]) or (State=[gdSelected,gdFocused])) then
if not DBGrid1.SelectedRows.CurrentRowSelected then
DBGrid1.Canvas.Brush.Color := clHighlight;
DBGrid1.Canvas.Pen.Mode := pmMask;
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
procedure Tzsdyfrm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
mainfrm.StatusBar1.Panels.Items[1].Text:='';
end;
procedure Tzsdyfrm.BitBtn2Click(Sender: TObject); //退出窗体
begin
self.Close;
end;
procedure Tzsdyfrm.BitBtn3Click(Sender: TObject); //核对信息(通过excel显示并打印出来)
var
i:integer;
begin
try
excelapplication1.Connect;
except
messagedlg('Excel 可能没有安装',mtError,[mbok],0);
Abort;
end;
excelapplication1.Visible[0]:=true;
excelapplication1.Caption :='学生信息';
excelapplication1.Workbooks.Add(null,0);
excelworkbook1.ConnectTo(excelapplication1.Workbooks[1]);
excelworksheet1.ConnectTo(excelworkbook1.Sheets[1] as _worksheet);
with excelworksheet1.Range['A1','c1'],Font do
begin
Merge(True);//合并单元格
HorizontalAlignment:= xlCenter; //居中显示
Size:=12;
Name:='隶书';
FontStyle:=Bold;
end;
excelworksheet1.Range['A1','c1'].Value2 :=trim(copy(dm.ADOdy.fieldbyname('xh').AsString,1,4))+'级'+trim(dm.ADOdy.fieldbyname('yx').AsString)+trim(dm.ADOdy.fieldbyname('bhmc').AsString)+'班';
i:=2;
excelworksheet1.Cells.Item[i,1]:='学号';
excelworksheet1.Cells.Item[i,2]:= '姓名';
excelworksheet1.Cells.Item[i,3]:= '专业名称';
excelworksheet1.Range['a2','c2'].HorizontalAlignment :=xlcenter; // 居中显示
dm.ADOdy.First;
i:=3;
while not dm.ADOdy.Eof do
begin
excelworksheet1.Cells.Item[i,1]:=trim(dm.ADOdy.fieldbyname('xh').AsString);
excelworksheet1.Cells.Item[i,2]:=trim(dm.ADOdy.fieldbyname('xm').AsString);
excelworksheet1.Cells.Item[i,3]:=trim(dm.ADOdy.fieldbyname('zymc').AsString);
inc(i);
dm.ADOdy.Next;
end;
excelworksheet1.Columns.EntireColumn.AutoFit; //excel中使记录每个字段按照其字段中最长的那个宽度自动显示
excelapplication1.Disconnect;
dm.ADOdy.First;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -