empset.pas

来自「pasa人力资源考勤管理系统」· PAS 代码 · 共 443 行

PAS
443
字号
unit empset;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Db, ADODB, Menus, Grids, DBGrids, ComCtrls, ImgList, ExtCtrls, DBCtrls,
  ToolWin, StdCtrls, Mask, Buttons, OleServer, Excel97;

type
  TFormempset = class(TForm)
    ImageList1: TImageList;
    PopupMenu1: TPopupMenu;
    n11: TMenuItem;
    N12: TMenuItem;
    n13: TMenuItem;
    PopupMenu2: TPopupMenu;
    n21: TMenuItem;
    PopupMenu3: TPopupMenu;
    MenuItem1: TMenuItem;
    n2: TMenuItem;
    N4: TMenuItem;
    MenuItem3: TMenuItem;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    ExcelApplication1: TExcelApplication;
    Panel3: TPanel;
    Splitter1: TSplitter;
    DBGrid4: TDBGrid;
    Panel4: TPanel;
    DBMemo1: TDBMemo;
    ScrollBox2: TScrollBox;
    Label11: TLabel;
    Panel1: TPanel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    DBEdit1: TDBEdit;
    DBEdit2: TDBEdit;
    DBEdit3: TDBEdit;
    DBEdit4: TDBEdit;
    DBEdit5: TDBEdit;
    DBEdit6: TDBEdit;
    DateTimePicker1: TDateTimePicker;
    ScrollBox1: TScrollBox;
    btnsave: TBitBtn;
    btncancel: TBitBtn;
    btnexit: TBitBtn;
    Panel2: TPanel;
    DBGrid5: TDBGrid;
    Splitter2: TSplitter;
    ToolBar1: TToolBar;
    tbnview: TToolButton;
    tbnsort: TToolButton;
    tbnfind: TToolButton;
    Tbnprint: TToolButton;
    TBEXIT: TToolButton;
    DBNav: TDBNavigator;
    Panel5: TPanel;
    DBGrid1: TDBGrid;
    DataSource1: TDataSource;
    ADODataSet1: TADODataSet;
    ADODataSet1rno: TStringField;
    ADODataSet1Rcourse: TStringField;
    ADODataSet1Rdegree: TStringField;
    ADODataSet1boys: TBCDField;
    ADODataSet1girls: TBCDField;
    ADODataSet1Rprof: TStringField;
    ADODataSet1hopedate: TDateTimeField;
    ADODataSet1memo: TStringField;
    procedure tbnsortClick(Sender: TObject);
    procedure tbnfindClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure TBEXITClick(Sender: TObject);
    procedure Adoemploy1BeforePost(DataSet: TDataSet);
    procedure DBGrid4KeyPress(Sender: TObject; var Key: Char);
    procedure btnsaveClick(Sender: TObject);
    procedure btnexitClick(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure DBGrid5KeyPress(Sender: TObject; var Key: Char);
    procedure btncancelClick(Sender: TObject);
    procedure n11Click(Sender: TObject);
    procedure N12Click(Sender: TObject);
    procedure n13Click(Sender: TObject);
    procedure MenuItem1Click(Sender: TObject);
    procedure n2Click(Sender: TObject);
    procedure N4Click(Sender: TObject);
    procedure MenuItem3Click(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure tbnviewClick(Sender: TObject);
    procedure ToolButton1Click(Sender: TObject);
    procedure DateTimePicker1CloseUp(Sender: TObject);
    procedure FormKeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure TbnprintClick(Sender: TObject);
    procedure DBGrid4DblClick(Sender: TObject);
    procedure DBGrid1DblClick(Sender: TObject);
    procedure DBGrid1Exit(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 }
    procedure ExportData(Table:TDataset);
  end;

var
  Formempset: TFormempset;
  flag:1..3;              //标识哪一个dbgrid调用popubmemu,1是dbgri1;3是dbgrid3,2不作标识

implementation

uses datamol,main,publicfunction, empface, viewreq, printsetup2;
{$R *.DFM}

procedure TFormempset.tbnsortClick(Sender: TObject);
var i:1..5;
begin
  if manyfield then
   begin
     manyfield:=false;
     tbnsort.hint:='设定多字段排序';
     popupmenu3.Items[0].Enabled :=false;
     popupmenu3.Items[1].Enabled :=false;
     popupmenu3.Items[2].Enabled :=false;
     popupmenu3.Items[3].Enabled :=false;
   end
  else begin
    manyfield:=true;
    tbnsort.hint:='取消多字段排序'; //说明现在dbgrid1正处于多字段排序中
    f:='';
    popupmenu3.Items[0].Enabled :=true;
    popupmenu3.Items[1].Enabled :=true;
    popupmenu3.Items[2].Enabled :=true;
    popupmenu3.Items[3].Enabled :=true;
    fcount:=0;
    for i:=1 to 5 do
     begin
      findex[i]:=0;
      fsort[i]:='';
     end;
  end;
{  if application.MessageBox('你确定要删除这笔记录吗?','删除确认',mb_ok+mb_iconquestion)=idyes then
   begin
    case pagecontrol1.ActivePageIndex of
     0:   datamod.adoempplan1.delete;
     1:
        if activecontrol=dbgrid1 then
          adoemploy1.delete
        else if activecontrol=dbgrid2 then
          adoemploy2.delete
        else if activecontrol=dbgrid3 then
          adoemploy3.delete;
    end;
   end;}
end;

procedure TFormempset.tbnfindClick(Sender: TObject);
begin
  findrecorder(datamod.adoempplan1,'Adoempplan1','emp05011');   //调用publicfuction中的查询功能
end;

procedure TFormempset.FormCreate(Sender: TObject);
begin
  with datamod do
  begin
   Adoempplan1.close;
   Adoempplan.close;
   Adoempplan1.CursorType :=ctkeyset;
   Adoempplan.CursorType :=ctkeyset;
   Adoempplan1.LockType :=ltpessimistic;
   Adoempplan.LockType :=ltpessimistic;
   Adoempplan1.open;
   Adoempplan.open;
  end;
   flag:=2;  //标识哪一个dbgrid调用popubmemu,1是dbgri1;3是dbgrid3,2不作标识
end;

procedure TFormempset.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  datamod.adoempplan1.Close;
  datamod.adoempplan.Close;
  setdbgridwidth(dbgrid4,'p'+'empset');
  setdbgridwidth(dbgrid5,'p'+'empset');
  formempset:=nil;
  action:=cafree;
end;

procedure TFormempset.TBEXITClick(Sender: TObject);
begin
  close;
end;

procedure TFormempset.Adoemploy1BeforePost(DataSet: TDataSet);
begin
//  adoemploy1.FieldByName('kind').asstring:='1';
end;

procedure TFormempset.DBGrid4KeyPress(Sender: TObject; var Key: Char);
begin
  dbgrid_keypress(dbgrid4,key);
end;

procedure TFormempset.btnsaveClick(Sender: TObject);
begin
  datamod.Adoempplan1.Post; 
  //datamod.adoempplan.refresh;
end;

procedure TFormempset.btnexitClick(Sender: TObject);
begin
  close;
end;

procedure TFormempset.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if  (activecontrol=dbgrid4) or (activecontrol=dbgrid5) then
    exit
  else   
     if key=#13 then
     begin
        key:=#0;
        selectnext(activecontrol,true,true);
     end;
end;

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

procedure TFormempset.btncancelClick(Sender: TObject);
begin
  datamod.Adoempplan1.CancelUpdates;
end;

procedure TFormempset.n11Click(Sender: TObject);
begin
  datamod.adoempplan1.append;
end;

procedure TFormempset.N12Click(Sender: TObject);
begin
  datamod.adoempplan1.edit;
end;

procedure TFormempset.n13Click(Sender: TObject);
begin
  datamod.adoempplan1.delete;
end;

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

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

procedure TFormempset.N4Click(Sender: TObject);
var i:1..5;
   sortexp:string;
begin
  sortexp:='';
  for i:=1 to fcount do
  begin
   if dbgrid5.Columns[findex[i]].Color=clgray then
    begin
     sortexp :=sortexp+dbgrid5.Columns[findex[i]].FieldName+' '+fsort[i];
     if i<fcount then sortexp:=sortexp+',';
    end;
  end;
  if sortexp<>'' then datamod.Adoempreq.Sort :=sortexp;
end;

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

procedure TFormempset.FormActivate(Sender: TObject);
begin
  getdbgridwidth(dbgrid4,'p'+'empset');
  getdbgridwidth(dbgrid5,'p'+'empset');
  datetimepicker1.DateTime:=date;
end;

procedure TFormempset.tbnviewClick(Sender: TObject);
begin
  if not assigned(formview) then
    formview:=tformview.create(application);
  formview.show;
end;

procedure TFormempset.ToolButton1Click(Sender: TObject);
begin
  if Datamod.Adoempplan.Modified then
   Datamod.Adoempplan.Post;
end;

procedure TFormempset.ExportData(Table:TDataset);
var
  RangeE: Excel97.Range;
  I, Row: Integer;
  Bookmark: TBookmarkStr;
begin
  ExcelApplication1.Visible [0] := True;
  ExcelApplication1.Workbooks.Add (NULL, 0);
  RangeE := ExcelApplication1.ActiveCell;
  for I := 0 to Table.Fields.Count - 1 do
  begin
    RangeE.Value := Table.Fields [I].DisplayLabel;
    RangeE := RangeE.Next;
  end;
  Table.DisableControls;
  try
    Bookmark := Table.Bookmark;
    try
      if Table.State=dsInactive then
        Table.Open;
      Table.First;
      Row := 2;
      while not Table.EOF do
      begin
        RangeE := ExcelApplication1.Range ['A' + IntToStr (Row),
          'A' + IntToStr (Row)];
        for I := 0 to Table.Fields.Count - 1 do
        begin
          RangeE.Value := Table.Fields [I].AsString;
          RangeE := RangeE.Next;
        end;
        Table.Next;
        Inc (Row);
      end;
    finally
      Table.Bookmark := Bookmark;
    end;
  finally
    Table.EnableControls;
  end;
  RangeE:=ExcelApplication1.Activecell;
  RangeE.AutoFormat(3,NULL,Null,null,null,null,null);
end;

procedure TFormempset.DateTimePicker1CloseUp(Sender: TObject);
begin
  datamod.Adoempplan.FieldByName('plandate').asstring :=datetostr(datetimepicker1.date);
end;

procedure TFormempset.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key=VK_F1 then
      begin
        //showmessage('ok!')
     //MessageDlg(Key + ' has been pressed', mtInformation, [mbOK], 0);
      Application.HelpFile :=Extractfilepath(application.ExeName)+ 'help\pasahelp.hlp';
      application.HelpJump('SHM_CONTENTS0047');
    end;
end;

procedure TFormempset.TbnprintClick(Sender: TObject);
begin
  if not assigned(printsetup1) then
     printsetup1:=tprintsetup1.create(self);
     printsetup1.show;
end;

procedure TFormempset.DBGrid4DblClick(Sender: TObject);
begin
  if dbgrid4.SelectedIndex=1 then
     begin
       datamod.Adoempplan1.Edit;
       panel5.Visible:=true;
       adodataset1.Open;
       dbgrid1.SetFocus;
     end;
end;

procedure TFormempset.DBGrid1DblClick(Sender: TObject);
begin
 if dbgrid4.SelectedIndex=1 then
  begin
    datamod.Adoempplan1.Edit;
    datamod.Adoempplan1.FieldByName('rno').asstring:=adodataset1.fieldbyname('rno').asstring;
    datamod.adoempplan1.FieldByName('rprof').asstring:=adodataset1.fieldbyname('rprof').asstring;
    datamod.Adoempplan1.FieldByName('rcourse').asstring:=adodataset1.fieldbyname('rcourse').asstring;
    datamod.Adoempplan1.FieldByName('rdegree').asstring:=adodataset1.fieldbyname('rdegree').asstring;
    datamod.Adoempplan1.FieldByName('boys').asinteger:=adodataset1.fieldbyname('boys').asinteger;
    datamod.Adoempplan1.FieldByName('girls').asinteger:=adodataset1.fieldbyname('girls').asinteger;
    datamod.Adoempplan1.fieldbyname('rdate').asdatetime:=adodataset1.fieldbyname('hopedate').asdatetime;
    datamod.Adoempplan1.FieldByName('mem').asstring:=adodataset1.fieldbyname('memo').asstring;
  end;
  panel5.Visible:=false;
end;

procedure TFormempset.DBGrid1Exit(Sender: TObject);
begin
  panel5.visible:=false;
  adodataset1.Close;
end;

end.

⌨️ 快捷键说明

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