📄 gs_add.pas
字号:
unit gs_add;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls, Grids, DBGrids, Buttons, Mask, Db, DBTables, DBCtrls, Printers;
type
Tfrm_gs_add = class(TForm)
pe_bh: TPanel;
combo_p: TComboBox;
pe_info: TPanel;
DBGrid1: TDBGrid;
Panel1: TPanel;
cmd_new: TBitBtn;
cmd_edit: TBitBtn;
cmd_save: TBitBtn;
cmd_cancel: TBitBtn;
cmd_del: TBitBtn;
cmd_print: TBitBtn;
pe_edit: TPanel;
Label2: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
txt_kind: TEdit;
b1: TBitBtn;
txt_sum: TEdit;
txt_zj: TEdit;
txt_dj: TEdit;
pe_image: TPanel;
Image1: TImage;
qe_gs_add: TQuery;
ds_gs_add: TDataSource;
qe_jy1: TQuery;
sp_del_from_gs_ad: TStoredProc;
Label3: TLabel;
qe_pg: TQuery;
combo_pg: TDBLookupComboBox;
ds_pg: TDataSource;
qe_gs: TQuery;
qe_jy: TQuery;
ds_jy1: TDataSource;
Panel2: TPanel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
txt_time: TDBEdit;
txt_cph: TDBEdit;
txt_cx: TDBEdit;
txt_cz: TDBEdit;
txt_wx: TDBEdit;
txt_bx: TDBEdit;
txt_dw: TDBEdit;
Label1: TLabel;
combo_bh: TComboBox;
//
procedure ControlKeyPress4(Sender: TObject; var Key: Char);
procedure ControlKeyPress2(Sender: TObject; var Key: Char);
procedure ControlKeyPress3(Sender: TObject; var Key: Char);
procedure cmd_qClick(Sender: TObject);
procedure ControlClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(Sender: TObject);
procedure ControlChange1(Sender: TObject);
procedure b1Click(Sender: TObject);
procedure ControlEnter(Sender: TObject);
procedure cmd_editClick(Sender: TObject);
procedure cmd_cancelClick(Sender: TObject);
procedure cmd_delClick(Sender: TObject);
procedure cmd_newClick(Sender: TObject);
procedure cmd_saveClick(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure cmd_printClick(Sender: TObject);
procedure txt_djChange(Sender: TObject);
procedure combo_bhChange(Sender: TObject);
private
{ Private declarations }
hideList: TListBox;
spaceArray: array[0..20] of string;
cur_bh: string;
cur_cph: string;
cur_cz: string;
cur_czdw: string;
cur_dph: string;
cur_cx: string;
//
procedure QueryResult;
procedure EnabledComponent(intState: TDataSetState);
procedure arrayInit;
procedure lstInfoInit;
procedure controlSetFocus(intpos: integer);
function RuleCheck: integer;
procedure EditInit;
procedure NewInit;
procedure SaveInit;
procedure CancelInit;
procedure ExeDelandInit;
procedure InitBHList;
public
{ Public declarations }
end;
var
frm_gs_add: Tfrm_gs_add;
implementation
{$R *.DFM}
uses
log, main, pg_print;
procedure Tfrm_gs_add.InitBHList;
begin
qe_jy.Close;
qe_jy.SQL.Clear;
qe_jy.SQL.Add('SELECT DJ_BH FROM CL_DJ WHERE DJ_ZF_BS = 0 AND DJ_JS_BS = 0 ORDER BY DJ_BH');
qe_jy.Open;
qe_jy.First;
//
if (qe_jy.Bof) and (qe_jy.Eof) then begin
//MessageBox(Handle, '未找到尚未结算的委托编号', '沈阳信德', MB_ICONQUESTION or MB_OK);
Exit;
end else begin
combo_bh.Items.Clear;
while not qe_jy.Eof do begin
combo_bh.Items.Add(Trim(qe_jy.FieldByName('dj_bh').AsString));
qe_jy.Next;
end;
combo_bh.ItemIndex := -1;
end;
end;
procedure Tfrm_gs_add.SaveInit;
begin
pe_bh.Enabled := True;
pe_image.Visible := True;
pe_info.Enabled := True;
pe_edit.Visible := False;
//
EnabledComponent(dsBrowse);
end;
procedure Tfrm_gs_add.EditInit;
begin
pe_edit.Visible := True;
pe_image.Visible := False;
pe_info.Enabled := False;
pe_bh.Enabled := False;
//
txt_kind.Text := Trim(qe_gs_add.FieldByName('gs_text').AsString);
txt_sum.Text := FloatToStr(qe_gs_add.FieldByName('gs_sum').Value);
txt_dj.Text := FloatToStr(qe_gs_add.FieldByName('gs_dj').Value);
txt_zj.Text := FloatToStr(qe_gs_add.FieldByName('gs_zj').Value);
combo_pg.KeyValue := Trim(qe_gs_add.FieldByName('gs_pg_id').AsString);
txt_kind.SetFocus;
//
cmd_edit.Enabled := False;
cmd_new.Enabled := False;
cmd_save.Enabled := False;
cmd_cancel.Enabled := True;
cmd_print.Enabled := False;
cmd_del.Enabled := False;
//
qe_gs_add.Edit;
end;
procedure Tfrm_gs_add.NewInit;
begin
pe_bh.Enabled := False;
pe_image.Visible := False;
pe_info.Enabled := False;
pe_edit.Visible := True;
//
cmd_new.Enabled := True;
cmd_save.Enabled := False;
cmd_cancel.Enabled := True;
cmd_del.Enabled := False;
cmd_print.Enabled := False;
cmd_edit.Enabled := False;
//
txt_kind.Text := '';
txt_sum.Text := '';
txt_dj.Text := '';
txt_zj.Text := '';
combo_pg.KeyValue := '';
//
txt_kind.SetFocus;
//
qe_gs_add.Append;
end;
procedure Tfrm_gs_add.CancelInit;
begin
qe_gs_add.Cancel;
//
pe_bh.Enabled := True;
pe_image.Visible := True;
pe_info.Enabled := True;
pe_edit.Visible := False;
//
EnabledComponent(dsBrowse);
end;
procedure Tfrm_gs_add.ExeDelandInit;
begin
if MessageBox(Handle, '确实要删除当前记录?', '沈阳信德', MB_ICONQUESTION or MB_OKCANCEL) = ID_OK then begin
sp_del_from_gs_ad.ParamByName('@ipj_id').Value := qe_gs_add.FieldByName('pj_id').AsInteger;
sp_del_from_gs_ad.ExecProc;
//
qe_gs_add.Close;
qe_gs_add.Open;
qe_gs_add.First;
end;
//
EnabledComponent(dsBrowse);
end;
function Tfrm_gs_add.RuleCheck: integer;
var
intResult: integer;
v, v1, v2: Double;
code, code1, code2: integer;
begin
intResult := 0;
//
if Trim(txt_kind.Text) = '' then begin
MessageBox(Handle, '请确定工时内容', '沈阳信德', MB_ICONQUESTION or MB_OK);
txt_kind.SetFocus;
intResult := 1;
end else begin
Val(Trim(txt_sum.Text), v, code);
Val(Trim(txt_dj.Text), v1, code1);
Val(Trim(txt_zj.Text), v2, code2);
if (code <> 0) or (code1 <> 0) or (code2 <> 0) then begin
MessageBox(Handle, '输入的工时数或者单价或者总价不是有效数字', '沈阳信德', MB_ICONQUESTION or MB_OK);
txt_sum.SetFocus;
intResult := 1;
end else begin
if (v < 0.01) or (v1 < 0.01) then begin
MessageBox(Handle, '工时数或者单价无效', '沈阳信德', MB_ICONQUESTION or MB_OK);
txt_sum.SetFocus;
intResult := 1;
end else begin
v := Int(v) + Round((Frac(v)*100))/100;
v1 := Int(v1) + Round((Frac(v1)*100))/100;
v2 := Int(v2) + Round((Frac(v2)*100))/100;
if v2 < 0.01 then v2 := 0;
//
if qe_gs_add.State = dsInsert then
qe_gs_add.FieldByName('dj_bh').AsString := cur_bh;
qe_gs_add.FieldByName('gs_text').AsString := Trim(txt_kind.Text);
qe_gs_add.FieldByName('gs_sum').Value := v;
qe_gs_add.FieldByName('gs_dj').Value := v1;
qe_gs_add.FieldByName('gs_zj').Value := v2;
if combo_pg.KeyValue = '' then begin
qe_gs_add.FieldByName('gs_pg').AsString := '无';
qe_gs_add.FieldByName('gs_pg_id').AsString := '无';
end else begin
qe_gs_add.FieldByName('gs_pg').AsString := Trim(combo_pg.Text);
qe_gs_add.FieldByName('gs_pg_id').AsString := Trim(combo_pg.KeyValue);
end;
end;
end;
end;
//
Result := intResult;
end;
procedure Tfrm_gs_add.ControlEnter(Sender: TObject);
begin
hideList.Visible := False;
end;
procedure Tfrm_gs_add.ControlKeyPress2(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_add.ControlKeyPress3(Sender: TObject; var Key: Char);
begin
if Ord(Key) = 13 then controlSetFocus(TWinControl(Sender).Tag);
end;
procedure Tfrm_gs_add.ControlChange1(Sender: TObject);
var
strText: string;
i: integer;
intPos: integer;
//
intIndex: integer;
str_id: string;
begin
if qe_gs_add.State = dsEdit then
EnabledComponent(dsEdit);
if (qe_gs_add.State = dsInsert) then begin
EnabledComponent(dsInsert);
intIndex := TWinControl(Sender).Tag;
//
if (intIndex = 1) then begin
hideList.Visible := True;
strText := Trim(TEdit(Sender).Text);
//第一次
for i := 0 to hideList.Items.Count - 1 do begin
str_id := Copy(hideList.Items[i], 1, 20);
intPos := Pos(strText, str_id);
if intPos = 1 then begin
hideList.ItemIndex := i;
Break;
end else begin
hideList.ItemIndex := 0;
end;
end;
//第二次
if intPos <> 1 then begin
for i := 0 to hideList.Items.Count - 1 do begin
str_id := Copy(hideList.Items[i], 21, 60);
intPos := Pos(strText, str_id);
if intPos = 1 then begin
hideList.ItemIndex := i;
Break;
end else begin
hideList.ItemIndex := 0;
end;
end;
end;
end;
end;
end;
procedure Tfrm_gs_add.controlSetFocus(intpos: integer);
begin
case intpos of
1: txt_sum.SetFocus;
2: txt_dj.SetFocus;
3: txt_zj.SetFocus;
4: combo_pg.SetFocus;
5: begin
if qe_gs_add.State = dsInsert then
frm_gs_add.cmd_newClick(nil);
end;
end;
end;
procedure Tfrm_gs_add.arrayInit;
var
i: integer;
begin
for i := 0 to 20 do begin
if i = 0 then spaceArray[i] := '';
if i = 1 then spaceArray[i] := ' ';
if i > 1 then spaceArray[i] := spaceArray[i - 1] + ' ';
end;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -