door.pas

来自「pasa人力资源考勤管理系统」· PAS 代码 · 共 900 行 · 第 1/2 页

PAS
900
字号
unit door;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, RXCtrls, RXClock, StdCtrls,ADODB, ImgList, DBCtrls, ComCtrls,
  ToolWin, DBActns, ActnList, Db, Grids, DBGrids, Buttons, Mask, Menus,
  ppDB, ppDBPipe, ppDBBDE, ppComm, ppRelatv, ppProd, ppClass, ppReport,
  ppCtrls, ppVar, ppBands, ppPrnabl, ppCache;

type
  TFormdoor = class(TForm)
    Dsdoor: TDataSource;
    ImageList1: TImageList;
    ADOdoor: TADODataSet;
    ADOdoorworkno: TStringField;
    ADOdoorcardno: TStringField;
    ADOdoorname: TStringField;
    ADOdoorsexname: TStringField;
    ADOdoordept: TStringField;
    ADOdoorprof: TStringField;
    ADOdoorrq: TStringField;
    ADOdoorbrushtime: TStringField;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N4: TMenuItem;
    N3: TMenuItem;
    ADOQuery1: TADOQuery;
    DataSource1: TDataSource;
    ADODataSet1: TADODataSet;
    ADODataSet1workno: TStringField;
    ADODataSet1cardno: TStringField;
    ADODataSet1name: TStringField;
    ADODataSet1sexname: TStringField;
    ADODataSet1dept: TStringField;
    ADODataSet1prof: TStringField;
    ADODataSet1rq: TStringField;
    ADODataSet1brushtime: TStringField;
    ADODataSet2: TADODataSet;
    DataSource2: TDataSource;
    ADODataSet2workno: TStringField;
    ADODataSet2cardno: TStringField;
    ADODataSet2name: TStringField;
    ADODataSet2sexname: TStringField;
    ADODataSet2dept: TStringField;
    ADODataSet2prof: TStringField;
    ADODataSet2rq: TStringField;
    ADODataSet2num: TIntegerField;
    ADODataSet3: TADODataSet;
    DataSource3: TDataSource;
    ADODataSet3rq: TStringField;
    ADODataSet3workno: TStringField;
    ADODataSet3cardno: TStringField;
    ADODataSet3name: TStringField;
    ADODataSet3sexname: TStringField;
    ADODataSet3dept: TStringField;
    ADODataSet3prof: TStringField;
    ADODataSet3date_count: TIntegerField;
    ADODataSet4: TADODataSet;
    DataSource4: TDataSource;
    ADODataSet4workno: TStringField;
    ADODataSet4cardno: TStringField;
    ADODataSet4name: TStringField;
    ADODataSet4sexname: TStringField;
    ADODataSet4dept: TStringField;
    ADODataSet4prof: TStringField;
    ADODataSet4rq: TStringField;
    ADODataSet4brushtime: TStringField;
    Panel10: TPanel;
    Label31: TLabel;
    Label32: TLabel;
    Label33: TLabel;
    Animate2: TAnimate;
    DateTimePicker5: TDateTimePicker;
    BitBtn1: TBitBtn;
    DateTimePicker6: TDateTimePicker;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    ToolBar1: TToolBar;
    ToolButton1: TToolButton;
    ToolButton6: TToolButton;
    ToolButton5: TToolButton;
    tbnsort: TToolButton;
    tbnfind: TToolButton;
    tbnprint: TToolButton;
    ToolButton4: TToolButton;
    DBNavigator1: TDBNavigator;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    DBGrid1: TDBGrid;
    Panel7: TPanel;
    Label14: TLabel;
    Label15: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label28: TLabel;
    DateTimePicker3: TDateTimePicker;
    DateTimePicker4: TDateTimePicker;
    MaskEdit1: TMaskEdit;
    MaskEdit2: TMaskEdit;
    Edit1: TEdit;
    ComboBox4: TComboBox;
    TabSheet2: TTabSheet;
    Splitter1: TSplitter;
    DBGrid2: TDBGrid;
    DBGrid3: TDBGrid;
    Panel2: TPanel;
    Label13: TLabel;
    Label19: TLabel;
    Label20: TLabel;
    Label21: TLabel;
    Label29: TLabel;
    MaskEdit3: TMaskEdit;
    Edit2: TEdit;
    ComboBox5: TComboBox;
    TabSheet3: TTabSheet;
    Splitter2: TSplitter;
    Panel9: TPanel;
    Label22: TLabel;
    Label23: TLabel;
    Label24: TLabel;
    Label25: TLabel;
    Label26: TLabel;
    Label27: TLabel;
    Label30: TLabel;
    DateTimePicker1: TDateTimePicker;
    DateTimePicker2: TDateTimePicker;
    MaskEdit4: TMaskEdit;
    MaskEdit5: TMaskEdit;
    Edit3: TEdit;
    ComboBox6: TComboBox;
    DBGrid4: TDBGrid;
    DBGrid5: TDBGrid;
    Panel8: TPanel;
    procedure RxSpeedButton3Click(Sender: TObject);

    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure DBGrid1KeyPress(Sender: TObject; var Key: Char);
    procedure ToolButton4Click(Sender: TObject);
    procedure MaskEdit2Exit(Sender: TObject);
    procedure ADOdoorworknoChange(Sender: TField);
    procedure ADOdoorBeforePost(DataSet: TDataSet);
    procedure tbnfindClick(Sender: TObject);
    procedure DBGrid1TitleClick(Column: TColumn);
    procedure Edit1Exit(Sender: TObject);
    procedure tbnsortClick(Sender: TObject);
    procedure N1Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure N4Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure RxSpeedButton2Click(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure ToolButton5Click(Sender: TObject);
    procedure FormKeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure ppReport1BeforePrint(Sender: TObject);
    procedure tbnprintClick(Sender: TObject);
    procedure DateTimePicker3CloseUp(Sender: TObject);
    procedure DateTimePicker4CloseUp(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure ToolButton6Click(Sender: TObject);
    procedure ppReport1PreviewFormCreate(Sender: TObject);
    procedure MaskEdit2Enter(Sender: TObject);
    procedure DBGrid2TitleClick(Column: TColumn);
    procedure DBGrid1Enter(Sender: TObject);
    procedure DBGrid2Enter(Sender: TObject);
    procedure MaskEdit3Change(Sender: TObject);
    procedure MaskEdit3Exit(Sender: TObject);
    procedure Edit2Exit(Sender: TObject);
    procedure DBGrid3TitleClick(Column: TColumn);
    procedure PageControl1Change(Sender: TObject);
    procedure PageControl1Changing(Sender: TObject;
      var AllowChange: Boolean);
    procedure DateTimePicker1CloseUp(Sender: TObject);
    procedure DateTimePicker2CloseUp(Sender: TObject);
    procedure DBGrid4TitleClick(Column: TColumn);
    procedure DBGrid5TitleClick(Column: TColumn);
    procedure Edit3Exit(Sender: TObject);
    procedure ComboBox4Change(Sender: TObject);
    procedure ComboBox5Change(Sender: TObject);
    procedure ComboBox6Change(Sender: TObject);
    procedure ToolButton1Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
  private
    { Private declarations }
    manyfield:boolean;
    findex:array[1..5] of integer;
    fsort:array[1..5] of string;
    fcount:0..5;
    f:string;
  public
    { Public declarations }

  end;

var
  Formdoor: TFormdoor;
  fmat1,fmat2:string;
implementation

uses datamol,main,publicfunction, door_print;

{$R *.DFM}

procedure TFormdoor.RxSpeedButton3Click(Sender: TObject);
begin
    close;
end;

procedure TFormdoor.FormClose(Sender: TObject; var Action: TCloseAction);
begin
    Adodoor.close;
    formdoor:=nil;
    action:=cafree;
end;

procedure TFormdoor.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
     dbgrid_keypress(sender,key);
end;

procedure TFormdoor.ToolButton4Click(Sender: TObject);
begin
    close;
end;

procedure TFormdoor.MaskEdit2Exit(Sender: TObject);
begin
 if maskedit2.Text <>fmat1 then
    begin
      if isdate(maskedit1.text) and isdate(maskedit2.text) then
        begin
          adodoor.Filtered :=false;
          adodoor.Filter :='rq<='''+maskedit2.Text+''' and rq>='''+maskedit1.text+''' ';
          adodoor.Filtered :=true;
        end
        else
        begin
          showmessage('输入的日期无效!!!');
          maskedit1.SetFocus;
        end;
    end;
end;
procedure TFormdoor.ADOdoorworknoChange(Sender: TField);
begin
  if Adodoorworkno.asstring<>'' then
    with datamod do
    begin
       Query1.close;
       Query1.sql.text:='Select * from per24010 where cardno='''+Adodoorworkno.asstring+''' and leave=0 ';
       if not Query1.Eof then
       begin
           Adodoor.edit;
           adodoorcardno.asstring:=Query1.fieldbyname('cardno').asstring;
           adodoorname.asstring:=Query1.fieldbyname('name').asstring;
           adodoorsexname.asstring:=Query1.fieldbyname('sexname').asstring;
           adodoordept.asstring:=Query1.fieldbyname('dept').asstring;
           adodoorprof.asstring:=Query1.fieldbyname('prof').asstring;
           dbgrid1.selectedindex:=6;
       end else
       begin
         Application.messagebox('你输入了一个不存在的工号,请重新输入!','错误',mb_ok+mb_iconerror);
         adodoorname.asstring:='';
         dbgrid1.selectedindex:=0;
       end;
    end;
end;

procedure TFormdoor.ADOdoorBeforePost(DataSet: TDataSet);
begin
    adodoorrq.asstring:=datetostr(date);
    adodoorbrushtime.asstring:=formatdatetime('yyyy'+dateseparator+'mm'+dateseparator+'dd hh:mm:ss',now);
end;

procedure TFormdoor.tbnfindClick(Sender: TObject);
begin
  case  pageControl1.ActivePageIndex of
    0:findrecorder(adodoor,'Adodoor','dor02010');
    1:findrecorder(AdoDataSet2,'AdoDataSet2','dor03010');
    2:findrecorder(AdoDataSet3,'AdoDataSet3','dor04010');
  end;
end;
procedure TFormdoor.DBGrid1TitleClick(Column: TColumn);
begin
  if f='DESC' THEN
    f:='ASC'
  ELSE
    f:='DESC';
  adodoor.Sort :=column.FieldName +' '+f;
end;

procedure TFormdoor.Edit1Exit(Sender: TObject);
begin
  if pagecontrol1.ActivePageIndex=0 then
  begin
    if (MaskEdit1.Text<>fmat1)and(MaskEdit2.Text<>fmat1)and(Edit1.Text<>'')then
    begin
      Adodoor.Close;
      Adodoor.Prepared:=True;
      Adodoor.CommandText:='Select * from dor02010 where rq between '''+MaskEdit1.Text+''' and '''+MaskEdit2.Text+''' and (cardno='''+Edit1.Text+''' or workno='''+Edit1.Text+''' or name='''+Edit1.Text+''' or dept='''+Edit1.Text+''')  order by dept,workno,rq';
      Adodoor.Open;
    end
    else if (MaskEdit1.Text=fmat1)and(MaskEdit2.Text=fmat1)and(Edit1.Text<>'') then
    begin
      Adodoor.Close;
      Adodoor.Prepared:=True;
      Adodoor.CommandText:='Select * from dor02010 where cardno='''+Edit1.Text+''' or workno='''+Edit1.Text+'''or name='''+Edit1.Text+''' or dept='''+Edit1.Text+'''  order by dept,workno,rq';
      Adodoor.open;
    end
    else  if (MaskEdit1.Text<>fmat1)and(MaskEdit2.Text<>fmat1)and(Edit1.Text='')then
    begin
      Adodoor.Close;
      Adodoor.Prepared:=True;
      Adodoor.CommandText:='Select * from dor02010 where rq between '''+MaskEdit1.Text+''' and '''+MaskEdit2.Text+'''  order by dept,workno,rq';
      Adodoor.Open;
    end;

  end
end;
procedure TFormdoor.tbnsortClick(Sender: TObject);
var i:1..5;
begin
  if manyfield then
   begin
     manyfield:=false;
     tbnsort.hint:='设定多字段排序';
     popupmenu1.Items[0].Enabled :=false;
     popupmenu1.Items[1].Enabled :=false;
     popupmenu1.Items[2].Enabled :=false;
     popupmenu1.Items[3].Enabled :=false;
   end
  else begin
    manyfield:=true;
    tbnsort.hint:='取消多字段排序'; //说明现在dbgrid1正处于多字段排序中
    f:='';
    popupmenu1.Items[0].Enabled :=true;
    popupmenu1.Items[1].Enabled :=true;
    popupmenu1.Items[2].Enabled :=true;
    popupmenu1.Items[3].Enabled :=true;
    fcount:=0;
    for i:=1 to 5 do
     begin
      findex[i]:=0;
      fsort[i]:='';
     end;
   end;
end;

procedure TFormdoor.N1Click(Sender: TObject);
var i:integer;
begin
  for i:=1 to fcount do
   if dbgrid1.SelectedIndex =findex[i] then
    begin
     fsort[i]:='ASC';
     exit;
    end;
  if fcount<5 then
   begin
    fcount:=fcount+1;
    findex[fcount]:=dbgrid1.selectedindex;
    fsort[fcount]:='ASC';
    dbgrid1.Columns[dbgrid1.selectedindex].Color :=clgray;
   end;
end;

procedure TFormdoor.N2Click(Sender: TObject);
var i:integer;
begin
  for i:=1 to fcount do
   if dbgrid1.SelectedIndex =findex[i] then
    begin
     fsort[i]:='DESC';
     exit;
    end;
  if fcount<5 then
   begin
    fcount:=fcount+1;
    findex[fcount]:=dbgrid1.selectedindex;
    fsort[fcount]:='DESC';
    dbgrid1.Columns[dbgrid1.selectedindex].Color :=clgray;
   end;
end;

procedure TFormdoor.N4Click(Sender: TObject);
var i:1..5;
begin
  adodoor.Sort:='';
  for i:=1 to fcount do
  begin
   if dbgrid1.Columns[findex[i]].Color=clgray then
    begin
     ADOdoor.Sort :=ADOdoor.Sort+dbgrid1.Columns[findex[i]].FieldName+' '+fsort[i];
     if i<fcount then ADOdoor.Sort:=ADOdoor.Sort+',';
    end;
  end;
end;

procedure TFormdoor.N3Click(Sender: TObject);
var i:1..5;
begin
  for i:=1 to fcount do
    dbgrid1.Columns[findex[i]].Color :=clwindow;
  fcount:=0;
end;

procedure TFormdoor.RxSpeedButton2Click(Sender: TObject);
begin
  adodoor.Close;
  adodoor.CommandText :='select * from dor02010  order by dept,workno,rq';
  adodoor.open;
 { adodoor.Filtered :=false;
  adodoor.Filter :='rq<='''+maskedit2.Text+''' and rq>='''+maskedit1.text+''' ';
  adodoor.Filtered :=true;
  edit1.text:='';"  }

end;

procedure TFormdoor.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if activecontrol=dbgrid1 then
    exit;
  if key=#13 then
    begin
      selectnext(activecontrol,true,true);
      key:=#0;
    end;
end;

procedure TFormdoor.ToolButton5Click(Sender: TObject);
begin
  if PageControl1.ActivePageIndex=0 then
  begin
    Adodoor.filter:='';
    maskedit1.Text:=fmat1;
    maskedit2.Text:=fmat1;
    Adodoor.close;
    Adodoor.CommandText:='Select * from dor02010  order by dept,workno,rq';
    Adodoor.Open;
  end
  else   if PageControl1.ActivePageIndex=1 then
  begin
    ADODataSet2.filter:='';
    maskedit3.Text:=fmat2;

⌨️ 快捷键说明

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