📄 gs_wh.pas
字号:
unit gs_wh;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, Buttons, Grids, DBGrids, DBTables, Db;
type
Tfrm_gs_wh = class(TForm)
pe_gs_wh: TPanel;
gd_pj_info: TDBGrid;
Panel2: TPanel;
cmd_new: TBitBtn;
cmd_edit: TBitBtn;
cmd_save: TBitBtn;
cmd_cancel: TBitBtn;
cmd_del: TBitBtn;
pe_edit: TPanel;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
txt_gs_id: TEdit;
txt_gs_text: TEdit;
txt_gs_sum: TEdit;
qe_gs_wh: TQuery;
ds_gs_wh: TDataSource;
qe_jy: TQuery;
sp_del_from_gs_wh: TStoredProc;
Label4: TLabel;
txt_gs_dj: TEdit;
Label5: TLabel;
txt_gs_zj: TEdit;
pe_image: TPanel;
Image1: TImage;
//
procedure controlChange1(Sender: TObject);
procedure controlChange2(Sender: TObject);
procedure controlKeyPress1(Sender: TObject; var Key: Char);
procedure controlKeyPress3(Sender: TObject; var Key: Char);
procedure cmd_newClick(Sender: TObject);
procedure cmd_editClick(Sender: TObject);
procedure cmd_saveClick(Sender: TObject);
procedure cmd_cancelClick(Sender: TObject);
procedure cmd_delClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
str_old_id: string;
str_old_name: string;
//
procedure EnabledComponent(intState: TDataSetState);
procedure controlSetFocus(intpos: integer);
procedure NewInit;
procedure EditInit;
procedure SaveInit;
procedure CancelInit;
procedure ExeDelandInit;
public
{ Public declarations }
function RuleCheck: integer;
end;
var
frm_gs_wh: Tfrm_gs_wh;
implementation
{$R *.DFM}
uses
log, main;
procedure Tfrm_gs_wh.ExeDelandInit;
begin
if MessageBox(Handle, '确实要删除当前记录?', '沈阳信德', MB_ICONQUESTION or MB_OKCANCEL) = ID_OK then begin
sp_del_from_gs_wh.ParamByName('@igs_id').Value := Trim(qe_gs_wh.FieldByName('gs_id').AsString);
sp_del_from_gs_wh.ExecProc;
//
qe_gs_wh.Close;
qe_gs_wh.Open;
qe_gs_wh.First;
end;
//
EnabledComponent(dsBrowse);
end;
procedure Tfrm_gs_wh.CancelInit;
begin
qe_gs_wh.Cancel;
//
pe_gs_wh.Enabled := True;
pe_edit.Visible := False;
pe_image.Visible := True;
//
EnabledComponent(dsBrowse);
end;
procedure Tfrm_gs_wh.SaveInit;
begin
pe_gs_wh.Enabled := True;
pe_edit.Visible := False;
pe_image.Visible := True;
//
EnabledComponent(dsBrowse);
end;
procedure Tfrm_gs_wh.EditInit;
begin
pe_gs_wh.Enabled := False;
pe_image.Visible := False;
pe_edit.Visible := True;
//
cmd_new.Enabled := False;
cmd_edit.Enabled := False;
cmd_save.Enabled := False;
cmd_cancel.Enabled := True;
cmd_del.Enabled := False;
//
str_old_id := Trim(qe_gs_wh.FieldByName('gs_id').AsString);
str_old_name := Trim(qe_gs_wh.FieldByName('gs_text').AsString);
//
txt_gs_id.Text := Trim(qe_gs_wh.FieldByName('gs_id').AsString);
txt_gs_text.Text := Trim(qe_gs_wh.FieldByName('gs_text').AsString);
txt_gs_sum.Text := FloatToStr(qe_gs_wh.FieldByName('gs_sum').Value);
txt_gs_dj.Text := FloatToStr(qe_gs_wh.FieldByName('gs_dj').Value);
txt_gs_zj.Text := FloatToStr(qe_gs_wh.FieldByName('gs_zj').Value);
txt_gs_id.SetFocus;
//
qe_gs_wh.Edit;
end;
procedure Tfrm_gs_wh.NewInit;
begin
pe_gs_wh.Enabled := False;
pe_image.Visible := False;
pe_edit.Visible := True;
//
cmd_new.Enabled := True;
cmd_edit.Enabled := False;
cmd_save.Enabled := False;
cmd_cancel.Enabled := True;
cmd_del.Enabled := False;
//
txt_gs_id.Text := '';
txt_gs_text.Text := '';
txt_gs_sum.Text := '';
txt_gs_dj.Text := '';
txt_gs_zj.Text := '';
txt_gs_id.SetFocus;
//
qe_gs_wh.Append;
end;
function Tfrm_gs_wh.RuleCheck: integer;
var
intReult: integer;
strSQL: string;
f_sum: Double;
begin
intReult := 0;
if (Trim(txt_gs_id.Text) = '') or (Trim(txt_gs_text.Text) = '') or (Trim(txt_gs_zj.Text) = '') then begin
MessageBox(Handle, '信息不完全', '沈阳信德', MB_ICONQUESTION or MB_OK);
txt_gs_id.SetFocus;
intReult := 1;
end else begin
qe_jy.Close;
qe_jy.SQL.Clear;
//
strSQL := '';
if (qe_gs_wh.State = dsInsert) or ((qe_gs_wh.State = dsEdit) and (Trim(txt_gs_id.Text) <> str_old_id)) then
strSQL := 'SELECT * FROM GS_WH WHERE GS_ID = ''' + Trim(txt_gs_id.Text) + '''';
//
if strSQL <> '' then begin
qe_jy.SQL.Add(strSQL);
qe_jy.Open;
qe_jy.First;
end;
if (qe_jy.Bof) and (qe_jy.Eof) then begin
qe_jy.Close;
qe_jy.SQL.Clear;
strSQL := '';
if (qe_gs_wh.State = dsInsert) or ((qe_gs_wh.State = dsEdit) and (Trim(txt_gs_text.Text) <> str_old_name)) then
strSQL := 'SELECT * FROM GS_WH WHERE GS_TEXT = ''' + Trim(txt_gs_text.Text) + '''';
if strSQL <> '' then begin
qe_jy.SQL.Add(strSQL);
qe_jy.Open;
qe_jy.First;
end;
if (qe_jy.Bof) and (qe_jy.Eof) then begin
f_sum := StrToFloat(Trim(txt_gs_sum.Text));
f_sum := Int(f_sum) + Round((Frac(f_sum)*100))/100;
//
qe_gs_wh.FieldByName('gs_id').AsString := Trim(txt_gs_id.Text);
qe_gs_wh.FieldByName('gs_text').AsString := Trim(txt_gs_text.Text);
qe_gs_wh.FieldByName('gs_sum').Value := f_sum;
qe_gs_wh.FieldByName('gs_dj').Value := StrToFloat(Trim(txt_gs_dj.Text));
qe_gs_wh.FieldByName('gs_zj').Value := StrToFloat(Trim(txt_gs_zj.Text));
end else begin
MessageBox(Handle, '工时内容重复,请重新输入', '沈阳信德', MB_ICONQUESTION or MB_OK);
txt_gs_text.SetFocus;
intReult := 1;
end;
end else begin
MessageBox(Handle, '工时编号重复,请重新输入', '沈阳信德', MB_ICONQUESTION or MB_OK);
txt_gs_id.SetFocus;
intReult := 1;
end;
end;
//
Result := intReult;
end;
procedure Tfrm_gs_wh.controlChange1(Sender: TObject);
begin
if qe_gs_wh.State = dsEdit then
EnabledComponent(dsEdit)
else if (qe_gs_wh.State = dsInsert) then
EnabledComponent(dsInsert);
end;
procedure Tfrm_gs_wh.controlChange2(Sender: TObject);
var
strText1, strText2: string;
strValue: string;
v: Double;
v1: Double;
v2: Double;
code, code1: integer;
begin
if qe_gs_wh.State = dsEdit then
EnabledComponent(dsEdit)
else if (qe_gs_wh.State = dsInsert) then
EnabledComponent(dsInsert);
//
if (qe_gs_wh.State = dsEdit) or (qe_gs_wh.State = dsInsert) then begin
strValue := '';
strText1 := Trim(txt_gs_sum.Text);
strText2 := Trim(txt_gs_dj.Text);
//
if (strText1 = '') or (strText2 = '') then
strValue := ''
else begin
Val(strText1, v, code);
Val(strText2, v1, code1);
if (code <> 0) or (code1 <> 0) then
strValue := ''
else begin
v := Int(v) + Round((Frac(v)*100))/100;
if v < 0.01 then v := 0;
v1 := Int(v1) + Round((Frac(v1)*100))/100;
if v1 < 0.01 then v1 := 0;
v2 := v * v1;
v2 := Int(v2) + Round((Frac(v2)*100))/100;
strValue := FloatToStr(v2);
end;
end;
//
txt_gs_zj.Text := strValue;
end;
end;
procedure Tfrm_gs_wh.controlKeyPress1(Sender: TObject; var Key: Char);
begin
if Ord(Key) = 13 then controlSetFocus(TWinControl(Sender).Tag);
end;
procedure Tfrm_gs_wh.controlKeyPress3(Sender: TObject; var Key: Char);
begin
if not (((Key >= '0') and (Key <= '9')) or (Ord(Key) = 8) or (Ord(Key) = 46) or (Ord(Key) = 13)) then
Key := Chr(0);
if Ord(Key) = 13 then controlSetFocus(TWinControl(Sender).Tag);
end;
procedure Tfrm_gs_wh.controlSetFocus(intpos: integer);
begin
case intpos of
1: txt_gs_text.SetFocus;
2: txt_gs_sum.SetFocus;
3: txt_gs_dj.SetFocus;
4: begin
if qe_gs_wh.State = dsInsert then
frm_gs_wh.cmd_newClick(nil);
end;
end;
end;
procedure Tfrm_gs_wh.EnabledComponent(intState: TDataSetState);
begin
case intState of
dsBrowse: begin
cmd_new.Enabled := True;
cmd_edit.Enabled := True;
cmd_save.Enabled := False;
cmd_cancel.Enabled := False;
cmd_del.Enabled := True;
//
if (qe_gs_wh.Bof) and (qe_gs_wh.Eof) then begin
cmd_edit.Enabled := False;
cmd_del.Enabled := False;
end;
end;
dsEdit : begin
cmd_new.Enabled := False;
cmd_edit.Enabled := False;
cmd_save.Enabled := True;
cmd_cancel.Enabled := True;
cmd_del.Enabled := False;
end;
dsInsert: begin
cmd_new.Enabled := True;
cmd_edit.Enabled := False;
cmd_save.Enabled := True;
cmd_cancel.Enabled := True;
cmd_del.Enabled := False;
end;
end;
end;
procedure Tfrm_gs_wh.cmd_newClick(Sender: TObject);
var
intResult: integer;
begin
if (qe_gs_wh.State = dsInsert) and (cmd_save.Enabled) then begin
intResult := RuleCheck;
if intResult = 1 then
Exit
else begin
qe_gs_wh.Post;
qe_gs_wh.Close;
qe_gs_wh.Open;
qe_gs_wh.Last;
end;
end;
//
NewInit;
end;
procedure Tfrm_gs_wh.cmd_editClick(Sender: TObject);
begin
EditInit;
end;
procedure Tfrm_gs_wh.cmd_saveClick(Sender: TObject);
var
intResult: integer;
begin
intResult := RuleCheck;
if intResult = 1 then
Exit
else if intResult = 0 then begin
if qe_gs_wh.State = dsInsert then begin
qe_gs_wh.Post;
qe_gs_wh.Close;
qe_gs_wh.Open;
qe_gs_wh.Last;
end else if qe_gs_wh.State = dsEdit then
qe_gs_wh.Post;
end;
//
SaveInit;
end;
procedure Tfrm_gs_wh.cmd_cancelClick(Sender: TObject);
begin
CancelInit;
end;
procedure Tfrm_gs_wh.cmd_delClick(Sender: TObject);
begin
ExeDelandInit;
end;
procedure Tfrm_gs_wh.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
procedure Tfrm_gs_wh.FormDestroy(Sender: TObject);
begin
qe_gs_wh := nil;
qe_jy := nil;
//
frm_gs_wh := nil;
end;
procedure Tfrm_gs_wh.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
var
intResult: integer;
begin
CanClose := True;
//
if (qe_gs_wh.State = dsEdit) or (qe_gs_wh.State = dsInsert) then begin
if cmd_save.Enabled then begin
intResult := MessageBox(Handle, '记录正被编辑, 是否在关闭窗体前保存所作修改?', '沈阳信德', MB_YESNOCANCEL or MB_ICONQUESTION);
if intResult = ID_YES then begin
intResult := RuleCheck;
if intResult = 1 then begin
CanClose := False;
Exit;
end;
qe_gs_wh.Post;
CanClose := True;
end else if intResult = ID_NO then begin
qe_gs_wh.Cancel;
CanClose := True;
end else if intResult = ID_CANCEL then
CanClose := False;
end;
end;
//
if CanClose then begin
qe_gs_wh.Close;
qe_jy.Close;
//
frm_main.mu_std_info_gs.Enabled := True;
frm_main.current_handle := 0;
//
frm_main.Tag := 1; //标识窗体能否关闭; 1-能关闭;2-不能关闭;
end;
end;
procedure Tfrm_gs_wh.FormShow(Sender: TObject);
begin
qe_gs_wh.Close;
qe_gs_wh.Open;
qe_gs_wh.First;
//
EnabledComponent(dsBrowse);
//
frm_main.mu_std_info_gs.Enabled := False;
//
frm_main.current_handle := Handle;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -