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

📄 vendor.pas

📁 一个delphi开发的库存管理系统源代码
💻 PAS
字号:
unit vendor;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, Grids, DBGridEh, StdCtrls, Menus, EhLibADO;

type
  Tfvendor = class(TForm)
    Panel1: TPanel;
    dg_view: TDBGridEh;
    Label1: TLabel;
    lbl_info: TLabel;
    PopupMenu1: TPopupMenu;
    A1: TMenuItem;
    M1: TMenuItem;
    D1: TMenuItem;
    R1: TMenuItem;
    N1: TMenuItem;
    L1: TMenuItem;
    pl_vendor: TPanel;
    Panel3: TPanel;
    Label2: TLabel;
    Label3: TLabel;
    tb_name: TEdit;
    Label4: TLabel;
    tb_addr: TEdit;
    Label5: TLabel;
    tb_linker: TEdit;
    Label6: TLabel;
    tb_phone: TEdit;
    Label7: TLabel;
    tb_memo: TMemo;
    Button1: TButton;
    Button2: TButton;
    procedure A1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure M1Click(Sender: TObject);
    procedure D1Click(Sender: TObject);
    procedure R1Click(Sender: TObject);
    procedure L1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure tb_nameKeyPress(Sender: TObject; var Key: Char);
    procedure tb_addrKeyPress(Sender: TObject; var Key: Char);
    procedure tb_linkerKeyPress(Sender: TObject; var Key: Char);
    procedure tb_phoneKeyPress(Sender: TObject; var Key: Char);
    procedure dg_viewKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    flag : char;
    { Private declarations }
  public
    { Public declarations }
  end;


var
  fvendor: Tfvendor;

implementation
uses dm,vks;

{$R *.dfm}

procedure Tfvendor.A1Click(Sender: TObject);
begin
  dg_view.Enabled := false;
  pl_vendor.Visible := true;
  flag := 'A';
  tb_name.SetFocus;
end;

procedure Tfvendor.Button2Click(Sender: TObject);
begin
  pl_vendor.Visible := false;
  tb_name.Clear;
  tb_addr.Clear;
  tb_linker.Clear;
  tb_phone.Clear;
  tb_memo.Clear;
  dg_view.Enabled := true;
end;

procedure Tfvendor.M1Click(Sender: TObject);
begin
  if fdm.qvendor.RecordCount>0 then
  begin
    dg_view.Enabled := false;
    pl_vendor.Visible := true;
    flag := 'M';
    tb_name.Text := dg_view.Fields[1].AsString;
    tb_addr.Text := dg_view.Fields[2].AsString;
    tb_linker.Text := dg_view.Fields[3].AsString;
    tb_phone.Text := dg_view.Fields[4].AsString;
    tb_memo.Text := dg_view.Fields[5].AsString;
    tb_name.SetFocus;
  end;
end;

procedure Tfvendor.D1Click(Sender: TObject);
var
  idx : integer;
begin
if (fdm.qvendor.RecordCount>0) and (vks.box('确定要删除本数据吗?'#13#10'如果没有关联数据,将能被删除.','供应商数据删除窗口')) then
begin
  with fdm.q do
  begin
    close;
    sql.Text := 'delete from [vendor] where id='+dg_view.Fields[0].AsString;
    try
      if dg_view.DataSource.DataSet.RecordCount<>1 then idx := dg_view.DataSource.DataSet.RecNo else idx := 0;
      execsql;
      R1Click(Sender);
      if idx<>0 then dg_view.DataSource.DataSet.RecNo := idx;
      close;
    except
      close;
      vks.info(1008);
    end;
  end;
end;
end;

procedure Tfvendor.R1Click(Sender: TObject);
begin
  fdm.qvendor.Close;
  fdm.qvendor.Open;
  lbl_info.Caption := '共'+IntToStr(fdm.qvendor.RecordCount)+'条';
end;

procedure Tfvendor.L1Click(Sender: TObject);
begin
if fdm.qvendor.RecordCount>0 then
begin
  with fdm.q do
  begin
    close;
    sql.Text := 'update [vendor] set flag=not flag where id='+dg_view.Fields[0].AsString;
    try
      execsql;
      R1Click(Sender);
      close;
    except
      close;
      vks.info(1008);
    end;
  end;
end;
end;

procedure Tfvendor.FormShow(Sender: TObject);
begin
  if not fdm.qvlist.Active then fdm.qvlist.Active := true;
  R1Click(Sender);
end;

procedure Tfvendor.Button1Click(Sender: TObject);
var
  cnt : string;
  idx : integer;
begin
  if tb_name.Text='' then
  begin
    vks.info(1013);
    tb_name.SetFocus;
    exit;
  end;
  if tb_addr.Text='' then
  begin
    vks.info(1014);
    tb_addr.SetFocus;
    exit;
  end;
  if tb_linker.Text='' then
  begin
    vks.info(1015);
    tb_linker.SetFocus;
    exit;
  end;
  if tb_phone.Text='' then
  begin
    vks.info(1016);
    tb_phone.SetFocus;
    exit;
  end;
  with fdm.q do
  begin
    close;
    sql.Text := 'select count(1) as cnt from [vendor] where name='+AnsiQuotedStr(tb_name.Text,#39);
    if flag='M' then sql.Text := sql.Text + ' and id<>'+dg_view.Fields[0].AsString;
    try
      Open;
      cnt := FieldByName('cnt').AsString;
      close;
      if cnt<>'0' then
      begin
        vks.info(1011);
        exit;
      end;
      if flag='A' then
      begin
        sql.Text := 'insert into [vendor](name,addr,linker,phone,[memo]) values('+AnsiQuotedStr(tb_name.Text,#39)+',';
        sql.Text := sql.Text+AnsiQuotedStr(tb_addr.Text,#39)+','+AnsiQuotedStr(tb_linker.Text,#39)+',';
        sql.Text := sql.Text+AnsiQuotedStr(tb_phone.Text,#39)+','+AnsiQuotedStr(tb_memo.Text,#39)+')';
      end
      else
      begin
        sql.Text := 'update [vendor] set name='+AnsiQuotedStr(tb_name.Text,#39)+',addr='+AnsiQuotedStr(tb_addr.Text,#39);
        sql.Text := sql.Text+',linker='+AnsiQuotedStr(tb_linker.Text,#39)+',phone='+AnsiQuotedStr(tb_phone.Text,#39);
        sql.Text := sql.Text+',[memo]='+AnsiQuotedStr(tb_memo.Text,#39)+' where id='+dg_view.Fields[0].AsString;
      end;
      try
        if flag='A' then idx := dg_view.DataSource.DataSet.RecordCount+1
        else idx:=dg_view.DataSource.DataSet.RecNo;
        execsql;
        Button2Click(Sender);
        R1Click(Sender);
        dg_view.DataSource.DataSet.RecNo := idx;
        dg_view.SetFocus;
      except
        close;
        vks.info(1008);
      end;
    except
      close;
      vks.info(1008);
    end;
  end;
end;

procedure Tfvendor.tb_nameKeyPress(Sender: TObject; var Key: Char);
begin
  if (key=#13) and (tb_name.Text<>'') then tb_addr.SetFocus;
end;

procedure Tfvendor.tb_addrKeyPress(Sender: TObject; var Key: Char);
begin
  if (key=#13) and (tb_addr.Text<>'') then tb_linker.SetFocus;
end;

procedure Tfvendor.tb_linkerKeyPress(Sender: TObject; var Key: Char);
begin
  if (key=#13) and (tb_linker.Text<>'') then tb_phone.SetFocus;
end;

procedure Tfvendor.tb_phoneKeyPress(Sender: TObject; var Key: Char);
begin
  if (key=#13) and (tb_phone.Text<>'') then tb_memo.SetFocus;
end;

procedure Tfvendor.dg_viewKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key=vk_f3 then A1Click(Sender);
  if key=vk_f4 then M1Click(Sender);
  if key=vk_delete then D1Click(Sender);
  if key=vk_f5 then R1Click(Sender);
  if key=vk_f6 then L1Click(Sender);
end;

end.

⌨️ 快捷键说明

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