?? ufrm_workstation_d.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 + -