datafrm.pas
上传用户:szruida
上传日期:2007-06-01
资源大小:6518k
文件大小:5k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. unit datafrm;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  5.   StdCtrls, ComCtrls, Buttons, ExtCtrls, ADOBackUP, FileCtrl, Registry;
  6. type
  7.   Tfrm_Data = class(TForm)
  8.     Bevel1: TBevel;
  9.     lbl_Caption: TLabel;
  10.     edt_Path: TEdit;
  11.     SpeedButton1: TSpeedButton;
  12.     ProgressBar: TProgressBar;
  13.     btnOK: TButton;
  14.     btnCancel: TButton;
  15.     ADOBackUP: TADOBackUP;
  16.     OpenDialog: TOpenDialog;
  17.     Panel_Hide: TPanel;
  18.     Label2: TLabel;
  19.     Edt_FileName: TEdit;
  20.     procedure btnCancelClick(Sender: TObject);
  21.     procedure SpeedButton1Click(Sender: TObject);
  22.     procedure btnOKClick(Sender: TObject);
  23.     procedure ADOBackUPProcession(Sender: TObject; Ratio: Integer);
  24.     procedure FormShow(Sender: TObject);
  25.   private
  26.     { Private declarations }
  27.     FOK: Boolean;
  28.   public
  29.     { Public declarations }
  30.   end;
  31. function Show_Backup: Boolean;
  32. function Show_Restore: Boolean;
  33. implementation
  34. uses DM;
  35. {$R *.DFM}
  36. function Show_Backup: Boolean;
  37. begin
  38.   with Tfrm_data.Create(Application) do
  39.   begin
  40.     Caption := '数据备份';
  41.     lbl_Caption.Caption := '备份路径:';
  42.     Edt_FileName.Text := FormatdateTime('yyyy-mm-dd', now) + '.dat';
  43.     FOK := False;
  44.     try
  45.       Showmodal;
  46.     finally
  47.       Result := FOK;
  48.       free;
  49.     end;
  50.   end;
  51. end;
  52. function Show_Restore: Boolean;
  53. var
  54.   mHeight: Integer;
  55. begin
  56.   with Tfrm_data.Create(Application) do
  57.   begin
  58.     Caption := '数据恢复';
  59.     mHeight := Panel_Hide.Height;
  60.     panel_Hide.Visible := False;
  61.     Bevel1.Height := Bevel1.Height - mHeight;
  62.     ProgressBar.Top := ProgressBar.Top - mHeight;
  63.     btnOK.Top := btnOK.Top - mHeight;
  64.     btnCancel.Top := btnCancel.Top - mHeight;
  65.     Height := Height - mHeight;
  66.     lbl_Caption.Caption := '备份文件:';
  67.     FOK := False;
  68.     try
  69.       Showmodal;
  70.     finally
  71.       Result := FOK;
  72.       free;
  73.     end;
  74.   end;
  75. end;
  76. procedure Tfrm_Data.btnCancelClick(Sender: TObject);
  77. begin
  78.   Close;
  79. end;
  80. procedure Tfrm_Data.SpeedButton1Click(Sender: TObject);
  81. var
  82.   mPath, mFile: string;
  83. begin
  84.   if caption = '数据备份' then
  85.   begin
  86.     if Selectdirectory('请选择备份路径', 'C:', mPath) then
  87.       edt_Path.Text := mPath;
  88.   end
  89.   else if caption = '数据恢复' then
  90.   begin
  91.     mFile := ADOBackup.BrowseBackFile;
  92.     if mFile <> '' then
  93.       edt_Path.Text := mFile;
  94.   end;
  95. end;
  96. procedure Tfrm_Data.btnOKClick(Sender: TObject);
  97.   function mIsWrong: Boolean;
  98.   begin
  99.     edt_path.Text := trim(edt_Path.text);
  100.     Result := True;
  101.     if edt_Path.Text = '' then
  102.     begin
  103.       application.messagebox('请选择备份路径!', '系统提示', MB_ICONINFORMATION);
  104.       exit;
  105.     end;
  106.     try
  107.       ForceDirectories(edt_path.Text);
  108.     except
  109.       application.messagebox('创建路径不合法,请检查!', '系统提示', MB_ICONINFORMATION);
  110.       exit;
  111.     end;
  112.     Result := False;
  113.   end;
  114. var
  115.   Reg: TRegistry;
  116.   mPath: string;
  117.   mTables, mSql: TStrings;
  118.   i: integer;
  119. begin
  120.   FOK := True;
  121.   if caption = '数据备份' then
  122.   begin
  123.     mSql := TStringList.Create;
  124.     mTables := TStringlist.Create;
  125.     try
  126.       DMMain.ADOConnection1.GetTableNames(mTables);
  127.       for i := mtables.Count - 1 downto 0 do
  128.       begin
  129.         msql.Add('Select * from ' + mtables[i]);
  130.       end;
  131.       ADOBackUP.SQLStrings.Assign(mSql);
  132.     finally
  133.       msql.Free;
  134.       mtables.Free;
  135.     end;
  136.     mPath := edt_Path.Text;
  137.     if mPath[Length(mPath)] <> '' then
  138.       mPath := mPath + '';
  139.     Edt_fileName.Text := Trim(Edt_FileName.text);
  140.     if Edt_fileName.Text = '' then
  141.       ADOBackup.BackUpFileName := FormatdateTime('yyyy-mm-dd', now) + '.dat'
  142.     else
  143.       ADOBackup.BackUpFileName := Edt_FileName.Text;
  144.     ADOBackup.Info.Add('* 所有数据');
  145.     if ADOBackUP.Backup(mPath) then
  146.     begin
  147.       Reg := TRegistry.Create;
  148.       try
  149.         Reg.RootKey := HKey_Local_Machine;
  150.         if Reg.OpenKey('SoftwareWolfSofttest1.0', True) then
  151.           Reg.WriteString('BackupPath', mPath + ADOBackup.BackUpFileName);
  152.       finally
  153.         Reg.Free;
  154.       end;
  155.       application.messagebox('备份成功!', '系统提示', MB_ICONINFORMATION);
  156.     end
  157.     else
  158.     begin
  159.       FOK := False;
  160.       application.messagebox('备份失败!', '系统提示', MB_ICONINFORMATION);
  161.     end;
  162.   end
  163.   else if Caption = '数据恢复' then
  164.   begin
  165.     try
  166.       if ADOBackUP.Restore(edt_Path.text) then
  167.         application.messagebox('恢复成功!', '系统提示', MB_ICONINFORMATION)
  168.       else
  169.       begin
  170.         FOK := False;
  171.         application.messagebox('恢复失败!', '系统提示', MB_ICONINFORMATION);
  172.       end;
  173.     except
  174.       application.messagebox('恢复失败!', '系统提示', MB_ICONINFORMATION);
  175.     end;
  176.   end;
  177.   Self.Close;
  178. end;
  179. procedure Tfrm_Data.ADOBackUPProcession(Sender: TObject; Ratio: Integer);
  180. begin
  181.   ProgressBar.Position := Ratio;
  182. end;
  183. procedure Tfrm_Data.FormShow(Sender: TObject);
  184. var
  185.   Reg: TRegistry;
  186.   mFile: string;
  187. begin
  188.   Reg := TRegistry.Create;
  189.   try
  190.     Reg.RootKey := HKey_Local_Machine;
  191.     if Reg.OpenKey('SoftwareWolfSofttest1.0', True) then
  192.     begin
  193.       mFile := Reg.ReadString('BackupPath');
  194.       if mFile <> '' then
  195.       begin
  196.         try
  197.           if Caption = '数据恢复' then
  198.             edt_path.text := mFile
  199.           else if Caption = '数据备份' then
  200.             edt_Path.Text := extractfilePath(mFile);
  201.         except
  202.         end;
  203.       end;
  204.     end;
  205.   finally
  206.     Reg.Free;
  207.   end;
  208. end;
  209. end.