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

📄 gs_add.pas

📁 汽配前台收费,一个具有详细功能的小系统
💻 PAS
📖 第 1 页 / 共 2 页
字号:
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 + -