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

📄 basedefine.pas

📁 产品信息系统!关于产品基础信息的系统!功能强大!
💻 PAS
字号:
unit BaseDefine;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, BaseInfoBase, wwDialog, wwidlg, DB, ADODB, ActnList, ComCtrls,
  ToolWin, Grids, DBGridEh;

type
    
  TfrmBaseDefine = class(TfrmBaseInfoBase)
    DBGridEh1: TDBGridEh;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure QBaseInfoNewRecord(DataSet: TDataSet);
    procedure dsBaseInfoStateChange(Sender: TObject);
    procedure ToolButton1Click(Sender: TObject);
    procedure dsBaseInfoDataChange(Sender: TObject; Field: TField);
    procedure acDeleteExecute(Sender: TObject);
    procedure acSaveExecute(Sender: TObject);
    procedure acCancelExecute(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure acModifyExecute(Sender: TObject);
    procedure QBaseInfoAfterInsert(DataSet: TDataSet);
    procedure acRefreshExecute(Sender: TObject);
    procedure QBaseInfoAfterDelete(DataSet: TDataSet);
  private
    { Private declarations }
  public
    { Public declarations }
    CanEdit,CanDelete,CanSave,CanCancel:Boolean;
  protected
    in_tablename:string;
    in_adoquery:TADOQuery;
    in_connection:TADOConnection;
    in_field:TStringList;
    in_sql:string;
    in_datagrid:TDBGridEh;
    function CheckSave: Boolean;
  end;

var
  frmBaseDefine: TfrmBaseDefine;
implementation

{$R *.dfm}
uses Global,DataModule;

procedure TfrmBaseDefine.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  inherited;
    //frmRsda:=nil;
    //ShowMessage(Self.ClassName+'pasRsda');
    FreeAndNil(in_field);
    Action:=caFree;
end;

procedure TfrmBaseDefine.FormCreate(Sender: TObject);
begin
  //inherited;
    {CanEdit:=False;
    CanDelete:=False;
    CanSave:=False;
    CanCancel:=False;}
   GetPermiss;
   if not QBaseInfo.Active then
      QBaseInfo.Open;

    if self.QBaseInfo.RecordCount=0 then
    begin
        CanEdit:=False;
        CanDelete:=False;
    end
    else
    begin
        CanEdit:=True;
        CanDelete:=True;
    end;

      dsBaseInfoStateChange(nil);    {调用状态变化过程}

   in_field:=TStringList.Create;
end;

procedure TfrmBaseDefine.QBaseInfoNewRecord(DataSet: TDataSet);
begin
  //inherited;
  CanSave:=True;
  CanCancel:=True;
    self.QBaseInfo.Post;
    self.QBaseInfo.Edit;
end;

procedure TfrmBaseDefine.dsBaseInfoStateChange(Sender: TObject);
begin
  //inherited;
  //ShowMessage('state');
  if (self.QBaseInfo.State in [dsEdit]) and (self.QBaseInfo.RecordCount<>0) then
  begin
    CanEdit:=False;
    CanDelete:=True;
  end
  else if (self.QBaseInfo.State in [dsBrowse]) and (self.QBaseInfo.RecordCount<>0) then
  begin
    CanEdit:=True;
    CanDelete:=True;
  end
  else if self.QBaseInfo.RecordCount=0 then
  begin
    CanEdit:=False;
    CanDelete:=False;
  end;
      self.tbtModify.Enabled:=CanEdit;
      self.tbtDelete.Enabled:=CanDelete;
      Self.tbtSave.Enabled:=CanSave;
      self.tbtCancel.Enabled:=CanCancel;

    if (self.QBaseInfo.RecNo=1) OR (self.QBaseInfo.RecordCount=0) then
        self.tbtFirst.Enabled:=False
    else
        self.tbtFirst.Enabled:=True;
    if (self.QBaseInfo.RecNo=self.QBaseInfo.RecordCount) OR (self.QBaseInfo.RecordCount=0) then
        self.tbtLast.Enabled:=False
    else
        self.tbtLast.Enabled:=True;
    self.tbtPrior.Enabled:=self.tbtFirst.Enabled;
    self.tbtNext.Enabled:=self.tbtLast.Enabled;

  //ShowMessage(IntToStr(self.QBaseInfo.RecordCount));
end;

procedure TfrmBaseDefine.ToolButton1Click(Sender: TObject);
begin
  inherited;
    //self.QBaseInfo.DeleteRecords(arAll);
    self.QBaseInfo.Filtered:=False;
    self.QBaseInfo.Filter:='bh=''''';
    Self.QBaseInfo.Filtered:=True;
end;

procedure TfrmBaseDefine.dsBaseInfoDataChange(Sender: TObject; Field: TField);
begin
  //inherited;
  //ShowMessage('datachange');
  self.dsBaseInfoStateChange(nil);

end;

procedure TfrmBaseDefine.acDeleteExecute(Sender: TObject);
begin
  //inherited;
  if self.QBaseInfo.RecordCount=0 then
  begin
    ShowMessage('记录为空');
    Exit;
  end
  else
  begin
      case MessageDlg('是否删除当前的记录?', mtWarning, [mbYes, mbNo], 0) of
        mrYes:
        begin
            CanSave:=True;
            CanCancel:=True;
            QBaseInfo.Delete;
        end;
        mrNo:
        begin
        end;
      end;
  end;
end;

procedure TfrmBaseDefine.acSaveExecute(Sender: TObject);
begin
  //inherited;
    case MessageDlg('是否保存记录?', mtWarning, [mbYes, mbNo], 0) of
        mrYes:
        begin
            try
                CanSave:=False;
                CanCancel:=False;
                QBaseInfo.UpdateBatch();
            except
                ShowMessage('保存出错!');
                CanSave:=True;
                CanCancel:=True;
                QBaseInfo.Edit;
                //self.DBGridEh1.SetFocus;
                self.tbtModify.Enabled:=False;
            end;

        end;
        mrNo:
        begin
        end;
    end;
end;

procedure TfrmBaseDefine.acCancelExecute(Sender: TObject);
begin
  //inherited;
    case MessageDlg('是否取消修改?', mtWarning, [mbYes, mbNo], 0) of
        mrYes:
        begin
            CanSave:=False;
            CanCancel:=False;
            QBaseInfo.CancelBatch();
        end;
        mrNo:
        begin
        end;
    end;
end;

function TfrmBaseDefine.CheckSave:Boolean;
begin
    //ShowMessage('close');
    if CanSave then
    begin
        try
            case MessageDlg('是否保存当前的修改?', mtWarning, [mbYes, mbNo, mbCancel], 0) of
             mrYes:
                begin
                   QBaseInfo.UpdateBatch();
                   Result := QBaseInfo.State = dsBrowse; //状态是否为Browse
                end;
             mrNo:
                begin
                   QBaseInfo.CancelBatch();
                   Result := QBaseInfo.State = dsBrowse; //状态是否为Browse
                end;
             mrCancel:
                Result := False;
          end;
        except
            begin
                ShowMessage('保存出错!');
                self.QBaseInfo.Edit;
                self.tbtModify.Enabled:=False;
                Result:=False;
            end;
        end;
    end
    else
        Result:=True;
end;

procedure TfrmBaseDefine.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  //inherited;
  //ShowMessage('1');
  CanClose:=CheckSave;
end;

procedure TfrmBaseDefine.acModifyExecute(Sender: TObject);
begin
    CanSave:=True;
    CanCancel:=True;
    //CanEdit:=False;

  inherited;
  //self.tbtModify.Enabled:=False;
    //CanEdit:=False;
    //self.dsBaseInfoStateChange(nil);
end;

procedure TfrmBaseDefine.QBaseInfoAfterInsert(DataSet: TDataSet);
begin
  inherited;
    self.tbtModify.Enabled:=False;
end;

procedure TfrmBaseDefine.acRefreshExecute(Sender: TObject);
var
    i:integer;
begin
  //inherited;
  //需传进in_sql字段,查询字符串
    CanSave:=False;
  CanCancel:=False;
  Self.QBaseInfo.Filtered:=False;
  self.QBaseInfo.Filter:='';

  for i:=0 to Self.DBGridEh1.Columns.Count-1 do
  begin
    self.DBGridEh1.Columns[i].Visible:=True;
  end;

  try
      self.QBaseInfo.DisableControls;
      self.QBaseInfo.Close;
      Self.QBaseInfo.SQL.Clear;
      self.QBaseInfo.SQL.Add(in_sql);
      self.QBaseInfo.Prepared:=True;
      self.QBaseInfo.Open;
      self.QBaseInfo.EnableControls;
  except
    ShowMessage('刷新出错!');
    self.DBGridEh1.DataSource:=nil;
    Exit;
  end;
  ShowMessage('刷新成功!');
  self.DBGridEh1.DataSource:=self.dsBaseInfo;
end;

procedure TfrmBaseDefine.QBaseInfoAfterDelete(DataSet: TDataSet);
begin
    if dmClient.adocnequip_manage.InTransaction then
        dmClient.adocnequip_manage.CommitTrans;
end;

end.

⌨️ 快捷键说明

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