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

📄 fmsingleu.pas

📁 小型库存管理,希望有帮助,小型库存管理,希望有帮助
💻 PAS
字号:
{单档基类}
unit FMSingleU;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, FMBaseU, DB, ADODB, StdCtrls, Buttons, ExtCtrls, Menus;

type
  TFMSingle = class(TFMBase)
    cdsMain: TADODataSet;
    dsMain: TDataSource;
    BtnPanel: TPanel;
    btnFirst: TBitBtn;
    btnPre: TBitBtn;
    btnNext: TBitBtn;
    btnLast: TBitBtn;
    btnAdd: TBitBtn;
    btnModify: TBitBtn;
    btnDelete: TBitBtn;
    btnSave: TBitBtn;
    btnCancle: TBitBtn;
    btnQuery: TBitBtn;
    btnExit: TBitBtn;
    btnPrint: TBitBtn;
    SingleMenu: TPopupMenu;
    pnmFirst: TMenuItem;
    pnmPre: TMenuItem;
    pnmNext: TMenuItem;
    pnmLast: TMenuItem;
    N5: TMenuItem;
    pnmInsert: TMenuItem;
    pnmModify: TMenuItem;
    pnmDelete: TMenuItem;
    N11: TMenuItem;
    pnmSave: TMenuItem;
    pnmCancle: TMenuItem;
    pnmQuery: TMenuItem;
    pnmExit: TMenuItem;
    procedure FormCreate(Sender: TObject);
    procedure btnAddClick(Sender: TObject);
    procedure btnModifyClick(Sender: TObject);
    procedure btnDeleteClick(Sender: TObject);
    procedure btnSaveClick(Sender: TObject);
    procedure btnCancleClick(Sender: TObject);
    procedure btnFirstClick(Sender: TObject);
    procedure btnPreClick(Sender: TObject);
    procedure btnNextClick(Sender: TObject);
    procedure btnLastClick(Sender: TObject);
    procedure btnExitClick(Sender: TObject);
    procedure btnQueryClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure dsMainStateChange(Sender: TObject);
    procedure cdsMainBeforeScroll(DataSet: TDataSet);
    procedure cdsMainAfterScroll(DataSet: TDataSet);
    procedure cdsMainPostError(DataSet: TDataSet; E: EDatabaseError;
      var Action: TDataAction);
  private
    { Private declarations }
    FAddType:integer ;
    FSQL,FSubSQL,FTableName:string ;
  public
    { Public declarations }
    aErrMsg :string ;
    property  PAddType :integer read FAddType write FAddType ;  {传递的过滤语句或返回结果的SQL语句}
    property  PSQL :string read FSQL write FSQL ;  {传递的过滤语句或返回结果的SQL语句}
    property  USubSQL :string read FSubSQL write FSubSQL ;  {传递的过滤语句或返回结果的SQL语句}
    property  PTableName :string read FTableName write FTableName ; {查询的表}
    function DelCheck:boolean ; virtual;
    procedure SetButton;
  end;

var
  FMSingle: TFMSingle;

implementation

{$R *.dfm}

uses FMDBU,FmSearchU ;

function TFMSingle.DelCheck:boolean;
begin
  result :=true ; 
end ;

{按钮控制}
procedure TFMSingle.SetButton;
begin                                    
  btnExit.Enabled := dsMain.DataSet.State in [dsBrowse];
  btnPrint.Enabled :=(cdsMain.Active) and (dsMain.DataSet.State in [dsBrowse]);
  btnCancle.Enabled := (dsMain.DataSet.State in [dsInsert, dsEdit]);
  btnAdd.Enabled := (not cdsMain.Active) or (dsMain.DataSet.State in [dsBrowse]);
  btnQuery.Enabled :=(not cdsMain.Active) or (dsMain.DataSet.State in [dsBrowse]) ;

  if cdsMain.State in [dsInsert, dsEdit] then
  begin
    btnModify.Enabled := False;
    btnDelete.Enabled := False;
  end
  else
   begin
    {btnModify.Enabled := ((dsMain.DataSet.State in [dsBrowse]) and
                       (not dsMain.DataSet.Eof) or
                       (not dsMain.DataSet.Bof));}
    btnModify.Enabled := ((dsMain.DataSet.State in [dsBrowse]) and
                           (dsMain.DataSet.RecordCount>0));
    {btnDelete.Enabled := ((dsMain.DataSet.State in [dsBrowse]) and
                      (not dsMain.DataSet.Eof) or
                      (not dsMain.DataSet.Bof)); }
    btnDelete.Enabled := ((dsMain.DataSet.State in [dsBrowse]) and
                           (dsMain.DataSet.RecordCount>0));
   end;
  btnSave.Enabled := (dsMain.DataSet.State in [dsInsert, dsEdit]);
  
  btnFirst.Enabled := ((dsMain.DataSet.State in [dsBrowse]) and
                      (not dsMain.DataSet.Bof));
  btnPre.Enabled := ((dsMain.DataSet.State in [dsBrowse]) and
                      (not dsMain.DataSet.Bof));
  btnNext.Enabled := ((dsMain.DataSet.State in [dsBrowse]) and
                     (not dsMain.DataSet.Eof));
  btnLast.Enabled := ((dsMain.DataSet.State in [dsBrowse]) and
                     (not dsMain.DataSet.Eof));

  pnmFirst.Enabled :=btnFirst.Enabled ;
  pnmPre.Enabled :=btnPre.Enabled ;
  pnmNext.Enabled :=btnNext.Enabled ;
  pnmLast.Enabled :=btnLast.Enabled ;
  pnmInsert.Enabled :=btnAdd.Enabled ;
  pnmModify.Enabled:=btnModify.Enabled ;
  pnmDelete.Enabled :=btnDelete.Enabled  ;
  pnmSave.Enabled :=btnSave.Enabled ;
  pnmCancle.Enabled :=btnCancle.Enabled ;
  pnmQuery.Enabled :=btnQuery.Enabled ;
  pnmExit.Enabled :=btnExit.Enabled ;
end ;
{初始化}
procedure TFMSingle.FormCreate(Sender: TObject);
begin
  inherited;
  if aErrMsg='' then aErrMsg :='该记录不能删除.';
  SetButton;
  PSQL :=cdsMain.CommandText ;
  if FAddType=1 then
     cdsMain.CommandText :=cdsMain.CommandText +' and 1=2';
end;

{新增}
procedure TFMSingle.btnAddClick(Sender: TObject);
begin
  inherited;
  if not cdsMain.Active then
       cdsMain.Active :=True;
  cdsMain.Append ;
  SetEnable(True);
end;

{修改}
procedure TFMSingle.btnModifyClick(Sender: TObject);
begin
  inherited;
  if cdsMain.Active then
   begin
    SetEnable(True);
    cdsMain.Edit ;
   end ;
end;

{删除}
procedure TFMSingle.btnDeleteClick(Sender: TObject);
begin
  inherited;
  if not DelCheck  then
   begin
     MessageBox(handle,PChar(aErrMsg),'提示',MB_OK+MB_ICONWARNING);
     exit ;
   end ;
  if messagebox(handle,'确定删除此记录吗?','确认',MB_OKCANCEL+MB_ICONINFORMATION)<>IDOK then exit;
  cdsMain.Delete ;
end;

{保存}
procedure TFMSingle.btnSaveClick(Sender: TObject);
begin
  inherited;
  if not(cdsMain.State in [dsInsert,dsEdit]) then exit ;
  try
    cdsMain.Post ;
    SetEnable(False);
  except
    on E:Exception do MessageBox(handle,PChar(E.Message),'提示',MB_OK+MB_ICONWARNING);
  end ;
end;

{取消}
procedure TFMSingle.btnCancleClick(Sender: TObject);
begin
  inherited;
  if not(cdsMain.State in [dsInsert,dsEdit]) then exit ;
  cdsMain.Cancel ;
  SetEnable(False);
end;

{第一笔记录的按钮}
procedure TFMSingle.btnFirstClick(Sender: TObject);
begin
  inherited;
  if dsMain.DataSet.State = dsBrowse then
  begin
    dsMain.DataSet.First;
    btnFirst.Enabled := False;
    btnPre.Enabled := False;
  end;
end;

{上一笔记录的按钮}
procedure TFMSingle.btnPreClick(Sender: TObject);
begin
  inherited;
  if dsMain.DataSet.State = dsBrowse then
  begin
    dsMain.DataSet.Prior;
    if dsMain.DataSet.Bof then
    begin
      dsMain.DataSet.First;
      btnFirst.Enabled := False;
      btnPre.Enabled := False;
    end;
  end;
end;

{下一笔记录的按钮}
procedure TFMSingle.btnNextClick(Sender: TObject);
begin
  inherited;
  if dsMain.DataSet.State = dsBrowse then
  begin
    dsMain.DataSet.Next;
    if dsMain.DataSet.Eof then
    begin
      dsMain.DataSet.Last;
      btnLast.Enabled := False;
      btnNext.Enabled := False;
    end;
  end;
end;

{最后一笔记录的按钮}
procedure TFMSingle.btnLastClick(Sender: TObject);
begin
  inherited;
  if dsMain.DataSet.State = dsBrowse then
  begin
    dsMain.DataSet.Last;
    btnLast.Enabled := False;
    btnNext.Enabled := False;
  end;
end;

{离开}
procedure TFMSingle.btnExitClick(Sender: TObject);
begin
  inherited;
  if cdsMain.State in [dsInsert,dsEdit] then
    if MessageBox(GetActiveWindow(),PChar('您正在编辑数据,是否退出 '+Caption+ '?'),'提示',MB_YESNO+MB_DEFBUTTON2)=IDNO then abort ;
  cdsMain.Active :=False ; 
  close ;
end;

{查询}
procedure TFMSingle.btnQueryClick(Sender: TObject);
begin
  if Application.FindComponent('FmSearch')=nil then
     FmSearch:=TFmSearch.create(self);
  FmSearch.Caption :=Caption+'查询' ;
  FmSearch.UTableName :=FTableName;
  FmSearch.USQL :=FSubSQL ;

  if FmSearch.ShowModal=mrOK then
   begin
     cdsMain.Active :=false ;
     cdsMain.CommandText :=PSQL + FmSearch.USQL ;
     cdsMain.Active :=True ;
   end;
end;

procedure TFMSingle.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  inherited;
  cdsMain.close ;
end;

procedure TFMSingle.dsMainStateChange(Sender: TObject);
begin
  inherited;
  SetButton;
end;

procedure TFMSingle.cdsMainBeforeScroll(DataSet: TDataSet);
begin
  inherited;
  if cdsMain.State in [dsInsert,dsEdit] then exit ; 
end;

procedure TFMSingle.cdsMainAfterScroll(DataSet: TDataSet);
begin
  inherited;
  SetButton;
end;

procedure TFMSingle.cdsMainPostError(DataSet: TDataSet; E: EDatabaseError;
  var Action: TDataAction);
begin
  inherited;
  cdsMain.Edit ;
end;

end.

⌨️ 快捷键说明

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