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

📄 ufrm_workstation_d.pas

📁 完整的进销存系统。 设计文件及完整的源代码。 Delphi6.0
💻 PAS
字号:
//  *******************************************
//  *    Program name: ufrm_workstation_d     *
//  *    AUTHOR      : Guo xuliang 郭许良     *
//  *    Date        : 2005/05/15             *
//  *    Purpose     : 模板使用范例双档单身   *
//  *******************************************
unit ufrm_workstation_d;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ufrm_level4_3, dxExEdtr, DB, DBTables, ImgList, dxCntner, dxTL,
  dxDBCtrl, dxDBGrid, StdCtrls, ExtCtrls, ComCtrls, ToolWin, DBCtrls, Mask,
  dxEditor, dxEdLib, dxDBELib, dxDBTLCl, dxGrClms, Menus;

type
  Tfrm_workstation_d = class(Tfrm_level4_3)
    dbc_f02: TdxDBGridColumn;
    dbc_f05: TdxDBGridColumn;
    dbc_memo: TdxDBGridColumn;
    f01: TDBText;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    f02: TDBEdit;
    f05: TDBText;
    memo: TDBEdit;
    dbc_begintime: TdxDBGridTimeColumn;
    dbc_endtime: TdxDBGridTimeColumn;
    qy_detailF01: TStringField;
    qy_detailF02: TFloatField;
    qy_detailF03: TFloatField;
    qy_detailF04: TFloatField;
    qy_detailF05: TFloatField;
    qy_detailMEMO: TStringField;
    qy_detailACTI: TStringField;
    qy_detailOWUS: TStringField;
    qy_detailGRUP: TStringField;
    qy_detailCRET: TDateTimeField;
    qy_detailMODU: TStringField;
    qy_detailMODT: TDateTimeField;
    qy_detailbegintime: TStringField;
    qy_detailendtime: TStringField;
    f03_1: TDBEdit;
    f04_1: TDBEdit;
    f03_2: TdxTimeEdit;
    f04_2: TdxTimeEdit;
    dbc_d_sn: TdxDBGridColumn;
    qy_detailD_SN: TFloatField;
    procedure qy_detailBeforePost(DataSet: TDataSet);
    procedure qy_detailCalcFields(DataSet: TDataSet);
    procedure qy_detailNewRecord(DataSet: TDataSet);
    procedure tbEditClick(Sender: TObject);
    procedure tbAddClick(Sender: TObject);
    procedure qy_detailAfterPost(DataSet: TDataSet);
    procedure qy_detailAfterCancel(DataSet: TDataSet);
    procedure tbDeleteClick(Sender: TObject);
  private
    { Private declarations }
    procedure fill_buffer;                          //填充編輯框
    function  next_ordinal:integer;                 //下一個號碼
    procedure re_index;                             //重新排列班別號
  protected
    procedure Set_focus;override;                   //設置編輯時的focus
    //function  chk_canedit:boolean;override;       //是否可以修改
    //function  chk_before_edit:boolean;override;   //編輯前檢查
    //function  chk_before_append:boolean;override; //添加前檢查
    //function  chk_before_delete:boolean;override; //刪除前檢查
    function  chk_save:boolean; override;           //保存前的檢查
  public
    { Public declarations }
  end;

var
  frm_workstation_d: Tfrm_workstation_d;

implementation
uses udm,uglobal_var,uglobal_fun;
{$R *.dfm}

procedure Tfrm_workstation_d.fill_buffer;
var l_value:string;
begin
  l_value:=cl_floattotime(date,qy_detail.FieldByName('F03').AsFloat);
  l_value:=copy(l_value,12,length(l_value));
  f03_2.Time:=strtotime(l_value);

  l_value:=cl_floattotime(date,qy_detail.FieldByName('F04').AsFloat);
  l_value:=copy(l_value,12,length(l_value));
  f04_2.Time:=strtotime(l_value);
end;

function Tfrm_workstation_d.next_ordinal:integer;
var l_value:integer;
begin
  with dm do
    begin
      g_sqlstr:='SELECT MAX(F02) FROM T_WORKSECTIME WHERE F01='''+u_mpvalue[1]+'''';
      pub1.Close;
      pub1.sql.Clear;
      pub1.SQL.Add(g_sqlstr);
      pub1.Open;
      l_value:=pub1.Fields[0].AsInteger;
      l_value:=l_value+1;
    end;
  result:=l_value;
end;

procedure Tfrm_workstation_d.re_index;
var i:integer;
begin
  i:=1;
  dm.connection.StartTransaction;
  try
    with dm do
      begin
        g_sqlstr:='SELECT F02 FROM T_WORKSECTIME WHERE F01='''+u_mpvalue[1]+'''';
        p_update1.Close;
        p_update1.sql.Clear;
        p_update1.SQL.Add(g_sqlstr);
        p_update1.Open;
        while not p_update1.Eof do
          begin
            p_update1.Edit;
            p_update1.fieldbyname('F02').AsInteger:=i;
            p_update1.Post;
            i:=i+1;
            p_update1.Next;
          end;
      end;
    dm.connection.Commit;
  except
    dm.connection.Rollback;
  end;

end;

procedure Tfrm_workstation_d.Set_focus;
begin
   if f02.Enabled then f02.SetFocus;
end;

//保存前檢查
//1.起始時間﹐結束時間不能為空﹐結束時間不能<起始時間
function Tfrm_workstation_d.chk_save;
begin
 result:=true;
 if f04_2.Time<=f03_2.Time then
   begin
     u_error:='結束時間<起始時間';
     result:=false;
     exit;
   end;
end;


procedure Tfrm_workstation_d.qy_detailBeforePost(DataSet: TDataSet);
begin
  inherited;
  qy_detail.FieldByName('F03').AsFloat:=cl_timetofloat(f03_2.Time);
  qy_detail.fieldbyname('F04').AsFloat:=cl_timetofloat(f04_2.Time);
  qy_detail.FieldByName('F05').AsFloat:=qy_detail.fieldbyname('F04').AsFloat-
                                        qy_detail.fieldbyname('F03').AsFloat;
end;

procedure Tfrm_workstation_d.qy_detailCalcFields(DataSet: TDataSet);
var l_s:string;
    l_value:double;
begin
  inherited;
    //show begin time
    l_value:=qy_detail.fieldbyname('F03').AsFloat;
    l_s:=cl_floattotime(date,l_value);
    l_s:=copy(l_s,11,length(l_s));
    qy_detail.FieldByName('begintime').AsString:=l_s;

    //show end time
    l_value:=qy_detail.fieldbyname('F04').AsFloat;
    l_s:=cl_floattotime(date,l_value);
    l_s:=copy(l_s,11,length(l_s));
    qy_detail.FieldByName('endtime').AsString:=l_s;
end;

procedure Tfrm_workstation_d.qy_detailNewRecord(DataSet: TDataSet);
begin
  inherited;
  qy_detail.FieldByName('F02').AsInteger:=self.next_ordinal; 
end;

procedure Tfrm_workstation_d.tbEditClick(Sender: TObject);
begin
  inherited;
  f03_1.Visible:=false;
  f03_2.Visible:=true;
  f04_1.Visible:=false;
  f04_2.Visible:=true;
  self.fill_buffer;
end;

procedure Tfrm_workstation_d.tbAddClick(Sender: TObject);
begin
  inherited;
  f03_1.Visible:=false;
  f03_2.Visible:=true;
  f04_1.Visible:=false;
  f04_2.Visible:=true;
end;

procedure Tfrm_workstation_d.qy_detailAfterPost(DataSet: TDataSet);
begin
  inherited;
  f03_1.Visible:=true;
  f03_2.Visible:=false;
  f04_1.Visible:=true;
  f04_2.Visible:=false;
end;

procedure Tfrm_workstation_d.qy_detailAfterCancel(DataSet: TDataSet);
begin
  inherited;
  f03_1.Visible:=true;
  f03_2.Visible:=false;
  f04_1.Visible:=true;
  f04_2.Visible:=false;
end;

procedure Tfrm_workstation_d.tbDeleteClick(Sender: TObject);
begin
  inherited;
  self.re_index;
  self.refresh_detail;
end;

end.

⌨️ 快捷键说明

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