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

📄 ugloabvar.pas

📁 图书馆使用的图书管理系统
💻 PAS
字号:
unit uGloabVar;

interface

uses
  classes, comctrls, registry,Sysutils,windows,Printers,Dialogs;

Const

  UserIDLength = 10;
  CodeLength = 10;
  GroupIDLength = 2;


var
  DBName : string='';
  BackName : string='';
  ViewOper : boolean = True;
  ViewBookMgr : boolean = True;
  ViewSettingMgr : boolean = True;
  ViewAbout : boolean = True;
  ViewBack : boolean = True;
  OutDay : integer= 60;
  FineDay : Extended = 0.1;
  PrintLinesCount : integer= 50;

procedure ReadFromReg;
procedure WriteReg;
procedure GetStr(var Str: TStringList;ListView : TListView;
                 Title : string;LinesCount : integer);
procedure PrintListView(ListView : TListView;Title:string);
procedure SaveListView(ListView : TListView;Title,PathAndName:string);

implementation


procedure ReadFromReg;
var
  Reg : TRegistry;
begin
  Reg := TRegistry.Create;
  Reg.RootKey := HKey_CURRENT_USER;
  if not Reg.KeyExists('SoftWare\图书管理系统') then
  begin
    Reg.OpenKey('SoftWare\图书管理系统',True);
    Reg.WriteBool('ViewOper',True);
    Reg.WriteBool('ViewBookMgr',True);
    Reg.WriteBool('ViewSetting',True);
    Reg.WriteBool('ViewAbout',True);
    Reg.WriteBool('ViewBack',True);
    Reg.WriteString('DataPath','"'+GetCurrentDir+'\Data'+'"');
    Reg.WriteInteger('OutDay',OutDay);
    Reg.WriteFloat('FineDay',FineDay);
    Reg.WriteInteger('PrintLinesCount',PrintLinesCount);
    DBName := GetCurrentDir+'\Data';
    Reg.WriteString('BackGroundName','""');
  end
  else begin
    Reg.OpenKey('SoftWare\图书管理系统',False);
    try
      ViewOper := Reg.ReadBool('ViewOper');
    except
      Reg.WriteBool('ViewOper',True);
    end;

    try
      ViewBookMgr := Reg.ReadBool('ViewBookMgr');
    except
      Reg.WriteBool('ViewBookMgr',True);
    end;

    try
      ViewSettingMgr := Reg.ReadBool('ViewSetting');
    except
      Reg.WriteBool('ViewSetting',True);
    end;

    try
      ViewAbout := Reg.ReadBool('ViewAbout');
    except
      Reg.WriteBool('ViewAbout',True);
    end;

    try
      ViewBack := Reg.ReadBool('ViewBack');
    except
      Reg.WriteBool('ViewBack',True);
    end;

    try
      DBName := Reg.ReadString('DataPath');
    except
      Reg.WriteString('DataPath',GetCurrentDir+'\Data');
      DBName := GetCurrentDir+'\Data';
    end;

    try
      BackName := Reg.ReadString('BackGroundName');
    except
      Reg.WriteString('BackGroundName','');
      BackName := '';
    end;

    try
      OutDay := Reg.ReadInteger('OutDay');
    except
      Reg.WriteInteger('OutDay',OutDay);
    end;

    try
      FineDay := Reg.ReadFloat('FineDay');
    except
      Reg.WriteFloat('FineDay',FineDay);
    end;

    try
      PrintLinesCount := Reg.ReadInteger('PrintLinesCount');
      if PrintLinesCount<5 then
        PrintLinesCount := 5;
    except
      Reg.WriteInteger('PrintLinesCount',PrintLinesCount);
    end;
  end;
  Reg.Free;
end;

procedure WriteReg;
var
  Reg : TRegistry;
begin
  Reg := TRegistry.Create;
  Reg.RootKey := HKey_CURRENT_USER;
  Reg.OpenKey('SoftWare\图书管理系统',True);
  Reg.WriteBool('ViewOper',ViewOper);
  Reg.WriteBool('ViewBookMgr',ViewBookMgr);
  Reg.WriteBool('ViewSetting',ViewSettingMgr);
  Reg.WriteBool('ViewAbout',ViewAbout);
  Reg.WriteBool('ViewBack',ViewBack);
  Reg.WriteString('DataPath',DBName);
  Reg.WriteString('BackGroundName',BackName);
  Reg.WriteInteger('OutDay',OutDay);
  Reg.WriteFloat('FineDay',FineDay);
  if PrintLinesCount<5 then
    PrintLinesCount := 5;
  Reg.WriteInteger('PrintLinesCount',PrintLinesCount);
  Reg.Free;
end;

procedure GetStr(var Str: TStringList;ListView : TListView;
                 Title : string;LinesCount : integer);
var
  i : integer;
  j : integer;
  Lines : integer;
  PageCount : integer;
begin
  PageCount := 1;
  Lines := 0;
  for i := 0 to ListView.Items.Count-1 do
  begin
    if Lines= 0 then
    begin
      Str.Add(Title+'    打印时间: '+DateToStr(Date));
      Inc(Lines);
      Str.Add('');
      Inc(Lines);
    end;
    Str.Add(ListView.Columns[0].Caption+' : '+ ListView.Items[i].Caption);
    Inc(Lines);
    if Lines>LinesCount then
    begin
      Lines := 0;
      Str.Add(#12);
    end;

    for j := 0 to ListView.Columns.Count-2 do
    begin
      if Lines= 0 then
        Str.Add(Title);
      Str.Add(ListView.Columns[j+1].Caption+' : '+ ListView.Items[i].SubItems.Strings[j]);
      Inc(Lines);
      if Lines>LinesCount-2 then
      begin
        Lines := 0;
        Str.Add('');
        Str.Add('         --第 '+IntToStr(PageCount)+' 页--');
        Str.Add(#12);
      end;
      if Lines= 0 then
      begin
        Str.Add(Title+'    打印时间: '+DateToStr(Date));
        Inc(Lines);
        Str.Add('');
        Inc(Lines);
      end;
    end;
    Str.Add('...............................');
    if Lines>LinesCount-2 then
    begin
      Lines := 0;
      Str.Add('');
      Str.Add('         第 '+IntToStr(PageCount)+' 页');
      Str.Add(#12);
    end;
  end;
end;

procedure PrintListView(ListView : TListView;Title:string);
var
  S : TStringList;
  f : TextFile;
  i : integer;
begin
  S := TStringList.Create;
  GetStr(S,ListView,Title,PrintLinesCount);
  AssignPrn(f);
  try
    Rewrite(f);
    for i := 0 to S.Count-1 do
      Writeln(f,S[i]);
    CloseFile(f);
  except
    MessageDlg('打印失败',mtError,[mbok],0);
    CloseFile(f);
  end;
  S.Free;
end;

procedure SaveListView(ListView : TListView;Title,PathAndName:string);
var
  S : TStringList;
begin
  S := TStringList.Create;
  GetStr(S,ListView,Title,PrintLinesCount);
  S.SaveToFile(PathAndName);
  S.Free;
end;

end.

⌨️ 快捷键说明

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