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

📄 gs_wh.pas

📁 汽配前台收费,一个具有详细功能的小系统
💻 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 + -