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

📄 zl_ll.pas

📁 汽配前台收费,一个具有详细功能的小系统
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit zl_ll;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, Mask, Grids, DBGrids, StdCtrls, Buttons, Db, DBTables, Printers;

type
  Tfrm_zy_ll = class(TForm)
    pe_select: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    txt_kind: TEdit;
    txt_gg: TEdit;
    txt_pj: TEdit;
    cmd_query: TBitBtn;
    pe_pj_ck: TPanel;
    DBGrid1: TDBGrid;
    pe_ck_op: TPanel;
    cmd_edit: TBitBtn;
    cmd_cancel: TBitBtn;
    cmd_save: TBitBtn;
    pe_pj_tk: TPanel;
    DBGrid2: TDBGrid;
    pe_tk_op: TPanel;
    cmd_del: TBitBtn;
    cmd_print: TBitBtn;
    pe_edit: TPanel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Bevel1: TBevel;
    txt_zy_time: TMaskEdit;
    txt_pj_dj: TEdit;
    txt_sum: TEdit;
    txt_lyr: TEdit;
    pe_image: TPanel;
    Image1: TImage;
    qe_pj_ck: TQuery;
    ds_pj_ck: TDataSource;
    qe_kind: TQuery;
    qe_gg: TQuery;
    qe_pj: TQuery;
    qe_zy_gl: TQuery;
    ds_zy_gl: TDataSource;
    sp_update_mode_for_zy: TStoredProc;
    sp_insert_into_zy: TStoredProc;
    sp_del_from_zy: TStoredProc;
    combo_p: TComboBox;
    b1: TBitBtn;
    b2: TBitBtn;
    b3: TBitBtn;
    //
    procedure ControlClick(Sender: TObject);
    procedure ControlChange1(Sender: TObject);
    procedure ControlChange2(Sender: TObject);
    procedure ControlEnter(Sender: TObject);
    procedure ControlKeyPress1(Sender: TObject; var Key: Char);
    procedure ControlKeyPress3(Sender: TObject; var Key: Char);
    procedure cmd_editClick(Sender: TObject);
    procedure cmd_saveClick(Sender: TObject);
    procedure cmd_cancelClick(Sender: TObject);
    procedure cmd_delClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure FormDestroy(Sender: TObject);
    procedure cmd_queryClick(Sender: TObject);
    procedure cmd_printClick(Sender: TObject);
    procedure b1Click(Sender: TObject);
    procedure b2Click(Sender: TObject);
    procedure b3Click(Sender: TObject);
  private
    { Private declarations }
    hideList: array[1..3] of TListBox;
    spaceArray: array[0..20] of string;
    //
    procedure lstInfoInit;
    procedure arrayInit;
    procedure controlSetFocus(intpos: integer);
    procedure EnabledComponent(intState: TDataSetState);
    //
    procedure EditInit;
    procedure SaveInit;
    procedure CancelInt;
    procedure ExeDelandInit;
  public
    { Public declarations }
    function RuleCheck: integer;
  end;

var
  frm_zy_ll: Tfrm_zy_ll;

implementation

{$R *.DFM}

uses
  log, main, print;

procedure Tfrm_zy_ll.EnabledComponent(intState: TDataSetState);
begin
  case intState of
    dsBrowse: begin
                cmd_edit.Enabled := True;
                cmd_save.Enabled := False;
                cmd_cancel.Enabled := False;
                if (qe_pj_ck.Bof) and (qe_pj_ck.Eof) then begin
                  cmd_edit.Enabled := False;
                  cmd_save.Enabled := False;
                  cmd_cancel.Enabled := False;
                end;
              end;
    dsEdit  : begin
                cmd_edit.Enabled := False;
                cmd_save.Enabled := True;
                cmd_cancel.Enabled := True;
              end;
  end;
end;

procedure Tfrm_zy_ll.controlSetFocus(intpos: integer);
begin
  case intpos of
    1: txt_gg.SetFocus;
    2: txt_pj.SetFocus;
    3: frm_zy_ll.cmd_queryClick(nil);
    4: txt_pj_dj.SetFocus;
    5: txt_sum.SetFocus;
    6: txt_lyr.SetFocus;
  end;
end;

procedure Tfrm_zy_ll.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;

procedure Tfrm_zy_ll.lstInfoInit;
var
  str_id: string;
  str_name: string;
  i: integer;
  intLen: integer;
begin
  for i := 1 to 3 do begin
    hideList[i] := TListBox.Create(Self);
    hideList[i].BorderStyle := bsNone;
    hideList[i].Color := clInfoBk;
    hideList[i].Width := 253;
    hideList[i].Height := 78;
    hideList[i].Parent := pe_select;
    hideList[i].Tag := i;
    hideList[i].OnClick := frm_zy_ll.ControlClick;
    hideList[i].Visible := False;
  end;
  //初始化配件类型列表
  qe_kind.Close;
  qe_kind.Open;
  qe_kind.First;
  while not qe_kind.Eof do begin
    str_id := Trim(qe_kind.FieldByName('pj_kind_id').AsString);
    str_name := Trim(qe_kind.FieldByName('pj_kind_name').AsString);
    intLen := Length(str_id);
    if intLen < 20 then str_id := str_id + spaceArray[20 - intLen];
    hideList[1].Items.Add(str_id + str_name);
    qe_kind.Next;
  end;
  qe_kind.Close;
  hideList[1].Left := 39;
  hideList[1].Top := 35;
  hideList[1].ItemIndex := -1;
  //初始化配件规格列表
  hideList[2].Left := 39;
  hideList[2].Top := 58;
  //初始化配件信息列表
  qe_pj.Close;
  qe_pj.Open;
  qe_pj.First;
  while not qe_pj.Eof do begin
    str_id := Trim(qe_pj.FieldByName('pj_id').AsString);
    str_name := Trim(qe_pj.FieldByName('pj_name').AsString);
    intLen := Length(str_id);
    if intLen < 20 then str_id := str_id + spaceArray[20 - intLen];
    hideList[3].Items.Add(str_id + str_name);
    qe_pj.Next;
  end;
  qe_pj.Close;
  hideList[3].Left := 39;
  hideList[3].Top := 81;
  hideList[3].ItemIndex := -1;
end;

procedure Tfrm_zy_ll.ControlClick(Sender: TObject);
var
  intIndex: integer;
  str_name: string;
begin
  intIndex := TListBox(Sender).Tag;
  if (intIndex <= 3) and (intIndex > 0) then begin
    case intIndex of
      1: begin
           str_name := Copy(hideList[1].Items[hideList[1].ItemIndex], 21, 60);
           txt_kind.Text := str_name;
           txt_kind.SetFocus;
         end;
      2: begin
           str_name := Copy(hideList[2].Items[hideList[2].ItemIndex], 21, 60);
           txt_gg.Text := str_name;
           txt_gg.SetFocus;
         end;
      3: begin
           str_name := Copy(hideList[3].Items[hideList[3].ItemIndex], 21, 60);
           txt_pj.Text := str_name;
           txt_pj.SetFocus;
         end;
    end;
  end;
end;

procedure Tfrm_zy_ll.ControlChange1(Sender: TObject);
var
  strText: string;
  i: integer;
  intPos: integer;
  //
  intIndex: integer;
  str_id: string;
begin
    intIndex := TWinControl(Sender).Tag;
    if (intIndex <= 3) and (intIndex > 0) then begin
      hideList[intIndex].Visible := True;
      strText := Trim(TEdit(Sender).Text);
      //第一次
      for i := 0 to hideList[intIndex].Items.Count - 1 do begin
        str_id := Copy(hideList[intIndex].Items[i], 1, 20);
        intPos := Pos(strText, str_id);
        if intPos = 1 then begin
          hideList[intIndex].ItemIndex := i;
          Break;
        end else begin
          hideList[intIndex].ItemIndex := 0;
        end;
      end;
      //第二次
      if intPos <> 1 then begin
        for i := 0 to hideList[intIndex].Items.Count - 1 do begin
          str_id := Copy(hideList[intIndex].Items[i], 21, 60);
          intPos := Pos(strText, str_id);
          if intPos = 1 then begin
            hideList[intIndex].ItemIndex := i;
            Break;
          end else begin
            hideList[intIndex].ItemIndex := 0;
          end;
        end;
      end;
    end;
end;

procedure Tfrm_zy_ll.ControlChange2(Sender: TObject);
begin
  if (qe_pj_ck.State = dsEdit) then
    EnabledComponent(dsEdit);
end;

procedure Tfrm_zy_ll.ControlEnter(Sender: TObject);
var
  i: integer;
  str_name: string;
  str_id: string;
  intLen: integer;
begin
  for i := 1 to 3 do
    hideList[i].Visible := False;
  //
  if TWinControl(Sender).Tag = 2 then begin
    if (Trim(txt_kind.Text) = '') or (hideList[1].ItemIndex = -1) then begin
      MessageBox(Handle, '请确定配件类型', '沈阳信德', MB_ICONQUESTION or MB_OK);
      txt_kind.SetFocus;
      Exit;
    end else begin
      str_name := Copy(hideList[1].Items[hideList[1].ItemIndex], 21, 60);
      if Trim(str_name) <> Trim(txt_kind.Text) then begin
        MessageBox(Handle, '请确定配件类型', '沈阳信德', MB_ICONQUESTION or MB_OK);
        txt_kind.SetFocus;
        Exit;
      end else begin
        str_id := Copy(hideList[1].Items[hideList[1].ItemIndex], 1, 20);
        if Trim(str_id) <> Trim(qe_gg.ParamByName('ipj_kind_id').Value) then begin
          qe_gg.Close;
          qe_gg.ParamByName('ipj_kind_id').Value := Trim(str_id);
          qe_gg.Open;
          qe_gg.First;
          if (qe_gg.Bof) and (qe_gg.Eof) then begin
            MessageBox(Handle, '该类型的配件规格不存在', '沈阳信德', MB_ICONQUESTION or MB_OK);
            qe_gg.ParamByName('ipj_kind_id').Value := '***';
            txt_kind.SetFocus;
            Exit;
          end;
          qe_gg.First;
          hideList[2].Items.Clear;
          while not qe_gg.Eof do begin
            str_id := Trim(qe_gg.FieldByName('pj_gg_id').AsString);
            str_name := Trim(qe_gg.FieldByName('pj_gg_name').AsString);
            intLen := Length(str_id);
            if intLen < 20 then str_id := str_id + spaceArray[20 - intLen];
            hideList[2].Items.Add(str_id + str_name);
            qe_gg.Next;
          end;
          qe_gg.Close;
          hideList[2].ItemIndex := -1;
          //
          txt_gg.Text := '';
        end;
      end;
    end;
  end;
end;

procedure Tfrm_zy_ll.ControlKeyPress1(Sender: TObject; var Key: Char);
var
  intIndex: integer;
  str_name: string;
begin
  if Ord(Key) = 13 then begin
    intIndex := TEdit(Sender).Tag;
    if (intIndex <= 3) and (intIndex > 0) then begin
      if hideList[intIndex].ItemIndex > -1 then begin
        str_name := Copy(hideList[intIndex].Items[hideList[intIndex].ItemIndex], 21, 60);
        TEdit(Sender).Text := str_name;
      end;
      hideList[intIndex].Visible := False;
      controlSetFocus(TWinControl(Sender).Tag);
    end else begin
      controlSetFocus(TWinControl(Sender).Tag);
    end;
  end;
end;

procedure Tfrm_zy_ll.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_zy_ll.ExeDelandInit;
begin

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -