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

📄 restore.pas

📁 工廠採購管理系統
💻 PAS
字号:
unit restore;
interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, ToolWin,ExtCtrls,buttons, ADODB, ImgList,
  Mask, Grids, IniFiles,DBGrids,myclass, DB;

type
  TRestoreForm = class(TForm)
    GroupBox1: TGroupBox;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    RadioButton3: TRadioButton;
    ComboBox1: TComboBox;
    MaskEdit1: TMaskEdit;
    GroupBox2: TGroupBox;
    DBGrid1: TDBGrid;
    Panel1: TPanel;
    Label1: TLabel;
    Edit1: TEdit;
    StaticText1: TStaticText;
    OpenDialog1: TOpenDialog;
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    ProgressBar1: TProgressBar;
   procedure CreateParams(var Params: TCreateParams); override;
   procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure StaticText1Click(Sender: TObject);
    procedure StaticText1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure StaticText1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure RadioButton2Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure ComboBox1KeyPress(Sender: TObject; var Key: Char);
    procedure RadioButton3Click(Sender: TObject);
    procedure MaskEdit1KeyPress(Sender: TObject; var Key: Char);
    procedure DBGrid1CellClick(Column: TColumn);
    procedure SpeedButton2Click(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure RadioButton1Click(Sender: TObject);
 private
   procedure WMPAINT1(var msg:TMESSAGE);message WM_PAINT;
   procedure WMNCPAINT1(var msg:TWMNCPAINT);message WM_NCPAINT;
   procedure Active(var msg:Tmessage);message WM_ACTIVATE;
   procedure WMNCLBUTTONDBLCLK1(var msg:Tmessage);message WM_NCLBUTTONDBLCLK;
       { Private declarations }
  public
    titleBmp:Tbitmap;
    path:string;
    Position:integer;
    setini:TINIFILe;
    { Public declarations }
  end;


implementation

uses UDM1,uconst,ufunction;
{$R *.dfm}
function MyShowmessage(text:Pchar):boolean; external 'resource.dll';

procedure TRestoreForm.WMNCLBUTTONDBLCLK1(var msg:Tmessage);
begin
  //
end;
procedure TRestoreForm.Active(var msg:Tmessage);
begin
self.WMPAINT1(msg);
end;

procedure TRestoreForm.CreateParams(var Params: TCreateParams);
begin
 inherited;
  params.Style:=params.Style-WS_SYSMENU;
end;

procedure TRestoreForm.WMPAINT1(var msg:TMESSAGE);
begin
  sendmessage(self.Handle,WM_NCPAINT,0,0);
  inherited;
end;

procedure TRestoreForm.WMNCPAINT1(var msg:TWMNCPAINT);

begin

end;

procedure TRestoreForm.FormCreate(Sender: TObject);
begin
  setini:=Tinifile.Create(strpath+'\system.ini');
  edit1.Text:=setini.ReadString('BackupPath','path',strpath+'\backup.dat');
end;

procedure TRestoreForm.FormDestroy(Sender: TObject);
begin
 setini.Free;
end;

procedure TRestoreForm.StaticText1Click(Sender: TObject);
begin
  if opendialog1.execute then
  begin
    edit1.Text:=opendialog1.FileName;
    formshow(self);
  end;
end;

procedure TRestoreForm.StaticText1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  statictext1.BevelKind:=BKsoft;
end;

procedure TRestoreForm.StaticText1MouseUp(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  statictext1.BevelKind:=bkflat;
end;

procedure TRestoreForm.RadioButton2Click(Sender: TObject);
begin
  with dm1.PublicQuery do
  begin
    close;
    sql.Clear;
    try
      sql.Add('RESTORE HEADERONLY from disk='''+edit1.Text+'''');
      open;
    except
      myshowmessage('备份数据打开时发生错误!!');
      exit;
    end;
    try
      dm1.PublicQuery.Filter:='[backupfinishdate]>'+''''+maskedit1.Text+''''+'and [backupfinishdate]<'+''''+datetimetostr(strtodatetime(maskedit1.Text)+1)+'''';
      dm1.PublicQuery.Filtered:=true;
    except
      showmessage('请给出正确的时间!');
      dm1.PublicQuery.filtered:=false;
      exit;
    end;
    if recordcount<1 then
    begin
      showmessage('对不起! 没有你所需要的备份资料');
      speedbutton1.Enabled:=false;
      exit;
    end
    else
      if recordcount>1 then
      begin
        showmessage('在您输入的日期中有多个备份纪录,请在下面的表格中选择一个适当的纪录!');
        speedbutton1.Enabled:=true;
        self.Height:=340;
      end
      else
        begin
          position:=fieldbyname('position').AsInteger;
          speedbutton1.Enabled:=true;
        end;
  end;
end;

procedure TRestoreForm.FormShow(Sender: TObject);
var
  i:integer;
begin
  combobox1.clear;
  self.Height:=220;
  with dm1.PublicQuery do
  begin
    close;
    sql.Clear;
    try
      sql.Add('RESTORE HEADERONLY from disk='''+edit1.Text+'''');
      open;
    except
      myshowmessage('打开数据备份时发生错误!');
      exit;
    end;
    while not eof do
    begin
      if not fieldbyname('backupname').IsNull then
      begin
        for i:=0 to combobox1.Items.Count do
        begin
          if combobox1.Items.Strings[i] <> fieldbyname('backupname').AsString then
            Continue
          else
            break;
        end;
      if (i = Combobox1.Items.Count+1) or (i=1) then
        combobox1.items.add(fieldbyname('backupname').AsString);
    end;
      next;
    end;
    last;
    position:=fieldbyname('position').AsInteger;
  end;
  combobox1.ItemIndex:=0;
end;

procedure TRestoreForm.ComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
  key:=#0;
end;

procedure TRestoreForm.RadioButton3Click(Sender: TObject);
begin
  if (trim(combobox1.Text) <> '') then
  begin
    with dm1.PublicQuery do
    begin
      close;
      sql.Clear;
      sql.Add('RESTORE HEADERONLY from disk='''+edit1.Text+'''');
      open;
      try
      dm1.PublicQuery.Filter:='[backupname]='+''''+combobox1.Text+'''';
      dm1.PublicQuery.Filtered:=true;
      except
      showmessage('数据出错!!');
      dm1.PublicQuery.Filtered:=false;
      exit;
      end;
      if recordcount<1 then
      begin
        myshowmessage('对不起! 没有您所需要的备份资料');
        exit;
      end
      else if recordcount>1 then
      begin
        showmessage('在您输入的条件中有多个备份记录,请在下面的表格中选择一个适当的记录!');
        self.Height:=340;
      end
      else
        position:=fieldbyname('position').AsInteger;
        speedbutton1.Enabled:=true;
      end;
  end;
end;

procedure TRestoreForm.MaskEdit1KeyPress(Sender: TObject; var Key: Char);
begin
  if (key=#13) and radiobutton2.Checked then
  begin
  try
    strtodate(maskedit1.Text);
  except
    showmessage('请输入正确的时间!!');
    exit;
  end;
    RadioButton2Click(radiobutton2);
  end;
end;

procedure TRestoreForm.DBGrid1CellClick(Column: TColumn);
begin
  if dm1.PublicQuery.Active then
  begin
    with dm1.PublicQuery do
    begin
      position:=fieldbyname('Position').AsInteger;
      speedbutton1.Enabled:=True;
    end;
  end;
end;

procedure TRestoreForm.SpeedButton2Click(Sender: TObject);
begin
  dm1.PublicQuery.Close;
  close;
end;

procedure TRestoreForm.SpeedButton1Click(Sender: TObject);
var
  restore:Trestorethread;
begin
  restore:=Trestorethread.Create(true);
  restore.sender:=progressbar1;
  restore.Position:=inttostr(position);
  restore.folder:=edit1.Text;
  restore.command:=dm1.ADOCommand1;
  restore.parent:=self;
  progressbar1.Visible:=true;
  restore.Resume;
  restore.StaticSynchronize(restore,restore.restore);
end;

procedure TRestoreForm.RadioButton1Click(Sender: TObject);
begin
speedbutton1.Enabled:=True;
end;

end.

⌨️ 快捷键说明

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