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

📄 medicine_form4.pas

📁 基于DELPHI+SQL的药品管理系统
💻 PAS
字号:
unit medicine_form4;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls, StdCtrls, Mask, DBCtrls, Db, Grids, DBGrids, DBTables;

type
  Tconfig_Form = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    TabSheet3: TTabSheet;
    btnSaveMedicine: TButton;
    btnExit: TButton;
    Label8: TLabel;
    Edit1: TEdit;
    tblMedicine: TTable;
    DBGrid1: TDBGrid;
    dsMedicineInfo: TDataSource;
    GroupBox1: TGroupBox;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label10: TLabel;
    DBEdit1: TDBEdit;
    DBEdit2: TDBEdit;
    DBEdit3: TDBEdit;
    DBEdit4: TDBEdit;
    DBEdit5: TDBEdit;
    DBEdit6: TDBEdit;
    qryLocate: TQuery;
    DBGrid2: TDBGrid;
    dsValidity: TDataSource;
    GroupBox2: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Label9: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    DBEdit7: TDBEdit;
    DBEdit8: TDBEdit;
    DBEdit9: TDBEdit;
    DBEdit11: TDBEdit;
    DBEdit12: TDBEdit;
    Label14: TLabel;
    btnSaveValidity: TButton;
    DBEdit13: TDBEdit;
    chkbIsOver: TCheckBox;
    qryValidity: TQuery;
    Label13: TLabel;
    Edit2: TEdit;
    tblRight: TTable;
    dsRight: TDataSource;
    GroupBox3: TGroupBox;
    Label15: TLabel;
    Label16: TLabel;
    GroupBox4: TGroupBox;
    rdbtnEdit: TRadioButton;
    rdbtnBrowser: TRadioButton;
    rdbtnForbid: TRadioButton;
    DBEdit10: TDBEdit;
    DBEdit14: TDBEdit;
    btnSaveUser: TButton;
    btnCancelUser: TButton;
    btnDelUser: TButton;
    btnAddUser: TButton;
    dbgrdRight: TDBGrid;
    procedure tblMedicineAfterEdit(DataSet: TDataSet);
    procedure btnSaveMedicineClick(Sender: TObject);
    procedure btnExitClick(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure qryValidityAfterScroll(DataSet: TDataSet);
    procedure btnSaveValidityClick(Sender: TObject);
    procedure qryValidityAfterOpen(DataSet: TDataSet);
    procedure chkbIsOverClick(Sender: TObject);
    procedure Edit2Change(Sender: TObject);
    procedure tblRightAfterEdit(DataSet: TDataSet);
    procedure btnAddUserClick(Sender: TObject);
    procedure btnCancelUserClick(Sender: TObject);
    procedure btnSaveUserClick(Sender: TObject);
    procedure btnDelUserClick(Sender: TObject);
    procedure tblRightAfterScroll(DataSet: TDataSet);
    procedure rdbtnEditClick(Sender: TObject);
  private
    procedure GetValidityInfo();
    procedure SetUserEditState(ablnState:boolean);
    { Private declarations }
  public
    { Public declarations }
  end;

var
  config_Form: Tconfig_Form;

implementation

{$R *.DFM}

procedure Tconfig_Form.tblMedicineAfterEdit(DataSet: TDataSet);
begin
     btnSaveMedicine.Enabled := true;
end;

procedure Tconfig_Form.btnSaveMedicineClick(Sender: TObject);
begin
     tblMedicine.Post;
     btnSaveMedicine.Enabled := false;
end;

procedure Tconfig_Form.btnExitClick(Sender: TObject);
begin
     self.close;
end;

procedure Tconfig_Form.Edit1Change(Sender: TObject);
var
   s_sql:string;
begin
     qryLocate.Close;
     qryLocate.SQL.Clear;
     s_sql:='select * from medicine where (code like '+ ''''+'*'+trim(Edit1.Text)+'*'+'''' +
            ') or (name like ' +  ''''+'*'+trim(Edit1.Text)+'*'+'''' + ')';
     qryLocate.sql.add(s_sql);
     qryLocate.Open;

     if qryLocate.RecordCount >0 then
        tblMedicine.Locate('code',qryLocate.FieldByName('code').AsString,[loCaseInsensitive])
end;

procedure Tconfig_Form.FormCreate(Sender: TObject);
begin
     GetValidityInfo();
     SetUserEditState(false);
end;

procedure Tconfig_Form.qryValidityAfterScroll(DataSet: TDataSet);
begin
     chkbIsOver.Checked := false;
     btnSaveValidity.Enabled := false;
end;

procedure Tconfig_Form.btnSaveValidityClick(Sender: TObject);
var
   lstrSql:string;
begin
     if Application.MessageBox('是否确认药品已售完,关闭此有效期验证?','有效期验证',MB_OKCANCEL + MB_DEFBUTTON1) = IDOK then
     begin
        qryLocate.Close;
        qryLocate.SQL.clear;
        lstrSql:= 'Update InMedicine Set IsOver = ''1'' where ID = '
                  + qryValidity.FieldByName('ID').AsString;
        qryLocate.sql.add(lstrSql);
        qryLocate.ExecSQL;

        btnSaveValidity.Enabled := false;

        GetValidityInfo();
     end;

end;

procedure Tconfig_Form.qryValidityAfterOpen(DataSet: TDataSet);
begin
     if DataSet.RecordCount <= 0 then
     begin
        chkbIsOver.Checked := false;
        chkbIsOver.Enabled := false;
        btnSaveValidity.Enabled := false;
     end;
end;

procedure Tconfig_Form.chkbIsOverClick(Sender: TObject);
begin
     if chkbIsOver.Checked then
        btnSaveValidity.Enabled := true
     else
         btnSaveValidity.Enabled := false;
end;

procedure Tconfig_Form.GetValidityInfo;
begin
  qryValidity.close;
  qryValidity.ParamByName('this_date').AsString := DateToStr(date());
  qryValidity.open;
end;

procedure Tconfig_Form.Edit2Change(Sender: TObject);
var
   s_sql:string;
begin
     qryLocate.Close;
     qryLocate.SQL.Clear;
     s_sql:='select a.code as code,a.name as name'
                    + ' from medicine as a,inmedicine as b'
                    + ' where a.code=b.code and b.isover=' + '''' +'0'+ ''''
                    + ' and ((a.code like '+ ''''+'*'+trim(Edit2.Text)+'*'+''''
                    + ') or (a.name like ' +  ''''+'*'+trim(Edit2.Text)+'*'+'''' + '))'
                    + ' and b.LastDate <=''' + DateToStr(Date()) + '''';
     qryLocate.sql.add(s_sql);
     qryLocate.Open;

     if qryLocate.RecordCount >0 then
        qryValidity.Locate('code',qryLocate.FieldByName('code').AsString,[loCaseInsensitive])
end;

procedure Tconfig_Form.tblRightAfterEdit(DataSet: TDataSet);
begin
  SetUserEditState(True);
end;

procedure Tconfig_Form.SetUserEditState(ablnState:boolean);
begin
  dbgrdRight.Enabled := not ablnState;
  btnAddUser.Enabled := not ablnState;
  btnDelUser.Enabled := not ablnState;
  btnCancelUser.Enabled := ablnState;
  btnSaveUser.Enabled := ablnState;
end;

procedure Tconfig_Form.btnAddUserClick(Sender: TObject);
begin
     SetUserEditState(True);
     tblRight.Insert;
     rdbtnEdit.Checked := true;
end;

procedure Tconfig_Form.btnCancelUserClick(Sender: TObject);
begin
     tblRight.Cancel;
     SetUserEditState(false);      
end;

procedure Tconfig_Form.btnSaveUserClick(Sender: TObject);
begin
     if tblRight.State <> dsEdit then
        tblRight.Edit;
     if rdbtnEdit.Checked then
        tblRight.FieldByName('pope').AsString := '2';
     if rdbtnBrowser.Checked then
        tblRight.FieldByName('pope').AsString := '1';
     if rdbtnForbid.Checked then
        tblRight.FieldByName('pope').AsString := '0';

     tblRight.Post;
     SetUserEditState(false);
end;

procedure Tconfig_Form.btnDelUserClick(Sender: TObject);
begin
     tblRight.Delete;
end;

procedure Tconfig_Form.tblRightAfterScroll(DataSet: TDataSet);
begin
     if tblRight.FieldByName('pope').AsString = '0' then
        rdbtnForbid.Checked := true;

     if tblRight.FieldByName('pope').AsString = '1' then
        rdbtnBrowser.Checked := true;

     if tblRight.FieldByName('pope').AsString = '2' then
        rdbtnEdit.Checked := true;

end;

procedure Tconfig_Form.rdbtnEditClick(Sender: TObject);
begin
   if (self.ActiveControl = rdbtnForbid)
      or (self.ActiveControl = rdbtnBrowser)
      or (self.ActiveControl = rdbtnEdit) then
   SetUserEditState(true);
end;

end.

⌨️ 快捷键说明

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