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 + -
显示快捷键?