workersclassbrowse.pas

来自「用户名:SYSTEM 密码:空 第一次运行请先恢复数据库 DATABAS」· PAS 代码 · 共 190 行

PAS
190
字号
unit WorkersClassBrowse;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, BaseChildForm, ExtCtrls, Grids, Wwdbigrd, Wwdbgrid, ComCtrls,
  StdCtrls, Buttons,AdoDb,DataMod, ImgList, DB,DateUtils;

type
  TfWorkersClassBrowse = class(TfBaseChildForm)
    Panel1: TPanel;
    TreeView: TTreeView;
    wwDBGrid1: TwwDBGrid;
    Splitter1: TSplitter;
    Label2: TLabel;
    DateTimePicker1: TDateTimePicker;
    Label3: TLabel;
    DateTimePicker2: TDateTimePicker;
    ImageList: TImageList;
    BitBtn1: TBitBtn;
    ADOStoredProc1: TADOStoredProc;
    DataSource: TDataSource;
    ADOStoredProc1cYear: TStringField;
    ADOStoredProc1cMonth: TStringField;
    ADOStoredProc1cWorkerNo: TStringField;
    ADOStoredProc1cWorkerName: TStringField;
    ADOStoredProc1cDepartMentNo: TStringField;
    ADOStoredProc1cDepartMentName: TStringField;
    ADOStoredProc1cDay1: TStringField;
    ADOStoredProc1cDay2: TStringField;
    ADOStoredProc1cDay3: TStringField;
    ADOStoredProc1cDay4: TStringField;
    ADOStoredProc1cDay5: TStringField;
    ADOStoredProc1cDay6: TStringField;
    ADOStoredProc1cDay7: TStringField;
    ADOStoredProc1cDay8: TStringField;
    ADOStoredProc1cDay9: TStringField;
    ADOStoredProc1cDay10: TStringField;
    ADOStoredProc1cDay11: TStringField;
    ADOStoredProc1cDay12: TStringField;
    ADOStoredProc1cDay13: TStringField;
    ADOStoredProc1cDay14: TStringField;
    ADOStoredProc1cDay15: TStringField;
    ADOStoredProc1cDay16: TStringField;
    ADOStoredProc1cDay17: TStringField;
    ADOStoredProc1cDay18: TStringField;
    ADOStoredProc1cDay19: TStringField;
    ADOStoredProc1cDay20: TStringField;
    ADOStoredProc1cDay21: TStringField;
    ADOStoredProc1cDay22: TStringField;
    ADOStoredProc1cDay23: TStringField;
    ADOStoredProc1cDay24: TStringField;
    ADOStoredProc1cDay25: TStringField;
    ADOStoredProc1cDay26: TStringField;
    ADOStoredProc1cDay27: TStringField;
    ADOStoredProc1cDay28: TStringField;
    ADOStoredProc1cDay29: TStringField;
    ADOStoredProc1cDay30: TStringField;
    ADOStoredProc1cDay31: TStringField;
    procedure FormCreate(Sender: TObject);
    procedure TreeViewGetImageIndex(Sender: TObject; Node: TTreeNode);
    procedure TreeViewGetSelectedIndex(Sender: TObject; Node: TTreeNode);
    procedure BitBtn1Click(Sender: TObject);
    procedure TreeViewClick(Sender: TObject);
    procedure wwDBGrid1CalcCellColors(Sender: TObject; Field: TField;
      State: TGridDrawState; Highlight: Boolean; AFont: TFont;
      ABrush: TBrush);
  private
    { Private declarations }

  public
    { Public declarations }
  end;

var
  fWorkersClassBrowse: TfWorkersClassBrowse;

implementation

{$R *.dfm}

procedure TfWorkersClassBrowse.FormCreate(Sender: TObject);
begin
  self.WindowState :=wsMaximized;
  fdatamod.PersonnelTreeIni(Treeview,true);
  DateTimepicker1.Date :=Date;
  DateTimepicker2.Date:=incMonth(date);
  adoStoredproc1.Close;
  AdoStoredproc1.Parameters.ParamByName('@StartDate').Value :=formatdateTime('yyyy/mm/dd',DateTimepicker1.Date);
  AdoStoredproc1.Parameters.ParamByName('@EndDate').Value :=formatdateTime('yyyy/mm/dd',DateTimepicker2.Date);
  AdoStoredproc1.Parameters.ParamByName('@DepartMentNo').Value :='';
  AdoStoredproc1.Parameters.ParamByName('@pWorkerNo').Value :='';
  AdoStoredproc1.Open;
end;



procedure TfWorkersClassBrowse.TreeViewGetImageIndex(Sender: TObject;
  Node: TTreeNode);
begin
  inherited;
  if Node.HasChildren  then begin
     if Node.Expanded then
        Node.ImageIndex :=3
     else
        Node.ImageIndex :=0;
  end else
      Node.ImageIndex :=1
end;

procedure TfWorkersClassBrowse.TreeViewGetSelectedIndex(Sender: TObject;
  Node: TTreeNode);
begin
  inherited;
  Node.SelectedIndex:=Node.ImageIndex ;
end;

procedure TfWorkersClassBrowse.BitBtn1Click(Sender: TObject);
begin
  AdoStoredProc1.Close;
  AdoStoredProc1.Parameters.ParamByName('@StartDate').Value :=formatdateTime('yyyy/mm/dd',dateTimepicker1.Date);
  AdoStoredProc1.Parameters.ParamByName('@EndDate').Value :=formatdateTime('yyyy/mm/dd',dateTimepicker2.Date);
  if Treeview.Selected <>nil then begin
    if TreeView.Selected.Level=1 then
        AdoStoredProc1.Parameters.ParamByName('@DepartMentNo').Value :=TItem(Treeview.Selected.Data).ItemID
    else
        AdoStoredProc1.Parameters.ParamByName('@DepartMentNo').Value :='';
    if TreeView.Selected.Level=2 then
        AdoStoredProc1.Parameters.ParamByName('@pWorkerNo').Value :=TItem(Treeview.Selected.Data).ItemID
    else
        AdoStoredProc1.Parameters.ParamByName('@pWorkerNo').Value :='';
  end;
  AdoStoredproc1.Open;
end;

procedure TfWorkersClassBrowse.TreeViewClick(Sender: TObject);
begin
  inherited;
  bitbtn1.Click ;
end;

procedure TfWorkersClassBrowse.wwDBGrid1CalcCellColors(Sender: TObject;
  Field: TField; State: TGridDrawState; Highlight: Boolean; AFont: TFont;
  ABrush: TBrush);
var
  temYearMonth:String;
  i:Integer;
  temDate:TDateTime;
  IsOK:Boolean;
  strDay:String;
begin
  inherited;
  if ADoStoredproc1.IsEmpty then exit;
  IsOk:=True;
  temyearMonth:= AdoStoredProc1.FieldbyName('cYear').asstring+'/'+AdoStoredProc1.FieldbyName('cMonth').asString;
  if (AdoStoredProc1.FieldByName('cYear').asString<>'') and  (AdoStoredProc1.FieldbyName('cMonth').asString<>'') then begin
     for I:=1 to 31 do begin
          strDay:=intTostr(i);
          if Length(strDay)=1 then
               strDay:='0'+strDay;
          if IsValidDate(strToint(AdoStoredProc1.FieldbyName('cYear').asstring),strToint(AdoStoredProc1.FieldbyName('cMonth').asString),i) then begin
                 temDate:=strToDate(temYearMonth+'/'+ strDay);
                 if (temDate>=DateTimepicker1.Date) and (temDate<=DateTimepicker2.date) then begin
                   if (AdoStoredProc1.FieldbyName('cDay'+intTostr(i)).asstring='') then begin
                       IsOk:=False;
                   end;
                 end;
          end ;
     end;
  end;
  If Not IsOK then
     ABrush.Color :=clfuchsia;
  if Copy(Uppercase(Field.FieldName),1,4)='CDAY' then Begin
      strDay:=Copy(Field.FieldName,5,Length(Field.FieldName)-4);
      if Length(strDay)=1 then
          strDay:='0'+strDay;
      if Not IsValidDate(strToint(AdoStoredProc1.FieldbyName('cYear').asstring),strToint(AdoStoredProc1.FieldbyName('cMonth').asString),strToint(strDay)) then
             ABrush.Color :=clGradientActiveCaption
      else begin
             temDate:=strToDate(temYearMonth+'/'+ strDay);
             if (formatdateTime('yyyy/mm/dd',temDate)<formatdateTime('yyyy/mm/dd',DateTimepicker1.Date)) or (formatdateTime('yyyy/mm/dd',temDate)>formatdateTime('yyyy/mm/dd',DateTimepicker2.date)) then
                   ABrush.Color :=clGradientActiveCaption;
      end;

  end;
end;

end.

⌨️ 快捷键说明

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