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

📄 basecompanyinfo.pas

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

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Base, DB, ADODB, StdCtrls, DBCtrls, Mask, ExtCtrls;

type
  TfrmBaseCompanyInfo = class(TfrmBase)
    dsCompanyInfo: TDataSource;
    Panel1: TPanel;
    Label3: TLabel;
    DBEdit3: TDBEdit;
    Label4: TLabel;
    DBEdit4: TDBEdit;
    Label6: TLabel;
    DBEdit6: TDBEdit;
    Label7: TLabel;
    DBEdit7: TDBEdit;
    Label5: TLabel;
    DBEdit5: TDBEdit;
    Label8: TLabel;
    DBEdit8: TDBEdit;
    Label9: TLabel;
    DBEdit9: TDBEdit;
    Label10: TLabel;
    DBEdit10: TDBEdit;
    Label11: TLabel;
    DBEdit11: TDBEdit;
    Label12: TLabel;
    DBEdit12: TDBEdit;
    Label1: TLabel;
    DBEdit1: TDBEdit;
    Label2: TLabel;
    DBEdit2: TDBEdit;
    DBCheckBox1: TDBCheckBox;
    DBCheckBox2: TDBCheckBox;
    DBCheckBox3: TDBCheckBox;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    btModify: TButton;
    btExit: TButton;
    btSave: TButton;
    btCancel: TButton;
    procedure FormCreate(Sender: TObject);
    procedure dsCompanyInfoStateChange(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure btModifyClick(Sender: TObject);
    procedure btSaveClick(Sender: TObject);
    procedure btCancelClick(Sender: TObject);
    procedure btExitClick(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  private
    { Private declarations }
  protected
    bCanModify: Boolean;
    function CheckSave: Boolean;        {检测当前数据是否保存函数}
    procedure GetPermiss; virtual;      {得到当前用户的权限}
  public
    { Public declarations }
  end;

var
  frmBaseCompanyInfo: TfrmBaseCompanyInfo;

implementation

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

{检测当前数据是否保存函数}
function TfrmBaseCompanyInfo.CheckSave: Boolean;
begin
  Result := True;
  if dmClient.QCompanyInfo.State in [dsInsert, dsEdit] then //判断当前状态
    case Messagedlg('是否保存当前的修改?', mtWarning, [mbYes, mbNo, mbCancel], 0) of
      mrYes:
        begin
          dmClient.QCompanyInfo.Post;
          Result := dmClient.QCompanyInfo.State = dsBrowse; //状态是否为Browse
        end;
      mrNo:
        begin
          dmClient.QCompanyInfo.Cancel;
          Result := dmClient.QCompanyInfo.State = dsBrowse; //状态是否为Browse
        end;
      mrCancel:
        Result := false;
    end
end;

{得到用户对当前窗体的操作权限}
procedure TfrmBaseCompanyInfo.GetPermiss;
begin
  {初始化变量}
  bCanModify := G_bAdmin;

  if G_bAdmin then                      //判断是否为超级用户
    bCanModify := G_bAdmin
  else                                  //否则查找当前用户是否有当前窗体的操作权限
    with dmClient.spUserRight do
      if Locate('fModuleID;fActionName', varArrayOf([iModuleID, sFunctionName]), []) then
        bCanModify := FieldbyName('fEdit').asBoolean;
end;

procedure TfrmBaseCompanyInfo.FormCreate(Sender: TObject);
begin
  inherited;
  GetPermiss;
  if not dmClient.QCompanyInfo.Active then dmClient.QCompanyInfo.Open;
  dsCompanyInfoStateChange(self);
end;

procedure TfrmBaseCompanyInfo.dsCompanyInfoStateChange(Sender: TObject);
var
  i                 : Integer;
begin
  inherited;
  btSave.Enabled := dmClient.QCompanyInfo.State in [dsInsert, dsEdit];
  btCancel.Enabled := btSave.Enabled;
  btModify.Enabled := not btSave.Enabled and bCanModify;
  {设置编辑控件的ReadOnly}
  with Panel1 do
    for i := 0 to ControlCount - 1 do
      if Controls[i] is TDBEdit then
        (Controls[i] as TDBEdit).ReadOnly := not btSave.Enabled
      else if Controls[i] is TDBMemo then
        (Controls[i] as TDBMemo).ReadOnly := not btSave.Enabled;
end;

procedure TfrmBaseCompanyInfo.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  inherited;
  frmBaseCompanyInfo := nil;
end;

procedure TfrmBaseCompanyInfo.btModifyClick(Sender: TObject);
begin
  inherited;
  dmClient.QCompanyInfo.Edit;
end;

procedure TfrmBaseCompanyInfo.btSaveClick(Sender: TObject);
begin
  inherited;
  dmClient.QCompanyInfo.Post;
end;

procedure TfrmBaseCompanyInfo.btCancelClick(Sender: TObject);
begin
  inherited;
  if Messagedlg('您确定要取消修改吗?', mtWarning, [mbOk, mbCancel], 0) = mrOk then
    dmClient.QCompanyInfo.Cancel;
end;

procedure TfrmBaseCompanyInfo.btExitClick(Sender: TObject);
begin
  inherited;
  Close;
end;

procedure TfrmBaseCompanyInfo.FormCloseQuery(Sender: TObject;
  var CanClose: Boolean);
begin
  inherited;
  CanClose := CheckSave;
end;

end.

⌨️ 快捷键说明

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