deptrecorder.pas

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

PAS
630
字号
//部门行事历
unit deptrecorder;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Mask, DBCtrls, ExtCtrls, Grids, DBGrids, Buttons, ComCtrls,
  Menus,adodb,db, ToolWin, ImgList;

type
  Tformdeptrecorder = class(TForm)
    DBGrid1: TDBGrid;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N4: TMenuItem;
    N3: TMenuItem;
    Panel2: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label4: TLabel;
    MonthCalendar1: TMonthCalendar;
    DBEdit1: TDBEdit;
    DBEdit3: TDBEdit;
    DBEdit5: TDBEdit;
    DBEdit6: TDBEdit;
    edit1: TEdit;
    DBComboBox1: TDBComboBox;
    DBEdit2: TDBEdit;
    Splitter1: TSplitter;
    ImageList1: TImageList;
    CheckBox1: TCheckBox;
    Splitter2: TSplitter;
    DBGrid2: TDBGrid;
    Panel3: TPanel;
    Label13: TLabel;
    ScrollBox1: TScrollBox;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Shape1: TShape;
    ComboBox1: TComboBox;
    BitBtn7: TBitBtn;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Adom: TADODataSet;
    Adomcomcode: TStringField;
    Adod: TADODataSet;
    Adodcomcode: TStringField;
    Adodcomdate: TStringField;
    Adodcomweek: TStringField;
    Adodmemo: TStringField;
    Adodoperator: TStringField;
    Adodcdate: TStringField;
    Dsd: TDataSource;
    Dsm: TDataSource;
    Adoddeptcode: TStringField;
    ToolBar1: TToolBar;
    ToolButton1: TToolButton;
    ToolButton5: TToolButton;
    tbndelmany: TToolButton;
    tbnsort: TToolButton;
    tbnfind: TToolButton;
    ToolButton7: TToolButton;
    ToolButton4: TToolButton;
    DBNavigator2: TDBNavigator;
    MaskEdit1: TMaskEdit;
    MaskEdit2: TMaskEdit;
    DBRadioGroup1: TDBRadioGroup;
    RadioGroup1: TRadioGroup;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure MonthCalendar1Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn6Click(Sender: TObject);
    procedure BitBtn5Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure FormCreate(Sender: TObject);
    procedure DBComboBox1Exit(Sender: TObject);
    procedure DBComboBox1Change(Sender: TObject);
    procedure BitBtn7Click(Sender: TObject);
    procedure DBNavigator1BeforeAction(Sender: TObject;
      Button: TNavigateBtn);
    procedure DBGrid1TitleClick(Column: TColumn);
    procedure N1Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure N4Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure Edit2Exit(Sender: TObject);
    procedure Edit3Exit(Sender: TObject);
    procedure ToolButton4Click(Sender: TObject);
    procedure tbnfindClick(Sender: TObject);
    procedure tbndelmanyClick(Sender: TObject);
    procedure ToolButton5Click(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure tbnsortClick(Sender: TObject);
    procedure DBComboBox1DrawItem(Control: TWinControl; Index: Integer;
      Rect: TRect; State: TOwnerDrawState);
    procedure DBComboBox1DropDown(Sender: TObject);
    procedure DBEdit3Exit(Sender: TObject);
    procedure FormKeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  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
  formdeptrecorder: Tformdeptrecorder;

implementation

uses datamol,publicfunction,main;

{$R *.DFM}

procedure Tformdeptrecorder.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  setdbgridwidth(dbgrid1,'p'+'deptrec');
  datamod.adodeptrecorder.close;
  adom.close;
  adod.close;
  action:=cafree;
  formdeptrecorder:=nil;
end;

procedure Tformdeptrecorder.MonthCalendar1Click(Sender: TObject);
begin
 with datamod do
 begin
  if not checkbox1.checked then
   begin
     if (adodeptrecorder.State =dsinsert) or (adodeptrecorder.State =dsEdit) then
     begin
       ADOdeptrecordercomdate.asstring:=datetostr(monthcalendar1.date);
       if dayofweek(monthcalendar1.date)>1 then      //把电脑里的星期换成日常中的,一 2,二 3...六 7,天 1
        case (dayofweek(monthcalendar1.date)-1) of
         1:ADOdeptrecordercomweek.asstring:='一';
         2:ADOdeptrecordercomweek.asstring:='二';
         3:ADOdeptrecordercomweek.asstring:='三';
         4:ADOdeptrecordercomweek.asstring:='四';
         5:ADOdeptrecordercomweek.asstring:='五';
         6:ADOdeptrecordercomweek.asstring:='六';
        end
       else
        ADOdeptrecordercomweek.asstring:='日';
     end;
   end
  else begin
    if isdate(Maskedit1.text) then
      Maskedit2.text:=datetostr(monthcalendar1.Date)
    else
      Maskedit1.text:=datetostr(monthcalendar1.Date);
  end;
 end;
end;

procedure Tformdeptrecorder.BitBtn1Click(Sender: TObject);
begin
   if datamod.ADOdeptrecorder.CanModify then
    begin
     datamod.ADOdeptrecorder.Append;
     dbedit5.text:=pubworkname;
    end;
end;

procedure Tformdeptrecorder.BitBtn2Click(Sender: TObject);
begin
  if datamod.adodeptrecorder.canmodify then
     datamod.ADOdeptrecorder.Edit;
end;

procedure Tformdeptrecorder.BitBtn6Click(Sender: TObject);
begin
  if datamod.ADOdeptrecorder.Modified then
   datamod.ADOdeptrecorder.Post;
end;

procedure Tformdeptrecorder.BitBtn5Click(Sender: TObject);
begin
  close;
end;

procedure Tformdeptrecorder.BitBtn3Click(Sender: TObject);
begin
   datamod.adodeptrecorder.delete;
   datamod.adodeptrecorder.refresh;
end;

procedure Tformdeptrecorder.FormActivate(Sender: TObject);
begin
  getdbgridwidth(dbgrid1,'p'+'deptrec');
  datamod.ADOdeptrecorder.Close;
  datamod.ADOdeptrecorder.CursorType :=ctKeyset;
  datamod.ADOdeptrecorder.LockType :=ltpessimistic;
  datamod.ADOdeptrecorder.Open;
  monthcalendar1.Date :=date;
end;

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

procedure Tformdeptrecorder.FormCreate(Sender: TObject);
begin
  with datamod.ADOQuery1 do
  begin
    sql.clear;
    sql.Add('select * from pub05010');
    open;
    while not eof do
    begin
      dbcombobox1.Items.Add(fieldbyname('dno').asstring);
      next;
    end;
    close;
  end;
  adom.open;
  adod.open;
  MonthCalendar1.Date :=date;
end;

procedure Tformdeptrecorder.DBComboBox1Exit(Sender: TObject);
begin
  with datamod.ADOQuery1 do
    begin
      sql.clear;
      sql.add('select dept from pub05010 where dno='''+datamod.adodeptrecorder.fieldbyname('deptcode').asstring+'''');
      open;
      if eof then
       begin
        application.messagebox('没有此部门编号','Warning',mb_ok+mb_iconwarning);
        dbcombobox1.SetFocus;
       end
      else
        edit1.text:=fieldbyname('dept').asstring;
      close;
    end;
end;

procedure Tformdeptrecorder.DBComboBox1Change(Sender: TObject);
begin
  with datamod.ADOQuery1 do
    begin
      sql.clear;
      sql.add('select dept from pub05010 where dno='''+datamod.adodeptrecorder.fieldbyname('deptcode').asstring+'''');
      open;
      if not eof then
        edit1.text:=fieldbyname('dept').asstring;
      close;
    end;
end;

procedure Tformdeptrecorder.BitBtn7Click(Sender: TObject);
var i,j:integer;
    b:boolean;
    d:Tdate;
    thingcode,dp,mem:string;
begin
  if datamod.ADOdeptrecorder.Modified then
     if application.messagebox('当前记录处在编辑状态,选择OK将存盘,否则将取消该记录','电脑提示',mb_okcancel)=idok then
       datamod.ADOdeptrecorder.post
     else
       datamod.ADOdeptrecorder.Cancel;
  thingcode:=edit2.text;
  dp:=edit3.text;
  mem:=edit4.text;
  d:=strtodate(Maskedit1.text);
  if (length(trim(thingcode))=0) or (length(trim(dp))=0) then
   begin
    Application.messagebox('对不起,行事历编码和部门编码不能为空,否则不能产生您要的数据!','Warning',mb_ok+mb_iconwarning);
    exit;
   end;
  if formatdatetime('yyyy'+DateSeparator+'mm'+DateSeparator+'dd',strtodatetime(Maskedit1.text))>formatdatetime('yyyy'+DateSeparator+'mm'+DateSeparator+'dd',strtodatetime(maskedit2.text)) then
   begin
    Application.messagebox('前面的日期不能大于后面的日期','Warning',mb_ok+mb_iconwarning);
    exit;
   end;
  b:=false;
  for i:=1 to 7 do
    if combobox1.Text =combobox1.Items[i-1] then
     begin
      b:=true;
      j:=i;
      if j<>dayofweek(d) then
       begin
        if j<dayofweek(d) then d:=d+7-dayofweek(d)+j;
        if j>dayofweek(d) then d:=d+j-dayofweek(d);
       end;
     end;
  if not b then
   begin
    Application.messagebox('对不起,星期不能为空!','提示',mb_ok+mb_iconinformation);

⌨️ 快捷键说明

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