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

📄 goodseditunit.pas

📁 药店管理系统.SQL SERVER .第三方控件
💻 PAS
字号:
unit GoodsEditUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, DB, DBTables;

type
  TGoodsEditForm = class(TForm)
    Query_data: TQuery;
    PanelBkGnd: TPanel;
    Panel_button: TPanel;
    Bevel_button: TBevel;
    OKBtn: TButton;
    CancelBtn: TButton;
    FlatPanel_edit: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label5: TLabel;
    Label4: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    E_type: TEdit;
    E_ID: TEdit;
    E_price: TEdit;
    E_sellprice: TEdit;
    E_memo: TEdit;
    E_unit: TEdit;
    E_NAME: TComboBox;
    procedure E_NAMEKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormCreate(Sender: TObject);
    procedure OKBtnClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure E_priceKeyPress(Sender: TObject; var Key: Char);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure CancelBtnClick(Sender: TObject);
  private
    { Private declarations }
  public
    P_state: integer;
    { Public declarations }
  end;

var
  GoodsEditForm: TGoodsEditForm;

implementation

uses MainUnit, FunctionUnit, GoodsInfoUnit;
{$R *.dfm}

procedure TGoodsEditForm.E_NAMEKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (key = 13) or (key = 40) then { 判断是按执行键}
  begin
    key := 0;
    perform(WM_NEXTDLGCTL, 0, 0); {移动到下一个控件}
  end;
end;

procedure TGoodsEditForm.FormCreate(Sender: TObject);
begin
  query_data.DatabaseName := 'CPXSGL';
  P_state := 1; //0-增加  1-修改
end;

procedure TGoodsEditForm.OKBtnClick(Sender: TObject);
begin
  if trim(E_name.Text) = '' then
  begin
    messagedlg(Errormsg0002 + '0002', mtError, [mbok], 0);
    E_name.SetFocus;
    exit;
  end;
  if trim(E_type.Text) = '' then
  begin
    messagedlg(Errormsg0002 + '0014', mtError, [mbok], 0);
    E_name.SetFocus;
    exit;
  end;
  if trim(E_ID.Text) = '' then
  begin
    messagedlg(Errormsg0002 + '0003', mtError, [mbok], 0);
    E_id.SetFocus;
    exit;
  end;
  if P_state = 0 then //增加数据
  begin
    if not Checkrights(USERRIGHTS, '增加') then
    begin
      messagedlg(Errormsg0006 + '0007', mterror, [mbok], 0);
      exit;
    end;
    with query_data do
    begin
      close;
      sql.Clear;
      sql.Text := 'select * from goods where id="' + uppercase(E_id.Text) + '"';
      try
        open;
      except
        messagedlg(Errormsg0001 + '0012', mtError, [mbok], 0);
        close;
        self.Close;
      end;
      if RecordCount > 0 then //编号已存在
      begin
        messagedlg(Errormsg0003 + '0004', mtError, [mbok], 0);
        E_id.SetFocus;
        close;
        exit;
      end
      else //编号不存在则增加
      begin
        close;
        sql.Clear;
        sql.Text := 'insert into goods (name,type,id,unit,price,sellprice,memo)' +
          'values ("' + E_name.Text + '","' + E_type.Text + '","' + uppercase(E_id.Text)
          + '","' + E_unit.Text + '","' + E_price.Text + '","' + E_sellprice.Text + '","'
          + E_memo.Text + '")';
        try
          execsql;
        except
          messagedlg(Errormsg0004 + '0013', mtError, [mbok], 0);
          close;
          self.Close;
        end;
      end;
      messagedlg(Infmsg0001, mtInformation, [mbok], 0);
      close;
    end;
  end
  else if P_state = 1 then //修改数据
  begin
    if not Checkrights(USERRIGHTS, '编辑') then
    begin
      messagedlg(Errormsg0006 + '0007', mterror, [mbok], 0);
      exit;
    end;
    with query_data do
    begin
      close;
      sql.Clear;
      sql.Text := 'update goods set name="' + E_name.Text + '",type="' + E_type.Text
        + '",unit="' + E_unit.Text + '",price="' + E_price.Text + '",sellprice="'
        + E_sellprice.Text + '",memo="' + E_memo.Text + '" where id="' + E_id.text + '"';
      try
        execsql;
      except
        messagedlg(Errormsg0004 + '0013', mtError, [mbok], 0);
        close;
        self.Close;
      end;
      messagedlg(Infmsg0003, mtInformation, [mbok], 0);
      close;
    end;
  end;
  if P_state = 0 then //继续增加
  begin
    e_name.SetFocus;
    e_type.Text := '';
    e_unit.Text := '';
    e_memo.Text := '';
    e_price.Text := '';
    e_sellprice.Text := '';
  end
  else
    self.Close;
end;

procedure TGoodsEditForm.FormShow(Sender: TObject);

var
  B_find: boolean;
  I_temp: integer;
begin
  if P_state = 1 then
  begin
    E_id.ReadOnly := true;
    OKBtn.Enabled := Checkrights(USERRIGHTS, '编辑');
  end
  else
  begin
    E_id.ReadOnly := false;
    OKBtn.Enabled := Checkrights(USERRIGHTS, '增加');
  end;

  with query_data do
  begin
    close;
    sql.Clear;
    sql.text := 'select * from goods order by name';
    open;
    while not eof do
    begin
      B_find := false;
      for I_temp := 0 to e_name.Items.Count - 1 do
      begin
        if e_name.Items.Strings[I_temp] = fieldbyname('name').asstring then
          B_find := true; //找到相同名称
      end;
      if not B_find then //没有找到时增加
        e_name.Items.add(fieldbyname('name').asstring);
      next;
    end;
  end;
end;

procedure TGoodsEditForm.E_priceKeyPress(Sender: TObject; var Key: Char);
begin
  if word(key) = 46 then
  begin
    if strpos(pchar((sender as TEdit).Text), chr(46)) <> nil then key := chr(0);
  end
  else if (word(key) <> 8) and (word(key) < 48) or (word(key) > 57) then key := chr(0);

end;

procedure TGoodsEditForm.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  QUERY_data.Free;
end;

procedure TGoodsEditForm.CancelBtnClick(Sender: TObject);
begin
  Self.Close;
end;

end.

⌨️ 快捷键说明

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