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

📄 rightfrm.~pas

📁 基于Interbase的图书管理系统
💻 ~PAS
字号:
unit rightfrm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ChildFrm, StdCtrls, Buttons, ExtCtrls, ExtDlgs,inifiles, Menus;

type
  TRightForm = class(TChildForm)
    GroupBox1: TGroupBox;
    Splitter1: TSplitter;
    GroupBox2: TGroupBox;
    pnlscreen: TPanel;
    imgScreen: TImage;
    Label1: TLabel;
    Panel1: TPanel;
    BBtnopen: TBitBtn;
    BBtnColor: TBitBtn;
    BBtnUse: TBitBtn;
    BBtnClose: TBitBtn;
    LBpicture: TListBox;
    GroupBox3: TGroupBox;
    GroupBox4: TGroupBox;
    Label2: TLabel;
    edAdduser: TEdit;
    BBtnadduser: TBitBtn;
    Label3: TLabel;
    CBeguser: TComboBox;
    Label4: TLabel;
    Edpasswd: TEdit;
    Label5: TLabel;
    edokpasswd: TEdit;
    BBtnAddCancel: TBitBtn;
    bbtnDel: TBitBtn;
    bbtnEdcancel: TBitBtn;
    GroupBox5: TGroupBox;
    Label6: TLabel;
    CBrguser: TComboBox;
    RGrg: TRadioGroup;
    BBtnRgok: TBitBtn;
    bbtnRgHelp: TBitBtn;
    CDcolor: TColorDialog;
    OPDopen: TOpenPictureDialog;
    bbtnEdit: TBitBtn;
    Label7: TLabel;
    procedure FormDestroy(Sender: TObject);
    procedure BBtnCloseClick(Sender: TObject);
    procedure LBpictureClick(Sender: TObject);
    procedure BBtnColorClick(Sender: TObject);
    procedure BBtnopenClick(Sender: TObject);
    procedure BBtnUseClick(Sender: TObject);
    procedure BBtnAddCancelClick(Sender: TObject);
    procedure bbtnEdcancelClick(Sender: TObject);
    procedure BBtnadduserClick(Sender: TObject);
    procedure EdpasswdKeyPress(Sender: TObject; var Key: Char);
    procedure edokpasswdKeyPress(Sender: TObject; var Key: Char);
    procedure edAdduserKeyPress(Sender: TObject; var Key: Char);
    procedure bbtnEditClick(Sender: TObject);
    procedure bbtnDelClick(Sender: TObject);
    procedure BBtnRgokClick(Sender: TObject);
    procedure CBeguserChange(Sender: TObject);
    procedure CBrguserChange(Sender: TObject);
    procedure edAdduserChange(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    procedure LBloadorsaveini(var Ainibmp:string;Aloadname:string);
    { Private declarations }
  protected
     procedure SXMESSAGE(var msg:TMessage);message SX_MYMESSAGE;
     procedure SYMESSAGE(var msg:TMessage);message SY_MYMESSAGE;
  public
     function GetformButton:Tpanel;override;
    { Public declarations }
  end;

var
  RightForm: TRightForm;

  //inifile method
  function openInifile(image:Timage;panel:Tpanel;var inifile:tinifile):boolean;
  procedure writeInifile(Afile:string;Acolor:variant;var inifile:tinifile);

implementation

uses dmfrm;
var
 aFormHandle:Thandle;
 pinifile:Tinifile;
 bmpinifile:string;
{$R *.dfm}
procedure TRightForm.SXMESSAGE(var msg: TMessage);
begin
 imgScreen.Visible:=true;
 imgScreen.Picture.Assign(TPersistent(msg.LParam));
 aFormHandle:=msg.WParam;
end;

procedure TRightForm.SYMESSAGE(var msg: TMessage);
begin
 imgScreen.Visible:=false;
 pnlScreen.Color:=TColor(msg.LParam);
 aFormHandle:=msg.WParam;
end;

procedure TRightForm.FormDestroy(Sender: TObject);
begin
  inherited;
  Rightform:=nil;
end;

function TRightForm.GetformButton: Tpanel;
begin
Result:=nil;
end;

procedure TRightForm.BBtnCloseClick(Sender: TObject);
begin
  inherited;
close;
end;

procedure TRightForm.LBloadorsaveini(var Ainibmp: string;
  Aloadname: string);
begin
  Ainibmp:=Aloadname;
  imgScreen.Picture.LoadFromFile(Aloadname);
end;

procedure TRightForm.LBpictureClick(Sender: TObject);
var
Aitem,Aname:string;
begin
  inherited;
imgScreen.Visible:=true;
Aitem:=LBpicture.Items.Strings[lbpicture.ItemIndex];
Aname:=extractfilepath(application.ExeName)+'backbmp\picture1.bmp';
if fileexists(Aname)and(Aitem='人古画绘') then LBloadorsaveini(bmpinifile,Aname);
Aname:=extractfilepath(application.ExeName)+'backbmp\picture2.bmp';
if fileexists(Aname)and(Aitem='蓝天白云') then LBloadorsaveini(bmpinifile,Aname);
Aname:=extractfilepath(application.ExeName)+'backbmp\picture3.bmp';
if fileexists(Aname)and(Aitem='暗灰壁画') then LBloadorsaveini(bmpinifile,Aname);
Aname:=extractfilepath(application.ExeName)+'backbmp\picture4.bmp';
if fileexists(Aname)and(Aitem='雪花纷飞') then LBloadorsaveini(bmpinifile,Aname);
Aname:=extractfilepath(application.ExeName)+'backbmp\picture5.bmp';
if fileexists(Aname)and(Aitem='壁画之一') then LBloadorsaveini(bmpinifile,Aname);
Aname:=extractfilepath(application.ExeName)+'backbmp\picture6.bmp';
if fileexists(Aname)and(Aitem='壁画之二') then LBloadorsaveini(bmpinifile,Aname);
end;

procedure TRightForm.BBtnColorClick(Sender: TObject);
begin
  inherited;
  CDcolor.Color:=pnlscreen.Color;
  if CDcolor.Execute then
   begin
    imgScreen.Visible:=false;
    pnlscreen.Color:=CDcolor.Color;
   end;
end;

procedure TRightForm.BBtnopenClick(Sender: TObject);
begin
  inherited;
 if OPDopen.Execute then
  begin
   imgScreen.Visible:=true;
   imgScreen.Picture.LoadFromFile(OPDopen.FileName);
   bmpinifile:=OPDopen.FileName;
  end;
end;

procedure TRightForm.BBtnUseClick(Sender: TObject);
begin
  inherited;
if imgScreen.Visible then
  begin
   postmessage(aFormHandle,SX_MYMESSAGE,1,Integer(imgScreen.Picture));
   writeinifile(bmpinifile,pnlScreen.Color,pinifile);
     end
 else begin
   postmessage(aFormHandle,SX_MYMESSAGE,2,Integer(pnlScreen.Color));
   writeinifile(Emptystr,pnlScreen.Color,pinifile);
      end;
end;

procedure TRightForm.BBtnAddCancelClick(Sender: TObject);
begin
  inherited;
edAdduser.Text:='';
edAdduser.SetFocus;
end;

procedure TRightForm.bbtnEdcancelClick(Sender: TObject);
begin
  inherited;
Edpasswd.Text:='';
edokpasswd.Text:='';
Edpasswd.SetFocus;
end;

procedure TRightForm.BBtnadduserClick(Sender: TObject);
begin
  inherited;
if CBeguser.Items.IndexOf(edadduser.Text)<>-1 then
  begin
   showmessage('该用户已经存在!');
   edadduser.Clear;
   edadduser.SetFocus;
   exit;
  end;
if not DMbook.adduser(edadduser.Text) then
  showmessage('增加新用户失败!');
CBeguser.Items.Add(edAdduser.Text);
CBrguser.Items.Add(edAdduser.Text);
edAdduser.Text:='';
end;

procedure TRightForm.EdpasswdKeyPress(Sender: TObject; var Key: Char);
begin
  inherited;
 if key=#13 then edokpasswd.SetFocus
 else if key<>#8 then key:=chr(ord(key)-10);
end;

procedure TRightForm.edokpasswdKeyPress(Sender: TObject; var Key: Char);
begin
  inherited;
 if key=#13 then bbtnEdit.SetFocus
 else if key<>#8 then key:=chr(ord(key)-10);
end;

procedure TRightForm.edAdduserKeyPress(Sender: TObject; var Key: Char);
begin
  inherited;
if key=#13 then BBtnadduser.SetFocus;
end;

procedure TRightForm.bbtnEditClick(Sender: TObject);
begin
  inherited;
if (CurrentUsername<>'system')and(CBeguser.Text='system') then
  begin
   showmessage('你没有修改用户system的密码的权利!');
   Edpasswd.Clear;
   edokpasswd.Clear;
   CBeguser.SetFocus;
   exit;
  end;
if Edpasswd.Text=Emptystr then
 begin
 showmessage('密码输入框不能为空!');
 Edpasswd.SetFocus;
 exit;
 end;
if edokpasswd.Text<>Edpasswd.Text then
 begin
  showmessage('"检视新密码框"与"输入新密码框"'+#13#10#10+'    输入的密码不一样!');
  edokpasswd.SetFocus;
  exit;
 end;
if not dmBook.editpassword(CBeguser.Text,Edpasswd.Text) then
   showmessage('修改用户密码失败!');
CBeguser.Text:=Emptystr;
Edpasswd.Text:=Emptystr;
edokpasswd.Text:=Emptystr;
end;

procedure TRightForm.bbtnDelClick(Sender: TObject);
begin
  inherited;
if not dmBook.deleteuser(CBeguser.Text) then
   showmessage('删除用户失败!');
CBrguser.Items.Delete(CBrguser.Items.IndexOf(CBeguser.Text));
CBeguser.Items.Delete(CBeguser.Items.IndexOf(CBeguser.Text));
Edpasswd.Text:=Emptystr;
edokpasswd.Text:=Emptystr;
CBeguser.Text:=Emptystr;
end;

procedure TRightForm.BBtnRgokClick(Sender: TObject);
begin
  inherited;
if (CurrentUsername<>'system')and(CBrguser.Text='system') then
  begin
   showmessage('你没有修改用户systemr的权限的权利!');
   CBrguser.SetFocus;
   exit;
  end;
if not dmBook.setUserRight(CBrguser.Text,RGrg.ItemIndex) then
   showmessage('修改用户权限失败!');
CBrguser.Text:=Emptystr;
end;

procedure TRightForm.CBeguserChange(Sender: TObject);
begin
  inherited;
if (CBeguser.Text<>EmptyStr)and(CBeguser.ItemIndex=CBeguser.Items.IndexOf('system')) then
   begin
    if CurrentUsername='system' then bbtnEdit.Enabled:=true
    else bbtnEdit.Enabled:=false;
     bbtnDel.Enabled:=false;
   end
 else begin
       bbtnEdit.Enabled:=true;
       if CBeguser.Text=EmptyStr then
          begin
           bbtnEdit.Enabled:=false;
           bbtnDel.Enabled:=false;
          end
       else bbtnDel.Enabled:=true;
      end;
end;

procedure TRightForm.CBrguserChange(Sender: TObject);
var
 t:integer;
begin
  inherited;
if CBrguser.Text<>EmptyStr then
 begin
 BBtnRgok.Enabled:=true;
if (CurrentUsername='system')and(CBrguser.ItemIndex=CBrguser.Items.IndexOf('system')) then
   BBtnRgok.Enabled:=false;
if CBrguser.ItemIndex=CBrguser.Items.IndexOf('system') then BBtnRgok.Enabled:=false;
  RGrg.Enabled:=true;
  t:=dmbook.getUserRightIndex(CBrguser.Text);
  case t of
   0:RGrg.ItemIndex:=0;
   1:RGrg.ItemIndex:=1;
   2:RGrg.ItemIndex:=2;
   3:RGrg.ItemIndex:=3;
  end;
 end
 else begin
        BBtnRgok.Enabled:=false;
        RGrg.Enabled:=false;
      end;
end;

procedure TRightForm.edAdduserChange(Sender: TObject);
begin
  inherited;
if edAdduser.Text=EmptyStr then BBtnadduser.Enabled:=false
else BBtnadduser.Enabled:=true;
end;

function openInifile(image:Timage;panel:Tpanel;var inifile:Tinifile):boolean;
var
 dpbmp:string;
 dpcolor:variant;
 LocalRemote:string;
 pdataType:string;
 RemotedbServer:string;
 tt:integer;
begin
 pinifile:=inifile;
 Result:=true;
 image.visible:=false;
 RemotedbServer:='127.0.0.1';
 with inifile  do
 begin   //读取INI文件内容到变量中,初始化程式设定
  tt:=readinteger('BOOK2001','BmpOrColor',0);
  childfrm.readercount:=readinteger('BOOK2001','ReaderCount',0);
  dpbmp:=readstring('BOOK2001','DostopBmp',Emptystr);
  dpcolor:=readstring('BOOK2001','DostopColor',Emptystr);
  LocalRemote:=readstring('BOOK2001','LocalRemote','Local');
  pdataType:=readstring('BOOK2001','DataType','INTRBASE');
  if pdataType=Emptystr then pdataType:='INTRBASE';
  if LocalRemote<>'Romate' then LocalRemote:='Local'
   else RemotedbServer:=readstring('BOOK2001','RemoteServer','127.0.0.1');
  if LocalRemote='Local' then
   begin
   if not fileexists(extractfilepath(application.ExeName)+'data\books.gdb') then
    begin
 messagedlg('数据库'+#13+extractfilepath(application.ExeName)+'data\books.gdb'
 +#13#10+'不存在。',mtError,[mbOK],0);
     halt(0);
     //application.Terminate;
    end;
   end
  else begin
        if RemotedbServer<>'127.0.0.1' then
          begin
          //检测是否能连上远程数据库服务器
          end;
       end;
   childfrm.dataAliasName:=readstring('BOOK2001','DataAliasName','books');
  if childfrm.dataAliasName=Emptystr then childfrm.dataAliasName:='books';
  dmbook.createAliasName(childfrm.dataAliasName,LocalRemote,pdataType);
  childfrm.borrowbooknum:=readinteger('BOOK2001','BorrowNumber',1); //初始化借书数量变量
  childfrm.borrowbookday:=readinteger('BOOK2001','BorrowDay',7);    //初始化借书借期变量
  childfrm.passdaybookcomm:=readinteger('BOOK2001','BorrowPassCommNumber',1);//初始化一般过期扣点数量变量
  childfrm.passdayself:=readinteger('BOOK2001','BorrowPassSelfNumber',1);//初始化特殊过期扣点数量变量
  childfrm.backuptime:=readtime('BOOK2001','BackupTime',strtotime('23:00:00')); //初始化备份时间变量
  childfrm.checkusesdefaultday:=readbool('BOOK2001','UseDefaulBorrowDay',true);
  if tt=0 then
    begin
      if fileexists(dpbmp) then
          begin
          image.visible:=true;
          image.Picture.loadfromfile(dpbmp);
          bmpinifile:=dpbmp;
          end
       else Result:=false;
    end
 else begin
        try
    panel.color:=dpcolor;
       except
      Result:=false;
    end;
   end;
 end;
end;

procedure writeInifile(Afile:string;Acolor:variant;var inifile:tinifile);
begin
with inifile do
 begin
  if Afile<>EmptyStr then
   begin
  writeinteger('BOOK2001','BmpOrColor',0);
  writestring('BOOK2001','DostopBmp',Afile)
   end
  else begin
   writeinteger('BOOK2001','BmpOrColor',1);
   writestring('BOOK2001','DostopColor',vartostr(Acolor));
    end;
 end;
end;

procedure TRightForm.FormCreate(Sender: TObject);
begin
  inherited;
 dmbook.QryLogin.First;
 while not dmbook.qrylogin.Eof do
         begin
           CBeguser.Items.Add(dmbook.qrylogin['username']);
           CBrguser.Items.Add(dmbook.qrylogin['username']);
           dmbook.qrylogin.Next;
         end;
end;

end.

⌨️ 快捷键说明

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