upro.pas

来自「成本系统三层结构源码 开发工具:Delphi 7.0+SQLServer 20」· PAS 代码 · 共 277 行

PAS
277
字号
unit upro;           

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, upub2, dxExEdtr, ActnList, ImgList, Menus, DB, ComCtrls,  Registry,
  ToolWin, Tabs, ExtCtrls, dxCntner, dxTL, dxDBCtrl, dxDBGrid, dxDBTLCl,
  dxGrClms, DBCtrls, StdCtrls, Mask, wwdbdatetimepicker, DBClient;

type
  Tfmpro = class(Tfmpub2)
    Label1: TLabel;
    DBEdit1: TDBEdit;
    Label2: TLabel;
    Label3: TLabel;
    DBLookupComboBox1: TDBLookupComboBox;
    Label4: TLabel;
    DBEdit3: TDBEdit;
    wwDBDateTimePicker1: TwwDBDateTimePicker;
    GridMasProNo: TdxDBGridMaskColumn;
    GridMasProDate: TdxDBGridDateColumn;
    GridMasDeptname: TdxDBGridLookupColumn;
    GridMasRemark: TdxDBGridMaskColumn;
    GridMasCreater: TdxDBGridMaskColumn;
    GridMasCreateDate: TdxDBGridDateColumn;
    GridMasUpdater: TdxDBGridMaskColumn;
    GridMasUpdateDate: TdxDBGridDateColumn;
    GridMasApprover: TdxDBGridMaskColumn;
    GridMasApproveDate: TdxDBGridDateColumn;
    GridMasConfirmer: TdxDBGridMaskColumn;
    GridMasConfirmDate: TdxDBGridDateColumn;
    TabControl1: TTabControl;
    Splitter1: TSplitter;
    GridSubOrderNo: TdxDBGridMaskColumn;
    GridSubMachineID: TdxDBGridMaskColumn;
    GridSubMachineName: TdxDBGridLookupColumn;
    GridSubActionID: TdxDBGridMaskColumn;
    GridSubActionName: TdxDBGridLookupColumn;
    GridSubEmployeeID: TdxDBGridMaskColumn;
    GridSubStartTime: TdxDBGridMaskColumn;
    GridSubEndTime: TdxDBGridMaskColumn;
    GridSubRemark: TdxDBGridMaskColumn;
    GridSubReadyTime: TdxDBGridMaskColumn;
    GridSubTotalTime: TdxDBGridMaskColumn;
    GridEnterEmployeeID: TdxDBGridMaskColumn;
    GridEnterStartTime: TdxDBGridMaskColumn;
    GridEnterEndTime: TdxDBGridMaskColumn;
    GridEnterRemark: TdxDBGridMaskColumn;
    GridEnterMachineID: TdxDBGridButtonColumn;
    GridEnterActionID: TdxDBGridButtonColumn;
    GridEnterOrderNo: TdxDBGridButtonColumn;
    GridEnterMachineName: TdxDBGridMaskColumn;
    GridEnterActionName: TdxDBGridMaskColumn;
    GridEnterReadyTime: TdxDBGridMaskColumn;
    GridEnterTotalTime: TdxDBGridMaskColumn;
    AutoApprove: TMenuItem;
    GridSubReserved1: TdxDBGridMaskColumn;
    GridSubReserved2: TdxDBGridCalcColumn;
    GridEnterReserved1: TdxDBGridMaskColumn;
    GridEnterReserved2: TdxDBGridCalcColumn;
    procedure GridEnterKeyPress(Sender: TObject; var Key: Char);
    procedure FormCreate(Sender: TObject);
    procedure TabControl1Change(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure ASaveExecute(Sender: TObject);
    procedure AutoApproveClick(Sender: TObject);
  private
    Reg: TRegistry;
    Procedure ShowField(NewTab: String);  
    { Private declarations }
  public
    { Public declarations }
  end;

var
  fmpro: Tfmpro;
  BillTbl: TClientDataSet;

implementation

uses uWIPDM, SherryLib;

{$R *.dfm}

procedure Tfmpro.ShowField(NewTab: String);
begin
  self.Caption:=BillTbl.FieldValues['BillName'];
  DBEdit1.ReadOnly:=BillTbl.FieldValues['AutoNo'];
  if BillTbl.FieldValues['ByMachine'] then
  begin
    GridSub.FindColumnByFieldName('MachineID').Field.Visible:=True;
    GridSub.FindColumnByFieldName('MachineID').Visible:=True;
    GridSub.FindColumnByFieldName('MachineName').Field.Visible:=True;
    GridSub.FindColumnByFieldName('MachineName').Visible:=True;
    GridSub.FindColumnByFieldName('ActionID').Field.Visible:=False;
    GridSub.FindColumnByFieldName('ActionID').Visible:=False;
    GridSub.FindColumnByFieldName('ActionName').Field.Visible:=False;
    GridSub.FindColumnByFieldName('ActionName').Visible:=False;

    GridEnter.FindColumnByFieldName('MachineID').Field.Required:=True;
    GridEnter.FindColumnByFieldName('ActionID').Field.Required:=False;

    GridEnter.FindColumnByFieldName('MachineID').Field.Visible:=True;
    GridEnter.FindColumnByFieldName('MachineID').Visible:=True;
    GridEnter.FindColumnByFieldName('MachineName').Field.Visible:=True;
    GridEnter.FindColumnByFieldName('MachineName').Visible:=True;
    GridEnter.FindColumnByFieldName('ActionID').Field.Visible:=False;
    GridEnter.FindColumnByFieldName('ActionID').Visible:=False;
    GridEnter.FindColumnByFieldName('ActionName').Field.Visible:=False;
    GridEnter.FindColumnByFieldName('ActionName').Visible:=False;

    GridSub.FindColumnByFieldName('ReadyTime').Field.Visible:=True;
    GridSub.FindColumnByFieldName('ReadyTime').Visible:=True;
    GridSub.FindColumnByFieldName('StartTime').Field.Visible:=True;
    GridSub.FindColumnByFieldName('StartTime').Visible:=True;
    GridSub.FindColumnByFieldName('EndTime').Field.Visible:=True;
    GridSub.FindColumnByFieldName('EndTime').Visible:=True;
    GridSub.FindColumnByFieldName('TotalTime').ReadOnly:=True;
    GridSub.FindColumnByFieldName('TotalTime').DisableEditor:=True;

    GridEnter.FindColumnByFieldName('ReadyTime').Field.Visible:=True;
    GridEnter.FindColumnByFieldName('ReadyTime').Visible:=True;
    GridEnter.FindColumnByFieldName('StartTime').Field.Visible:=True;
    GridEnter.FindColumnByFieldName('StartTime').Visible:=True;
    GridEnter.FindColumnByFieldName('EndTime').Field.Visible:=True;
    GridEnter.FindColumnByFieldName('EndTime').Visible:=True;
    GridEnter.FindColumnByFieldName('TotalTime').ReadOnly:=True;
    GridEnter.FindColumnByFieldName('TotalTime').DisableEditor:=True;
  end
  else
  begin
    GridSub.FindColumnByFieldName('MachineID').Field.Visible:=False;
    GridSub.FindColumnByFieldName('MachineID').Visible:=False;
    GridSub.FindColumnByFieldName('MachineName').Field.Visible:=False;
    GridSub.FindColumnByFieldName('MachineName').Visible:=False;
    GridSub.FindColumnByFieldName('ActionID').Field.Visible:=True;
    GridSub.FindColumnByFieldName('ActionID').Visible:=True;
    GridSub.FindColumnByFieldName('ActionName').Field.Visible:=True;
    GridSub.FindColumnByFieldName('ActionName').Visible:=True;

    GridEnter.FindColumnByFieldName('MachineID').Field.Visible:=False;
    GridEnter.FindColumnByFieldName('MachineID').Visible:=False;
    GridEnter.FindColumnByFieldName('MachineName').Field.Visible:=False;
    GridEnter.FindColumnByFieldName('MachineName').Visible:=False;
    GridEnter.FindColumnByFieldName('ActionID').Field.Visible:=True;
    GridEnter.FindColumnByFieldName('ActionID').Visible:=True;
    GridEnter.FindColumnByFieldName('ActionName').Field.Visible:=True;
    GridEnter.FindColumnByFieldName('ActionName').Visible:=True;

    GridEnter.FindColumnByFieldName('MachineID').Field.Required:=False;
    GridEnter.FindColumnByFieldName('ActionID').Field.Required:=True;

    GridSub.FindColumnByFieldName('ReadyTime').Field.Visible:=False;
    GridSub.FindColumnByFieldName('ReadyTime').Visible:=False;
    GridSub.FindColumnByFieldName('StartTime').Field.Visible:=False;
    GridSub.FindColumnByFieldName('StartTime').Visible:=False;
    GridSub.FindColumnByFieldName('EndTime').Field.Visible:=False;
    GridSub.FindColumnByFieldName('EndTime').Visible:=False;
    GridSub.FindColumnByFieldName('TotalTime').ReadOnly:=False;
    GridSub.FindColumnByFieldName('TotalTime').DisableEditor:=False;

    GridEnter.FindColumnByFieldName('ReadyTime').Field.Visible:=False;
    GridEnter.FindColumnByFieldName('ReadyTime').Visible:=False;
    GridEnter.FindColumnByFieldName('StartTime').Field.Visible:=False;
    GridEnter.FindColumnByFieldName('StartTime').Visible:=False;
    GridEnter.FindColumnByFieldName('EndTime').Field.Visible:=False;
    GridEnter.FindColumnByFieldName('EndTime').Visible:=False;
    GridEnter.FindColumnByFieldName('TotalTime').ReadOnly:=False;
    GridEnter.FindColumnByFieldName('TotalTime').DisableEditor:=False;

  end;
  if length(trim(BillTbl.fieldbyname('Reserved1').AsString))>0 then
  Begin
    GridSub.FindColumnByFieldName('Reserved1').Field.DisplayLabel:=BillTbl.FieldValues['Reserved1'];
    GridSub.FindColumnByFieldName('Reserved1').Field.Visible:=True;
    GridSub.FindColumnByFieldName('Reserved1').Visible:=True;
    GridEnter.FindColumnByFieldName('Reserved1').Visible:=True;
  end
  else
  begin
    GridSub.FindColumnByFieldName('Reserved1').Field.Visible:=False;
    GridSub.FindColumnByFieldName('Reserved1').Visible:=False;
    GridEnter.FindColumnByFieldName('Reserved1').Visible:=False;
  end;
  if length(trim(BillTbl.fieldbyname('Reserved2').AsString))>0 then
  Begin
    GridSub.FindColumnByFieldName('Reserved2').Field.DisplayLabel:=BillTbl.FieldValues['Reserved2'];
    GridSub.FindColumnByFieldName('Reserved2').Field.Visible:=True;
    GridSub.FindColumnByFieldName('Reserved2').Visible:=True;
    GridEnter.FindColumnByFieldName('Reserved2').Visible:=True;
  end
  else
  begin
    GridSub.FindColumnByFieldName('Reserved2').Field.Visible:=False;
    GridSub.FindColumnByFieldName('Reserved2').Visible:=False;
    GridEnter.FindColumnByFieldName('Reserved2').Visible:=False;
  end;

end;

procedure Tfmpro.GridEnterKeyPress(Sender: TObject; var Key: Char);
begin
  inherited;
  if (UpperCase(GridEnter.FocusedField.FieldName)=UpperCase('StartTime')) or
     (UpperCase(GridEnter.FocusedField.FieldName)=UpperCase('EndTime')) then  if key='.' then key:=':';
end;

procedure Tfmpro.FormCreate(Sender: TObject);
begin
  BillTbl:=Temp_Data('Select BillId, BillName, ByMachine, AutoNo, Reserved1, Reserved2 from WorkBillInfo where Enabled=1 order by BillId');
  BillTbl.Active:=True;
  While not BillTbl.eof do
  begin
    TabControl1.Tabs.Add(BillTbl.FieldValues['BillName']);
    BillTbl.Next;
  end;
  TTabControl(TabControl1).TabIndex:=0;
  TClientDataSet(BillTbl).Locate('BillName',TTabControl(TabControl1).Tabs[TTabControl(TabControl1).TabIndex],[]);
  DMWip.CProMas.Params.ParamByName('@ProType').AsString:=IntToStr(BillTbl.FieldValues['BillId']);
  inherited;
  ShowField(BillTbl.FieldValues['BillId']);
  DBEdit1.ReadOnly:=BillTbl.FieldValues['AutoNo'];
  Reg:= TRegistry.Create;
  Reg.RootKey:=HKEY_CURRENT_USER;
  Reg.OpenKey('\sherry',true);
  if Reg.ValueExists('AutoApprove') then
  TMenuItem(AutoApprove).Checked:=Reg.ReadBool('AutoApprove');
  Reg.CloseKey;
end;

procedure Tfmpro.TabControl1Change(Sender: TObject);
var ProType:Variant;
begin
  try ShowWait;
    //if not exists(format('select 1 from WorkBillInfo where Enabled=1 and BillName=N''%s''',[TTabControl(TabControl1).Tabs[TTabControl(TabControl1).TabIndex]])) then
    ProType:=Get_Value(format('select BillId from WorkBillInfo where Enabled=1 and BillName=N''%s''',[TTabControl(TabControl1).Tabs[TTabControl(TabControl1).TabIndex]]));
    if VarIsNull(ProType) then
    Warn('工时单据信息变更,请先退出当前窗口!');
    DMWip.CProMas.Active:=False;
    DMWip.CProMas.Params.ParamByName('@ProType').AsString:=ProType; 
    DMWip.CProMas.Active:=True;
    ShowField(BillTbl.FieldValues['BillId']);
  finally
    Hidewait;
  end;
end;

procedure Tfmpro.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if TClientDataSet(BillTbl).Active then
  TClientDataSet(BillTbl).Active:=False;
  TClientDataSet(BillTbl).Free;
  TClientDataSet(BillTbl):=Nil;
  inherited;
  Reg.OpenKey('\sherry',true);
  Reg.WriteBool('AutoApprove',TMenuItem(AutoApprove).Checked);
  Reg.CloseKey;
  Reg.Free;
end;

procedure Tfmpro.ASaveExecute(Sender: TObject);
begin
  inherited;
  if not AutoApprove.Checked then exit;
  AskFlag:=False;
  AApprove.Execute;
  AskFlag:=True;
end;

procedure Tfmpro.AutoApproveClick(Sender: TObject);
begin
  TMenuItem(Sender).Checked:=Not TMenuItem(Sender).Checked;
end;

end.

⌨️ 快捷键说明

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