⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pieceworkfrm.pas

📁 考勤管理是企业内部管理的重要环节和基础
💻 PAS
字号:
unit PieceWorkFrm;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ChildGridFrm, Menus, StdCtrls, Buttons, Grids, DBGrids, ExtCtrls,
  DBGridEh, PrnDbgeh, Db, DBTables;

resourcestring
  sDelete='这是一个空表,不能用删除命令!';
  sCorpName='利利时装厂计件工资录入表';

type
  TPieceWorkForm = class(TChildGridform)
    bbtnEdit: TBitBtn;
    pmedit: TPopupMenu;
    pmiAdd: TMenuItem;
    pmiEdit: TMenuItem;
    pmiDelete: TMenuItem;
    N1: TMenuItem;
    pmiPrint: TMenuItem;
    cbFilter: TCheckBox;
    DBGridEh1: TDBGridEh;
    PrintDBGridEh1: TPrintDBGridEh;
    bbtnReport: TBitBtn;
    bbtnFilter: TBitBtn;
    procedure bbtnEditClick(Sender: TObject);
    procedure pmiAddClick(Sender: TObject);
    procedure pmiEditClick(Sender: TObject);
    procedure pmiDeleteClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure cbFilterClick(Sender: TObject);
    procedure bbtnReportClick(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure bbtnFilterClick(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure FormActivate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

type
  Myarray=array [0..20] of integer;
var
  ParentClientHeight:integer;
  ParentClientWidth:integer;
  LxButton1Left:integer;
  LxButton1Top:integer;
  LxButton2Left:integer;
  LxButton2Top:integer;
  LxButton3Left:integer;
  LxButton3Top:integer;
  LxcbFilterLeft:integer;
  LxcbFilterTop:integer;
  LxDBGridEh1Height:integer;
  LxDBGridEh1Width:integer;
  OldColumnWidth:Myarray;
  NewColumn1Width:Myarray;
  PieceWorkForm: TPieceWorkForm;

implementation

uses unDM2, PieceWorkEditFrm, Dialog, Globals, PWFilterFrm;

{$R *.DFM}

procedure TPieceWorkForm.bbtnEditClick(Sender: TObject);
begin
  inherited;
  pmEdit.Popup((left+bbtnEdit.Left+6),(top+bbtnEdit.top+88+CoolBar2Height));
end;

procedure TPieceWorkForm.pmiAddClick(Sender: TObject);
begin
  inherited;
  PieceWorkEditForm:=TPieceWorkEditForm.Create(Self);
  PieceWorkEditForm.showModalPopup(0);
end;

procedure TPieceWorkForm.pmiEditClick(Sender: TObject);
begin
  inherited;
  PieceWorkEditForm:=TPieceWorkEditForm.Create(Self);
  PieceWorkEditForm.showModalPopup(1);
end;

procedure TPieceWorkForm.pmiDeleteClick(Sender: TObject);
begin
  inherited;
  if   DM2.qryPieceWork.IsEmpty then
    Dialog.messagedlg(Pchar(sDelete),mtinformation,[mbOK],0)
  else
    DM2.qryPieceWork.delete;
end;

procedure TPieceWorkForm.FormCreate(Sender: TObject);
var
  Year,Month,Day:Word;
  i:integer;
begin
  inherited;
  DecodeDate(Now,Year,Month,Day);
  DM2.qryPieceWork.Close;
  DM2.qryPieceWork.SQL.Clear;
  DM2.qryPieceWork.SQL.Add('Select Distinct PieceWork.Department, Department.Name as DepartmentID,');
  DM2.qryPieceWork.SQL.Add('PieceWork.EmpID, employ.Name as Name, PieceWork.workDate, PieceWork.MakeID, MakeNo.code as code,');
  DM2.qryPieceWork.SQL.Add('PieceWork.GoodsID, PieceWork.Number1, PieceWork.Items, WorkProItems.Items as ItemItems,');
  DM2.qryPieceWork.SQL.Add('WorkProItems.Name as ItemsName, WorkProItems.Gprice as Gprice,');
  DM2.qryPieceWork.SQL.Add('WorkProItems.Price as YPrice, PieceWork.PriceType, PieceWork.Price, PieceWork.CallBackPay, PieceWork.No1');
  DM2.qryPieceWork.SQL.Add(' From PieceWork, Department, employ, MakeNo, WorkProItems');
  DM2.qryPieceWork.SQL.Add('Where PieceWork.Department=Department.DepartmentID And PieceWork.EmpID=Employ.EmpID');
  DM2.qryPieceWork.SQL.Add(' And PieceWork.MakeID=MakeNo.MakeID And PieceWork.Items=WorkProItems.No1');
  DM2.qryPieceWork.SQL.Add('And WorkDate Between :StartDate and :EndDate');
  DM2.qryPieceWork.SQL.Add(' order by PieceWork.EmpID,PieceWork.No1');
  DM2.qryPieceWork.Params[0].Value:=EncodeDate(Year,Month,1);
  if Month<>12 then
    DM2.qryPieceWork.Params[1].Value:=EncodeDate(Year,Month+1,1)-1
  else
    DM2.qryPieceWork.Params[1].Value:=EncodeDate(Year,Month,31);
    DM2.qryPieceWork.Open;
  ParentClientHeight:=ClientHeight;
  ParentClientWidth:=ClientWidth;
  LxButton1Left:=bbtnEdit.Left;
  LxButton1Top:=bbtnEdit.Top;
  LxButton2Left:=bbtnReport.Left;
  LxButton2Top:=bbtnReport.top;
  LxButton3Left:=bbtnFilter.Left;
  LxButton3Top:=bbtnFilter.top;
  LxcbFilterLeft:=cbFilter.Left;
  LxcbFilterTop:=cbFilter.Top;
  LxDBGridEh1Height:=DBGridEh1.Height;
  LxDBGridEh1Width:=DBGridEh1.Width;
  for i:=0 to DBGridEh1.FieldCount-1 do begin
    OldColumnWidth[i]:=DBGridEh1.columns[i].Width;
    NewColumn1Width[i]:=DBGridEh1.columns[i].Width;
  end;
//  cbFilter.OnClick(cbFilter);
end;

procedure TPieceWorkForm.cbFilterClick(Sender: TObject);
Var
  Year,Month,Day:Word;
begin
  inherited;
  DecodeDate(Now,Year,Month,Day);
  if cbFilter.Checked then begin
    DM2.qryPieceWork.Close;
    DM2.qryPieceWork.SQL.Clear;
    DM2.qryPieceWork.SQL.Add('Select Distinct PieceWork.Department, Department.Name as DepartmentID,');
    DM2.qryPieceWork.SQL.Add('PieceWork.EmpID, employ.Name as Name, PieceWork.workDate, PieceWork.MakeID, MakeNo.code as code,');
    DM2.qryPieceWork.SQL.Add('PieceWork.GoodsID, PieceWork.Number1, PieceWork.Items, WorkProItems.Items as ItemItems,');
    DM2.qryPieceWork.SQL.Add('WorkProItems.Name as ItemsName, WorkProItems.Gprice as Gprice,');
    DM2.qryPieceWork.SQL.Add('WorkProItems.Price as YPrice, PieceWork.PriceType, PieceWork.Price, PieceWork.CallBackPay, PieceWork.No1');
    DM2.qryPieceWork.SQL.Add(' From PieceWork, Department, employ, MakeNo, WorkProItems');
    DM2.qryPieceWork.SQL.Add('Where PieceWork.Department=Department.DepartmentID And PieceWork.EmpID=Employ.EmpID');
    DM2.qryPieceWork.SQL.Add(' And PieceWork.MakeID=MakeNo.MakeID And PieceWork.Items=WorkProItems.No1');
    DM2.qryPieceWork.SQL.Add('And WorkDate Between :StartDate and :EndDate');
    DM2.qryPieceWork.SQL.Add(' order by PieceWork.EmpID, PieceWork.No1');
    DM2.qryPieceWork.Params[0].Value:=EncodeDate(Year,Month,1);
    if Month<>12 then
      DM2.qryPieceWork.Params[1].Value:=EncodeDate(Year,Month+1,1)-1
    else
      DM2.qryPieceWork.Params[1].Value:=EncodeDate(Year,Month,31);
//    DecodeDate(EncodeDate(Year,Month+1,1)-1,Year,Month,Day);
    DM2.qryPieceWork.Open;
  end else begin
    DM2.qryPieceWork.Close;
    DM2.qryPieceWork.SQL.Clear;
    DM2.qryPieceWork.SQL.Add('Select Distinct PieceWork.Department, Department.Name as DepartmentID,');
    DM2.qryPieceWork.SQL.Add('PieceWork.EmpID, employ.Name as Name, PieceWork.workDate, PieceWork.MakeID, MakeNo.code as code,');
    DM2.qryPieceWork.SQL.Add('PieceWork.GoodsID, PieceWork.Number1, PieceWork.Items, WorkProItems.Items as ItemItems,');
    DM2.qryPieceWork.SQL.Add('WorkProItems.Name as ItemsName, WorkProItems.Gprice as Gprice,');
    DM2.qryPieceWork.SQL.Add('WorkProItems.Price as YPrice, PieceWork.PriceType, PieceWork.Price, PieceWork.CallBackPay, PieceWork.No1');
    DM2.qryPieceWork.SQL.Add(' From PieceWork, Department, employ, MakeNo, WorkProItems');
    DM2.qryPieceWork.SQL.Add('Where PieceWork.Department=Department.DepartmentID And PieceWork.EmpID=Employ.EmpID');
    DM2.qryPieceWork.SQL.Add(' And PieceWork.MakeID=MakeNo.MakeID And PieceWork.Items=WorkProItems.No1');
    DM2.qryPieceWork.SQL.Add(' order by PieceWork.EmpID, PieceWork.No1');
    DM2.qryPieceWork.Open;
  end;
end;

procedure TPieceWorkForm.bbtnReportClick(Sender: TObject);
begin
  inherited;
  PrintDBGridEh1.DBGridEh := DBGridEh1;
  PrintDBGridEh1.PageHeader.CenterText.Clear;
  PrintDBGridEh1.PageHeader.CenterText.Add(Pchar(sCorpName));
  PrintDBGridEh1.SetSubstitutes(['%[Today]',DateToStr(Now)]);
  PrintDBGridEh1.Preview;
end;

procedure TPieceWorkForm.FormDestroy(Sender: TObject);
begin
  inherited;
  PieceWorkForm:=Nil;
end;

procedure TPieceWorkForm.bbtnFilterClick(Sender: TObject);
var
  Year,Month,Day:Word;
  Filter:string;
begin
  inherited;
  PWFilterForm:=TPWFilterForm.Create(Self);
  if PWFilterForm.ShowModal=mrOK then begin
    Filter:=PWFilterForm.Filter;
    DecodeDate(Now,Year,Month,Day);
    DM2.qryPieceWork.Close;
    DM2.qryPieceWork.SQL.Clear;
    DM2.qryPieceWork.SQL.Add('Select Distinct PieceWork.Department, Department.Name as DepartmentID,');
    DM2.qryPieceWork.SQL.Add('PieceWork.EmpID, employ.Name as Name, PieceWork.workDate, PieceWork.MakeID, MakeNo.code as code,');
    DM2.qryPieceWork.SQL.Add('PieceWork.GoodsID, PieceWork.Number1, PieceWork.Items, WorkProItems.Items as ItemItems,');
    DM2.qryPieceWork.SQL.Add('WorkProItems.Name as ItemsName, WorkProItems.Gprice as Gprice,');
    DM2.qryPieceWork.SQL.Add('WorkProItems.Price as YPrice, PieceWork.PriceType, PieceWork.Price, PieceWork.CallBackPay, PieceWork.No1');
    DM2.qryPieceWork.SQL.Add(' From PieceWork, Department, employ, MakeNo, WorkProItems');
    DM2.qryPieceWork.SQL.Add('Where PieceWork.Department=Department.DepartmentID And PieceWork.EmpID=Employ.EmpID');
    DM2.qryPieceWork.SQL.Add(' And PieceWork.MakeID=MakeNo.MakeID And PieceWork.Items=WorkProItems.No1');
    if cbFilter.Checked then begin
      if filter='' then begin
        DM2.qryPieceWork.SQL.Add('And WorkDate Between :StartDate and :EndDate');
        DM2.qryPieceWork.SQL.Add(' order by PieceWork.EmpID, PieceWork.No1');
        DM2.qryPieceWork.Params[0].Value:=EncodeDate(Year,Month,1);
        if Month<>12 then
          DM2.qryPieceWork.Params[1].Value:=EncodeDate(Year,Month+1,1)-1
        else
          DM2.qryPieceWork.Params[1].Value:=EncodeDate(Year,Month,31);
      end else begin
        DM2.qryPieceWork.SQL.Add('And WorkDate Between :StartDate and :EndDate and');
        DM2.qryPieceWork.SQL.Add(Filter);
        DM2.qryPieceWork.SQL.Add(' order by PieceWork.EmpID, PieceWork.No1');
        DM2.qryPieceWork.Params[0].Value:=EncodeDate(Year,Month,1);
        if Month<>12 then
          DM2.qryPieceWork.Params[1].Value:=EncodeDate(Year,Month+1,1)-1
        else
          DM2.qryPieceWork.Params[1].Value:=EncodeDate(Year,Month,31);
      end;
    end else begin
      if filter='' then begin
//        DM2.qryPieceWork.SQL.Add('And');
//        DM2.qryPieceWork.SQL.Add(Filter);
      end else begin
        DM2.qryPieceWork.SQL.Add('And');
        DM2.qryPieceWork.SQL.Add(Filter);
      end;
    end;
    DM2.qryPieceWork.Open;
  end;
end;

procedure TPieceWorkForm.FormResize(Sender: TObject);
var
  i:integer;
begin
  inherited;
   bbtnEdit.left:=LxButton1Left;
   bbtnEdit.top:=ClientHeight-30;
   bbtnReport.Left:=LxButton2Left;
   bbtnReport.top:=ClientHeight-30;
   bbtnFilter.Left:=LxButton3Left;
   bbtnFilter.top:=ClientHeight-30;
   cbFilter.Left:=LxcbFilterLeft;
   cbFilter.Top:=ClientHeight-28;
   DBGridEh1.Width:=ClientWidth;
   DBGridEh1.Height:=ClientHeight-40;
   for i:=0 to DBGridEh1.FieldCount-1 do begin
    DBGridEh1.columns[i].Width:=round((ClientWidth-34)/ParentClientWidth
            *(OldColumnWidth[i]+34/DBGridEh1.Columns.count));
   end;
end;

procedure TPieceWorkForm.FormActivate(Sender: TObject);
begin
  inherited;
  DM2.qryPieceWork.Close;
  DM2.qryPieceWork.Open;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -