u_gzda_zhcx.pas
来自「人事管理程序源码」· PAS 代码 · 共 711 行 · 第 1/2 页
PAS
711 行
unit U_gzda_zhcx;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Grids, DBGrids, Buttons,DB,ADODB, QuickRpt,
QRCtrls;
type
TForm_zhcx = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
Image1: TImage;
Label1: TLabel;
Panel4: TPanel;
DBGrid1: TDBGrid;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
BitBtn5: TBitBtn;
Panel5: TPanel;
Label2: TLabel;
ycx_tj: TComboBox;
BitBtn6: TBitBtn;
QuickRep1: TQuickRep;
PageHeaderBand1: TQRBand;
ColumnHeaderBand1: TQRBand;
DetailBand1: TQRBand;
SummaryBand1: TQRBand;
PageFooterBand1: TQRBand;
QRLabel1: TQRLabel;
QRLabel2: TQRLabel;
QRSysData1: TQRSysData;
QRSubDetail1: TQRSubDetail;
PrinterSetupDialog1: TPrinterSetupDialog;
Label3: TLabel;
Edit1: TEdit;
Panel6: TPanel;
procedure BitBtn5Click(Sender: TObject);
procedure xsbg;
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure szcx_tj;
procedure openDBset(cx_tj:string);
procedure BitBtn6Click(Sender: TObject);
procedure ycx_tjDblClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure DBGrid1DblClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure creat_report;
procedure QRSubDetail1NeedData(Sender: TObject; var MoreData: Boolean);
procedure DetailBand1BeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
procedure DetailBand1AfterPrint(Sender: TQRCustomBand;
BandPrinted: Boolean);
procedure QRSubDetail1BeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
procedure QRSubDetail1AfterPrint(Sender: TQRCustomBand;
BandPrinted: Boolean);
procedure PageFooterBand1BeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
procedure SummaryBand1AfterPrint(Sender: TQRCustomBand;
BandPrinted: Boolean);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form_zhcx: TForm_zhcx;
cx_tj:string;
myhs:integer; //每页打印的行数
bz:boolean; //预览或打印时是否到未尾标志
dybz:boolean; //打印是否是在预览的时候时打印
first_bz:boolean; //是否第一次预览,用以在第一次以后预览或打印时清除上一次打印或预览时所创建
i:integer; //的控件
hjtext1:array[1..40] of TQRExpr;
//以下用以在第一次以后预览或打印时清除上一次打印或预览时所创建的控件
cheader1:array[1..40] of Tqrlabel;
byhj_xs:integer; //本页合计的线数;
shap1:array[1..60] of Tqrshape; //本页合计的线类型;
report_width:integer; //Extended; //保存报表的总宽度
implementation
uses U_gzda_dm, U_xsxm_Sd, sjd_zhcx_tj, U_dasjlr_dgcx;
{$R *.dfm}
procedure TForm_zhcx.BitBtn5Click(Sender: TObject);
begin
close;
end;
procedure TForm_zhcx.xsbg;
var
i,j,k:integer;
zdbt,zdm:string;
kd:integer;
begin
with gzda_dm.ADODataSet10 do begin
if active then active:=false;
commandtext:='select * from daxm_xz where xz order by bh';
open;
first;
if recordcount=0 then
begin
showmessage('请首先设定表格的显示项目!!');
abort;
end;
dbgrid1.DataSource:=Nil;
dbgrid1.Columns.Clear;
i:=0;
while not eof do begin
j:=pos('(',fieldbyname('mc').AsString);
k:=pos(')',fieldbyname('mc').AsString);
zdbt:=copy(fieldbyname('mc').AsString,1,j-1);
zdm:=copy(fieldbyname('mc').AsString,j+1,k-j-1);
dbgrid1.Columns.Add;
dbgrid1.Columns[i].FieldName:=zdm;
if fieldbyname('jz').AsBoolean then
dbgrid1.Columns[i].Alignment:=taCenter;
dbgrid1.Columns[i].Title.Caption:=zdbt;
dbgrid1.Columns[i].Font.Name:='宋体';
dbgrid1.Columns[i].Font.Size:=10;
dbgrid1.Columns[i].Width:=fieldbyname('kd').AsInteger*9;
dbgrid1.Columns[i].Title.Alignment:=taCenter;
i:=i+1;
next;
end;
close;
end;
dbgrid1.Refresh;
end;
procedure TForm_zhcx.BitBtn2Click(Sender: TObject);
begin
Form_xsxm_sd:=TForm_xsxm_sd.create(application); //建立
Form_xsxm_sd.showmodal; //以有模式方式显示
Form_xsxm_sd.free ; //释放窗体
xsbg; //显示表格内容
dbgrid1.DataSource:=gzda_dm.DataSource_zhcx;
end;
procedure TForm_zhcx.szcx_tj;
begin
with gzda_dm.ADODataSet10 do begin
if active then active:=false;
commandtext:='select * from zhcx_tj order by xh';
open;
first;
ycx_tj.Items.Clear;
ycx_tj.Items.Add('全部记录数据');
while not eof do begin
ycx_tj.Items.Add(format('%2d',[ycx_tj.Items.Count])+'.'+fieldbyname('bz').AsString+'['+fieldbyname('tj').AsString+']');
next;
end;
close;
end;
ycx_tj.ItemIndex:=0;
end;
procedure TForm_zhcx.BitBtn1Click(Sender: TObject);
var
tjmc:string;
begin
cx_tj:='';
Form_sjd_zhcx_tj:=TForm_sjd_zhcx_tj.create(application); //建立
Form_sjd_zhcx_tj.showmodal; //以有模式方式显示
cx_tj:=Form_sjd_zhcx_tj.memo_cxtj.Lines.Text;
tjmc:=Form_sjd_zhcx_tj.cx_tjmc.Text;
Form_sjd_zhcx_tj.free ; //释放窗体
if cx_tj<>'' then
begin
with gzda_dm.ADODataSet10 do begin
if active then active:=false;
commandtext:='select * from zhcx_tj order by xh';
open;
first;
if not locate('tj',cx_tj,[loCaseInsensitive]) then
begin
append;
fieldbyname('tj').AsString:=cx_tj;
fieldbyname('bz').AsString:=tjmc;
post;
UpdateBatch(arCurrent);
end;
close;
end;
szcx_tj; //重新设定 ycx_tj的值
ycx_tj.Text:=tjmc+'['+cx_tj+']';
panel6.Visible:=true;
panel6.Refresh;
openDBset(cx_tj);
panel6.Visible:=false;
end;
end;
procedure TForm_zhcx.openDBset(cx_tj:string);
begin
with gzda_dm.ADOdataset_zhcx do begin
if active then active:=false;
if (cx_tj<>'') and (cx_tj<>'全部记录数据') then
commandtext:='select * from zgdab where ( '+cx_tj+') order by zgxh'
else
commandtext:='select * from zgdab order by zgxh';
open;
edit1.Text:=inttostr(recordcount);
if recordcount=0 then
begin
showmessage('没有符合条件的数据记录!!');
if panel6.Visible then panel6.Visible:=false;
abort;
end;
first;
end;
bitbtn3.Enabled:=true;
bitbtn4.Enabled:=true;
dbgrid1.DataSource:=gzda_dm.DataSource_zhcx;
dbgrid1.Refresh;
dbgrid1.SetFocus;
end;
procedure TForm_zhcx.BitBtn6Click(Sender: TObject);
var
ls_tj:string;
ks,js:integer;
begin
if pos('全部记录数据',ycx_tj.Text)<>0 then
begin
ls_tj:=ycx_tj.Text;
end
else
begin
ks:=pos('[',ycx_tj.Text);
js:=pos(']',ycx_tj.Text);
ls_tj:=copy(ycx_tj.Text,ks+1,js-ks-1);
end;
if ls_tj='' then abort;
panel6.Visible:=true;
panel6.Refresh;
openDBset(ls_tj);
panel6.Visible:=false;
end;
procedure TForm_zhcx.ycx_tjDblClick(Sender: TObject);
var
cx_tj:string;
ks,js:integer;
begin
if pos('全部记录数据',ycx_tj.Text)<>0 then
begin
cx_tj:=ycx_tj.Text;
end
else
begin
ks:=pos('[',ycx_tj.Text);
js:=pos(']',ycx_tj.Text);
cx_tj:=copy(ycx_tj.Text,ks+1,js-ks-1);
end;
if (cx_tj='') or (cx_tj='全部记录数据') then abort;
with gzda_dm.ADOCommand1 do begin
commandtext:='delete from zhcx_tj where (tj=:cx_tj)';
Parameters.ParamByName('cx_tj').Value:=cx_tj;
Execute;
end;
ycx_tj.ItemIndex:=-1;
szcx_tj; //重新设定 ycx_tj的值
end;
procedure TForm_zhcx.FormClose(Sender: TObject; var Action: TCloseAction);
begin
gzda_dm.DataModuleDestroy(self);
end;
procedure TForm_zhcx.DBGrid1DblClick(Sender: TObject);
begin
panel6.Visible:=true;
panel6.Refresh;
Form_dasjlr_dgcx:=TForm_dasjlr_dgcx.create(application); //建立
with gzda_dm.ADOdataset_zhcx do begin
Form_dasjlr_dgcx.xd_zgxh:=fieldbyname('zgxh').asstring;;
end;
panel6.Visible:=false;
Form_dasjlr_dgcx.showmodal; //以有模式方式显示
Form_dasjlr_dgcx.free ; //释放窗体
end;
procedure TForm_zhcx.FormCreate(Sender: TObject);
begin
i:=0; //当前每页打印行数初始值
myhs:=28; //打印初始每页28行
bz:=false; //预览时是否到未尾标志
dybz:=false; //在打印时是否是在预览时打印.
first_bz:=true; //是否第一次预览
end;
procedure TForm_zhcx.BitBtn4Click(Sender: TObject);
begin
creat_report; //建立动态报表
gzda_dm.ADOdataset_zhcx.DisableControls ;
quickrep1.preview;
first_bz:=false;
dbgrid1.DataSource:=gzda_dm.DataSource_zhcx;
gzda_dm.ADOdataset_zhcx.first;
gzda_dm.ADOdataset_zhcx.enableControls ;
dbgrid1.SetFocus;
dbgrid1.Refresh;
end;
procedure TForm_zhcx.BitBtn3Click(Sender: TObject);
begin
creat_report; //建立动态报表
gzda_dm.ADOdataset_zhcx.DisableControls ;
if PrinterSetupDialog1.Execute then
begin
quickrep1.print;
first_bz:=false;
end;
dbgrid1.DataSource:=gzda_dm.DataSource_zhcx;
gzda_dm.ADOdataset_zhcx.first;
gzda_dm.ADOdataset_zhcx.enableControls ;
dbgrid1.Refresh;
end;
procedure TForm_zhcx.creat_report;
var
leftv,j:integer; //leftv为报表起始位置
cheader:Tqrlabel;
detailtext:Tqrdbtext;
shap:Tqrshape;
hjtext:TQRExpr;
nian,yue,ri:word;
begin
leftv:=0;
QuickRep1.DataSet:=gzda_dm.ADOdataset_zhcx; //定义快速报表的数据环境
QuickRep1.Bands.HasColumnHeader:=false; //清空原来的值 表头
QuickRep1.Bands.HasDetail:=false; //明细
quickrep1.Bands.HasSummary:=false; //总合计
if not first_bz then
begin
for j:=1 to byhj_xs-1 do shap1[j].free; //清除“本页合计“线
for j:=1 to 40 do cheader1[j].free; //清除值"本页合计"值
end;
byhj_xs:=1;
QuickRep1.Bands.HasPageFooter:=false;
QuickRep1.Bands.HasColumnHeader:=true;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?