⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 upro.pas

📁 成本系统三层结构源码 开发工具:Delphi 7.0+SQLServer 2005 主要技术:Midas、COM+ 所用第三方控件: FastReport V2.47 D7 Inforp
💻 PAS
字号:
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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -