factorydateadd.pas

来自「产品信息系统!关于产品基础信息的系统!功能强大!」· PAS 代码 · 共 191 行

PAS
191
字号
unit FactoryDateAdd;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Base, StdCtrls, Buttons, ExtCtrls, DBCtrls, Mask, Spin, ComCtrls,
  DB, ADODB, wwdblook, dxCntner, dxEditor, dxExEdtr, dxEdLib;

type
  TfrmFactoryDateAdd = class(TfrmBase)
    GroupBox1: TGroupBox;
    rbCopy: TRadioButton;
    rbAppend: TRadioButton;
    QIsUnique: TADOQuery;
    spCalendarEdit: TADOStoredProc;
    Panel1: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    DateBegin: TDateTimePicker;
    DateEnd: TDateTimePicker;
    seWorkTime: TSpinEdit;
    seMaxTime: TSpinEdit;
    CheckSat: TCheckBox;
    CheckSun: TCheckBox;
    Label4: TLabel;
    Panel2: TPanel;
    Label5: TLabel;
    Label6: TLabel;
    dxSpinEdit1: TdxSpinEdit;
    rbDelete: TRadioButton;
    Panel3: TPanel;
    Label7: TLabel;
    DelDateBegin: TDateTimePicker;
    DelDateEnd: TDateTimePicker;
    Label8: TLabel;
    QYear: TADOQuery;
    dsYear: TDataSource;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    wwDBLookupCombo1: TwwDBLookupCombo;
    QYearfYear: TStringField;
    procedure SpeedButton2Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure rbAppendClick(Sender: TObject);
    procedure rbCopyClick(Sender: TObject);
    procedure DateBeginChange(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure rbDeleteClick(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmFactoryDateAdd : TfrmFactoryDateAdd;

implementation
uses BaseFactoryDate, DataModule;

{$R *.dfm}

procedure TfrmFactoryDateAdd.SpeedButton2Click(Sender: TObject);
begin
  inherited;
  self.Close;
end;

procedure TfrmFactoryDateAdd.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  //inherited;
end;

procedure TfrmFactoryDateAdd.rbAppendClick(Sender: TObject);
begin
  inherited;
  Panel1.Visible := True;
  Panel2.Visible := false;
  Panel3.Visible := false;
end;

procedure TfrmFactoryDateAdd.rbCopyClick(Sender: TObject);
begin
  inherited;
  Panel2.Visible := True;
  Panel1.Visible := false;
  Panel3.Visible := false;
end;

procedure TfrmFactoryDateAdd.DateBeginChange(Sender: TObject);
begin
  inherited;
  DateEnd.Date := DateBegin.Date;
end;

procedure TfrmFactoryDateAdd.FormCreate(Sender: TObject);
begin
  inherited;
  if not QIsUnique.Active then QIsUnique.Open;
  if not QYear.Active then QYear.Open;
end;

procedure TfrmFactoryDateAdd.rbDeleteClick(Sender: TObject);
begin
  inherited;
  Panel3.Visible := True;
  Panel2.Visible := false;
  Panel1.Visible := false;
end;

procedure TfrmFactoryDateAdd.BitBtn2Click(Sender: TObject);
begin
  inherited;
  with spCalendarEdit do
  begin
    if rbAppend.Checked then
    begin
      if DateEnd.Date < DateBegin.Date then
      begin
        Messagedlg('不能小于起始时间', mtError, [mbOk], 0);
        DateEnd.Date := DateBegin.Date;
        abort;
      end;
      if seWorkTime.value > seMaxTime.value then
        raise Exception.create('标准时间不能大于最大工作时间');
      with QIsUnique do
      begin
        Close;
        SQL.Clear;
        SQL.Add('Select Count(*) from tCalendar where fDay>=' + FormatDatetime('yyyy-mm-dd', DateBegin.Date));
        SQL.Add(' and fDay<=' + FormatDatetime('yyyy-mm-dd', DateBegin.Date));
        Open;
        if Fields[0].asInteger > 0 then
          if Messagedlg('此段时间已制定工厂日历,是否清除重作?', mtWarning, [mbOk, mbCancel], 0) <> mrOk then
            exit;
      end;
      parameters.ParamValues['@intType'] := 1;
      parameters.ParamValues['@datBeginDate'] := DateBegin.Date;
      parameters.ParamValues['@datEndDate'] := DateEnd.Date;
      parameters.ParamValues['@isSaturDay'] := CheckSat.Checked;
      parameters.ParamValues['@isSunDay'] := CheckSun.Checked;
      parameters.ParamValues['@numMaxTime'] := seMaxTime.value;
      parameters.ParamValues['@numWorkTime'] := seWorkTime.value;
      Execproc;
    end
    else if rbCopy.Checked then
    begin
      if wwDBLookupCombo1.text = '' then
        raise Exception.create('请指定源年份!');
      with QIsUnique do
      begin
        Close;
        SQL.Clear;
        SQL.Add('Select Count(*) from tCalendar where fYear=''' + dxSpinEdit1.text + '''');
        Open;
        if Fields[0].asInteger > 0 then
          if Messagedlg('目标年份已制定工厂日历,是否清除重作?', mtWarning, [mbOk, mbCancel], 0) <> mrOk then
            exit;
      end;
      parameters.ParamValues['@intType'] := 2;
      parameters.ParamValues['@datBeginDate'] := EncodeDate(StrtoInt(wwDBLookupCombo1.text), 1, 1);
      parameters.ParamValues['@datEndDate'] := EncodeDate(StrtoInt(dxSpinEdit1.text), 1, 1);
      parameters.ParamValues['@isSaturDay'] := 0;
      parameters.ParamValues['@isSunDay'] := 0;
      parameters.ParamValues['@numMaxTime'] := 0;
      parameters.ParamValues['@numWorkTime'] := 0;
      Execproc;
    end
    else if rbDelete.Checked then
    begin
      if Messagedlg('你确定要删除这段时间的工厂日历吗?', mtWarning, [mbOk, mbCancel], 0) <> mrOk then
        exit;
      parameters.ParamValues['@intType'] := 3;
      parameters.ParamValues['@datBeginDate'] := DelDateBegin.Date;
      parameters.ParamValues['@datEndDate'] := DelDateEnd.Date;
      parameters.ParamValues['@isSaturDay'] := 0;
      parameters.ParamValues['@isSunDay'] := 0;
      parameters.ParamValues['@numMaxTime'] := 0;
      parameters.ParamValues['@numWorkTime'] := 0;
      Execproc;
    end;
  end;
  ModalResult := mrOk;
end;

end.

⌨️ 快捷键说明

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