changesche.pas

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

PAS
338
字号
unit changesche;

interface

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

type
  TFormchangesche = class(TForm)
    DBGrid1: TDBGrid;
    Panel4: TPanel;
    ToolBar1: TToolBar;
    DBNavigator1: TDBNavigator;
    ToolButton3: TToolButton;
    Tbnsort: TToolButton;
    ToolButton5: TToolButton;
    tbnprint: TToolButton;
    ToolButton7: TToolButton;
    ImageList1: TImageList;
    Splitter1: TSplitter;
    Panel1: TPanel;
    DBGrid2: TDBGrid;
    Label2: TLabel;
    Edit1: TEdit;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N4: TMenuItem;
    N3: TMenuItem;
    Panel2: TPanel;
    Label1: TLabel;
    MaskEdit1: TMaskEdit;
    DateTimePicker1: TDateTimePicker;
    Label12: TLabel;
    MaskEdit2: TMaskEdit;
    DateTimePicker2: TDateTimePicker;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormShow(Sender: TObject);
    procedure ToolButton7Click(Sender: TObject);
    procedure DBNavigator1BeforeAction(Sender: TObject;
      Button: TNavigateBtn);
    procedure DBGrid1KeyPress(Sender: TObject; var Key: Char);
    procedure DBGrid1TitleClick(Column: TColumn);
    procedure DBGrid2TitleClick(Column: TColumn);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure FormActivate(Sender: TObject);
    procedure DBGrid1DblClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure ToolButton5Click(Sender: TObject);
    procedure TbnsortClick(Sender: TObject);
    procedure N1Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure N4Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure FormKeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure tbnprintClick(Sender: TObject);
    procedure ToolButton3Click(Sender: TObject);
    procedure MaskEdit2Exit(Sender: TObject);
    procedure DateTimePicker1CloseUp(Sender: TObject);
    procedure DateTimePicker2CloseUp(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 }
    fm:string;       //看formchangsche窗体是否存在
  end;

var
  Formchangesche: TFormchangesche;

implementation

uses datamol,main,publicfunction, changetime,  reportofchangesche;

{$R *.DFM}

procedure TFormchangesche.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  Datamod.Adobc.close;
  Datamod.Adochangesche.close;
  formchangesche:=nil;
  action:=cafree;
end;

procedure TFormchangesche.FormShow(Sender: TObject);
begin
      left:=10;
      top:=5;
end;

procedure TFormchangesche.ToolButton7Click(Sender: TObject);
begin
  close;
end;

procedure TFormchangesche.DBNavigator1BeforeAction(Sender: TObject;
  Button: TNavigateBtn);
begin
  case button of
    nbinsert,
      nbedit:begin
              formchangetime:=Tformchangetime.create(application);
              if button=nbinsert then
                datamod.ADOchangesche.Insert
              else if button=nbedit then
                datamod.adochangesche.edit;
              try
               formchangetime.showModal;
               fm:='free';
              finally
               formchangetime.free;
              end;
            end;
  end;
end;

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

procedure TFormchangesche.DBGrid1TitleClick(Column: TColumn);
begin
  if f='DESC' then
    f:='ASC'
  else
    f:='DESC';
  datamod.adochangesche.Sort := column.FieldName +' '+f;
end;

procedure TFormchangesche.DBGrid2TitleClick(Column: TColumn);
begin
  if f='DESC' then
    f:='ASC'
  else
    f:='DESC';
  datamod.adobc.Sort := column.FieldName +' '+f;
end;

procedure TFormchangesche.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if key=#13 then
   begin
     if not datamod.ADObc.Locate('scheno',edit1.text,[]) then
       application.messagebox('对不起,没有这个班次','Warning',mb_ok+mb_iconwarning);
     key:=#0;
   end;
end;

procedure TFormchangesche.FormActivate(Sender: TObject);
begin
  with datamod do
   begin
    adochangesche.close;
    Adochangesche.open;
    adobc.close;
    Adobc.open;
    datetimepicker1.DateTime:=date;
    datetimepicker2.DateTime:=date;
    maskedit1.Text:=datetostr(date);
    maskedit2.text:=datetostr(date);
    datamod.adochangesche.Filtered:=false;
    datamod.adochangesche.filter:='cdate>='''+maskedit1.Text+''' and cdate<='''+maskedit2.Text+''' ';
    datamod.adochangesche.Filtered:=true;
   end;
end;

procedure TFormchangesche.DBGrid1DblClick(Sender: TObject);
begin
  dbnavigator1.BeforeAction (dbnavigator1,nbedit);
end;

procedure TFormchangesche.FormCreate(Sender: TObject);
begin
  fm:='active';
end;

procedure TFormchangesche.ToolButton5Click(Sender: TObject);
begin
  findrecorder(DataMod.Adochangesche,'Adochangesche','atd01011');
end;

procedure TFormchangesche.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 TFormchangesche.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 TFormchangesche.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 TFormchangesche.N4Click(Sender: TObject);
var i:1..5;
   sortexp:string;
begin
  sortexp:='';
  for i:=1 to fcount do
  begin
   if dbgrid1.Columns[findex[i]].Color=clgray then
    begin
     sortexp :=sortexp+dbgrid1.Columns[findex[i]].FieldName+' '+fsort[i];
     if i<fcount then sortexp:=sortexp+',';
    end;
  end;
  if sortexp<>'' then datamod.ADOchangesche.Sort :=sortexp;
end;

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

procedure TFormchangesche.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key=vk_f1 then
   begin
    Application.HelpFile :=extractfilepath(application.exename) +'help\pasahelp.hlp';
    application.helpjump('shm_contents0019');
   end;
end;

procedure TFormchangesche.tbnprintClick(Sender: TObject);
begin
  if not assigned(changeschereport) then
     changeschereport:=tchangeschereport.create(self);
     changeschereport.show;
end;

procedure TFormchangesche.ToolButton3Click(Sender: TObject);
var fmat1:string;
begin
  if fmat='/' then
    fmat1:='    /  /  ';
  if fmat='-' then
    fmat1:='    -  -  ';
  datamod.ADOchangesche.Filtered:=false;
  datamod.ADOchangesche.Filter:='';
  datamod.ADOchangesche.Filtered:=true;
  maskedit1.text:=fmat1;
  maskedit2.Text:=fmat1;
end;

procedure TFormchangesche.MaskEdit2Exit(Sender: TObject);
var fmat1:string;
begin
  if fmat='/' then
    fmat1:='    /  /  ';
  if fmat='-' then
    fmat1:='    -  -  ';
  if (maskedit1.text<>fmat1) or (maskedit2.text<>fmat1) then
   begin
     datamod.ADOchangesche.Filtered:=false;
     datamod.ADOchangesche.filter:='cdate>='''+maskedit1.text+''' and cdate<='''+maskedit2.Text+''' ';
     datamod.ADOchangesche.filtered:=true;
   end;
end;

procedure TFormchangesche.DateTimePicker1CloseUp(Sender: TObject);
begin
  maskedit1.Text:=datetostr(datetimepicker1.datetime);
end;

procedure TFormchangesche.DateTimePicker2CloseUp(Sender: TObject);
begin
  maskedit2.Text:=datetostr(datetimepicker2.datetime);
end;

end.

⌨️ 快捷键说明

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