📄 others.pas
字号:
unit others;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
DBTables, Db, ExtCtrls, StdCtrls, Buttons, Printers;
type
Tfrm_other = class(TForm)
pe_edit: TPanel;
Panel4: TPanel;
cmd_new: TBitBtn;
cmd_edit: TBitBtn;
cmd_save: TBitBtn;
cmd_cancel: TBitBtn;
cmd_del: TBitBtn;
Label2: TLabel;
txt_unit: TEdit;
Label3: TLabel;
txt_fk: TEdit;
Label4: TLabel;
combo_fs: TComboBox;
Label5: TLabel;
txt_text: TEdit;
Label6: TLabel;
cmd_print: TBitBtn;
Panel1: TPanel;
Image1: TImage;
qe_other: TQuery;
sp_update_mode_for_others: TStoredProc;
txt_memo: TMemo;
qe_jy: TQuery;
sp_del_from_other: TStoredProc;
sp_insert_into_day: TStoredProc;
sp_insert_into_sj: TStoredProc;
combo_p: TComboBox;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
procedure ControlChange(Sender: TObject);
procedure controlKeyPress1(Sender: TObject; var Key: Char);
procedure controlKeyPress2(Sender: TObject; var Key: Char);
procedure cmd_newClick(Sender: TObject);
procedure cmd_editClick(Sender: TObject);
procedure cmd_cancelClick(Sender: TObject);
procedure cmd_saveClick(Sender: TObject);
procedure cmd_delClick(Sender: TObject);
procedure cmd_printClick(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
OT_BH: string;
//
procedure EnabledComponent(intState: TDataSetState);
procedure controlSetFocus(intpos: integer);
function RuleCheck: integer;
procedure controlDj(intState: TDataSetState);
procedure NewInit;
procedure EditInit;
procedure CancelInit;
procedure SaveInit;
procedure ExeDelAndInit;
//
function SetNewBH1(intKind: integer): string;
public
{ Public declarations }
end;
var
frm_other: Tfrm_other;
implementation
{$R *.DFM}
uses
log, main, print;
function Tfrm_other.SetNewBH1(intKind: integer): string;
var
intR_m, intR_d: integer;
stryear, strmonth, strday: string;
year1, month1, day1: Word;
strm, strd: string;
strResult: string;
begin
DecodeDate(Now, year1, month1, day1);
stryear := IntToStr(year1);
strmonth := Format('%2.2d', [month1]);
strday := Format('%2.2d', [day1]);
//
qe_jy.Close;
qe_jy.SQL.Clear;
qe_jy.SQL.Add('SELECT * FROM SJ_SUM WHERE SJ_YEAR = ' + IntToStr(year1) + ' AND SJ_MONTH = ' + IntToStr(month1) + ' AND SJ_DAY = ' + IntToStr(day1) + ' AND SJ_KIND = ' + IntToStr(intKind) + ' ');
qe_jy.Open;
qe_jy.Last;
intR_d := qe_jy.RecordCount;
//
qe_jy.Close;
qe_jy.SQL.Clear;
qe_jy.SQL.Add('SELECT * FROM SJ_SUM WHERE SJ_YEAR = ' + IntToStr(year1) + ' AND SJ_MONTH = ' + IntToStr(month1) + ' AND SJ_KIND = ' + IntToStr(intKind) + ' ');
qe_jy.Open;
qe_jy.Last;
intR_m := qe_jy.RecordCount;
qe_jy.Close;
//
if (intR_m = 0) and (intR_d = 0) then begin
strResult := stryear + strmonth + strday + '-' + '001' + '-' + '001';
end else if intR_m = 0 then begin
strResult := stryear + strmonth + strday + '-' + '001' + '-' + '001';
end else if intR_d = 0 then begin
intR_m := intR_m + 1;
strm := Format('%3.3d', [intR_m]);
strResult := stryear + strmonth + strday + '-' + strm + '-' + '001';
end else begin
intR_m := intR_m + 1;
intR_d := intR_d + 1;
strm := Format('%3.3d', [intR_m]);
strd := Format('%3.3d', [intR_d]);
strResult := stryear + strmonth + strday + '-' + strm + '-' + strd;
end;
//
sp_insert_into_sj.ParamByName('@iyear').Value := year1;
sp_insert_into_sj.ParamByName('@imonth').Value := month1;
sp_insert_into_sj.ParamByName('@iday').Value := day1;
sp_insert_into_sj.ParamByName('@ikind').Value := intKind;
sp_insert_into_sj.ExecProc;
//
Result := strResult;
end;
procedure Tfrm_other.ExeDelAndInit;
begin
if MessageBox(Handle, '确实要删除当前记录?', '沈阳信德', MB_ICONQUESTION or MB_OKCANCEL) = ID_OK then begin
sp_del_from_other.ParamByName('@ibh').Value := qe_other.FieldByName('o_bh').AsInteger;
sp_del_from_other.ExecProc;
//
qe_other.Close;
qe_other.Open;
qe_other.First;
//
EnabledComponent(dsBrowse);
//
txt_text.Text := '';
txt_unit.Text := '';
txt_fk.Text := '';
combo_fs.ItemIndex := -1;
txt_memo.Text := '';
end;
end;
procedure Tfrm_other.SaveInit;
var
intResult: integer;
begin
intResult := RuleCheck;
if intResult = 1 then
Exit
else begin
if qe_other.State = dsInsert then begin
controlDj(dsInsert);
qe_other.Post;
qe_other.Close;
qe_other.Open;
qe_other.Last;
end else begin
controlDj(dsEdit);
qe_other.Post;
end;
end;
//
pe_edit.Enabled := False;
//
EnabledComponent(dsBrowse);
end;
procedure Tfrm_other.CancelInit;
begin
qe_other.Cancel;
//
EnabledComponent(dsBrowse);
//
pe_edit.Enabled := False;
//
if (qe_other.Eof) and (qe_other.Bof) then begin
txt_text.Text := '';
txt_unit.Text := '';
txt_fk.Text := '';
combo_fs.ItemIndex := -1;
txt_memo.Text := '';
end else begin
txt_text.Text := Trim(qe_other.FieldByName('o_text').AsString);
txt_unit.Text := Trim(qe_other.FieldByName('o_unit').AsString);
txt_fk.Text := FloatToStr(qe_other.FieldByName('o_fk').Value);
combo_fs.ItemIndex := combo_fs.Items.IndexOf(Trim(qe_other.FieldByName('o_fk_fs').AsString));
txt_memo.Text := Trim(qe_other.FieldByName('o_memo').AsString);
end;
end;
procedure Tfrm_other.EditInit;
begin
pe_edit.Enabled := True;
txt_text.SetFocus;
//
cmd_new.Enabled := False;
cmd_edit.Enabled := False;
cmd_cancel.Enabled := True;
cmd_save.Enabled := False;
cmd_print.Enabled := False;
cmd_del.Enabled := False;
//
qe_other.Edit;
end;
procedure Tfrm_other.NewInit;
begin
pe_edit.Enabled := True;
txt_text.SetFocus;
//
txt_text.Text := '';
txt_unit.Text := '';
txt_fk.Text := '';
combo_fs.ItemIndex := -1;
txt_memo.Text := '';
//
cmd_new.Enabled := False;
cmd_edit.Enabled := False;
cmd_cancel.Enabled := True;
cmd_save.Enabled := False;
cmd_print.Enabled := False;
cmd_del.Enabled := False;
//
qe_other.Append;
end;
procedure Tfrm_other.controlDj(intState: TDataSetState);
var
f_zf: Double;
begin
if intState = dsInsert then begin
qe_other.FieldByName('o_czr').AsString := frm_main.user_name;
qe_other.FieldByName('edit_type').AsInteger := 1;
end;
//
f_zf := StrToFloat(Trim(txt_fk.Text));
f_zf := Int(f_zf) + Round((Frac(f_zf)*100))/100;
//
qe_other.FieldByName('o_date').AsString := frm_log.controlDate(DateToStr(Date()));
qe_other.FieldByName('o_text').AsString := Trim(txt_text.Text);
qe_other.FieldByName('o_unit').AsString := Trim(txt_unit.Text);
qe_other.FieldByName('o_fk').Value := f_zf;
qe_other.FieldByName('o_fk_fs').AsString := combo_fs.Text;
qe_other.FieldByName('o_memo').AsString := Trim(txt_memo.Text);
//
cmd_print.Tag := 1; //
end;
function Tfrm_other.RuleCheck: integer;
var
intResult: integer;
v: Double;
code: integer;
begin
intResult := 0;
//
if Trim(txt_text.Text) = '' then begin
MessageBox(Handle, '请确定服务项目', '沈阳信德', MB_ICONQUESTION or MB_OK);
txt_text.SetFocus;
intResult := 1;
end else begin
if Trim(txt_unit.Text) = '' then begin
MessageBox(Handle, '请确定付款单位或车牌号', '沈阳信德', MB_ICONQUESTION or MB_OK);
txt_unit.SetFocus;
intResult := 1;
end else begin
if Trim(txt_fk.Text) = '' then begin
MessageBox(Handle, '请确定付款金额', '沈阳信德', MB_ICONQUESTION or MB_OK);
txt_fk.SetFocus;
intResult := 1;
end else begin
Val(Trim(txt_fk.Text), v, code);
if (code <> 0) or (v < 0.01) then begin
MessageBox(Handle, '付款金额无效', '沈阳信德', MB_ICONQUESTION or MB_OK);
txt_fk.SetFocus;
intResult := 1;
end else begin
if combo_fs.ItemIndex = -1 then begin
MessageBox(Handle, '请确定付款方式', '沈阳信德', MB_ICONQUESTION or MB_OK);
combo_fs.SetFocus;
intResult := 1;
end;
end;
end;
end;
end;
//
Result := intResult;
end;
procedure Tfrm_other.controlKeyPress1(Sender: TObject; var Key: Char);
begin
if Ord(Key) = 13 then controlSetFocus(TWinControl(Sender).Tag);
end;
procedure Tfrm_other.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_other.controlSetFocus(intpos: integer);
begin
case intpos of
1: txt_unit.SetFocus;
2: txt_fk.SetFocus;
3: combo_fs.SetFocus;
4: txt_memo.SetFocus;
end;
end;
procedure Tfrm_other.ControlChange(Sender: TObject);
begin
if qe_other.State = dsInsert then
EnabledComponent(dsInsert)
else if qe_other.State = dsEdit then
EnabledComponent(dsEdit);
end;
procedure Tfrm_other.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_print.Enabled := True;
cmd_del.Enabled := True;
//
if (qe_other.Bof) and (qe_other.Eof) then begin
cmd_edit.Enabled := False;
cmd_del.Enabled := False;
cmd_print.Enabled := False;
cmd_print.Tag := 0;
end;
end;
dsEdit : begin
cmd_new.Enabled := False;
cmd_edit.Enabled := False;
cmd_save.Enabled := True;
cmd_cancel.Enabled := True;
cmd_print.Enabled := False;
cmd_del.Enabled := False;
end;
dsInsert: begin
cmd_new.Enabled := False;
cmd_edit.Enabled := False;
cmd_save.Enabled := True;
cmd_cancel.Enabled := True;
cmd_print.Enabled := False;
cmd_del.Enabled := False;
end;
end;
end;
procedure Tfrm_other.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
procedure Tfrm_other.FormShow(Sender: TObject);
begin
qe_other.Close;
qe_other.ParamByName('iczr').AsString := frm_main.user_name;
qe_other.Open;
qe_other.First;
//
//SetNewBH;
//
EnabledComponent(dsBrowse);
//
frm_main.mu_yw_gl_other.Enabled := False;
frm_main.cmd_other.Enabled := False;
//
frm_main.current_handle := Handle;
end;
procedure Tfrm_other.cmd_newClick(Sender: TObject);
begin
if cmd_print.Tag = 1 then begin
MessageBox(Handle, '当前服务项目尚未结算,不能新建服务项目', '沈阳信德', MB_ICONQUESTION or MB_OK);
Exit;
end;
//
NewInit;
end;
procedure Tfrm_other.cmd_editClick(Sender: TObject);
begin
EditInit;
end;
procedure Tfrm_other.cmd_cancelClick(Sender: TObject);
begin
CancelInit;
end;
procedure Tfrm_other.cmd_saveClick(Sender: TObject);
begin
SaveInit;
end;
procedure Tfrm_other.cmd_delClick(Sender: TObject);
begin
ExeDelAndInit;
end;
procedure Tfrm_other.cmd_printClick(Sender: TObject);
var
m_fk: Double;
strDate: string;
begin
combo_p.Items.Clear;
combo_p.items.Assign(Printer.Printers);
if combo_p.Items.Count = 0 then begin
MessageBox(Handle, '没有可用的打印机,请添加打印机', '沈阳信德', MB_ICONQUESTION or MB_OK);
Exit;
end;
//
if MessageBox(Handle, '确实要结算吗?', '沈阳信德', MB_ICONQUESTION or MB_OKCANCEL) = ID_OK then begin
m_fk := StrToFloat(Trim(txt_fk.Text));
m_fk := Int(m_fk) + Round((Frac(m_fk)*100))/100;
//
strDate := frm_log.controlDate(DateToStr(Date()));
sp_insert_into_day.ParamByName('@idate').Value := strDate;
sp_insert_into_day.ParamByName('@izy').Value := '(其他业务收入)-' + Trim(txt_unit.Text);
if combo_fs.ItemIndex = 0 then
sp_insert_into_day.ParamByName('@ikm').Value := '现金'
else
sp_insert_into_day.ParamByName('@ikm').Value := '银行存款';
//
sp_insert_into_day.ParamByName('@ijf').Value := m_fk;
sp_insert_into_day.ParamByName('@idf').Value := 0;
sp_insert_into_day.ParamByName('@izy_id').Value := 20;
sp_insert_into_day.ParamByName('@idj_bh').Value := '';
sp_insert_into_day.ExecProc;
//
sp_update_mode_for_others.ExecProc;
//
qe_other.Close;
qe_other.Open;
qe_other.First;
//
EnabledComponent(dsBrowse);
cmd_print.Tag := 0;
//
OT_BH := SetNewBH1(0);
frm_print.pc_main.ActivePageIndex := 14;
frm_print.lbl_fw.Caption := Trim(txt_text.Text);
frm_print.lbl_cap12.Caption := frm_log.cur_gs_name;
frm_print.lbl_tel12.Caption := frm_log.cur_gs_tel;
frm_print.lbl_addr12.Caption := frm_log.cur_gs_addr;
frm_print.lbl_date14.Caption := frm_log.controlDate(DateToStr(Date()));
frm_print.lbl_bh14.Caption := 'SK' + OT_BH;
frm_print.lbl_fs14.Caption := combo_fs.Text;
frm_print.lbl_unit14.Caption := Trim(txt_unit.Text);
//
frm_print.lbl_dx14.Caption := frm_log.shiftNum(m_fk);
frm_print.lbl_xx14.Caption := frm_log.ControlNum(FloatToStr(m_fk)) + '元';
frm_print.lbl_czr14.Caption := frm_main.user_name;
frm_print.qr_other.Print;
end;
end;
procedure Tfrm_other.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
CanClose := True;
if cmd_print.Tag = 1 then begin
MessageBox(Handle, '当前服务项目尚未结算,不能关闭', '沈阳信德', MB_ICONQUESTION or MB_OK);
CanClose := False;
//
Exit;
end;
//
if CanClose then begin
sp_update_mode_for_others.ExecProc;
qe_other.Close;
qe_jy.Close;
//
frm_main.mu_yw_gl_other.Enabled := True;
frm_main.cmd_other.Enabled := True;
frm_main.current_handle := 0;
//
frm_main.Tag := 1; //标识窗体能否关闭; 1-能关闭;2-不能关闭;
end;
end;
procedure Tfrm_other.FormDestroy(Sender: TObject);
begin
qe_other := nil;
qe_jy := nil;
//
frm_other := nil;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -