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

📄 fbriefcaseclnt.pas

📁 是一个delphi的流程制作软件
💻 PAS
字号:
unit fBriefCaseClnt;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, DBClient, Db, ExtCtrls, DBCtrls, Grids, DBGrids,ActiveX,AxCtrls, ComObj, Registry;


type
  TForm1 = class(TForm)
    DBGrid1: TDBGrid;
    DBNavigator1: TDBNavigator;
    DataSource1: TDataSource;
    ClientDataSet1: TClientDataSet;
    RemoteServer1: TRemoteServer;
    Panel1: TPanel;
    Label1: TLabel;
    Button2: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    procedure LoadTable;
    procedure SaveTable;
  end;

var
  Form1: TForm1;
  FileName : WideString;

implementation

{$R *.DFM}
procedure TForm1.LoadTable;
var Hr : HResult;
    Stream : IStream;
    OleStream : TOleStream;
    RootStorage, SubStorage : IStorage;
    STGM : longint;
begin
     STGM := STGM_READWRITE or STGM_DIRECT or STGM_SHARE_EXCLUSIVE;
     Hr := StgOpenStorage(PWideChar(FileName), nil, STGM, nil, 0, RootStorage);
     if not SUCCEEDED(Hr)
     then
         Exit;
     Hr := RootStorage.OpenStorage('Tables', nil, STGM, nil,0, SubStorage);
     if not SUCCEEDED(Hr)
     then
         Exit;
     Hr := SubStorage.OpenStream('BriefCaseTable', nil, STGM, 0, Stream);
     if not SUCCEEDED(Hr)
     then
         Exit;
     OleStream := TOleStream.Create(Stream);
     if(OleStream.Size > 0)
     then
         ClientDataSet1.LoadFromStream(OleStream);
     OleStream.free;
end;

procedure TForm1.SaveTable;
var Hr : HResult;
    Stream : IStream;
    OleStream : TOleStream;
    RootStorage, SubStorage : IStorage;
    STGM : longint;
begin
     STGM := STGM_CREATE or STGM_READWRITE or STGM_DIRECT or STGM_SHARE_EXCLUSIVE;
     Hr := StgCreateDocFile(PWideChar(FileName), STGM, 0, RootStorage);
     if not SUCCEEDED(Hr)
     then
         Exit;
     Hr := RootStorage.CreateStorage('Tables', STGM,0,0,SubStorage);
     if not SUCCEEDED(Hr)
     then
         Exit;
     Hr := SubStorage.CreateStream('BriefCaseTable', STGM,0,0,Stream);
     if not SUCCEEDED(Hr)
     then
         Exit;
     OleStream := TOleStream.Create(Stream);
     ClientDataSet1.SaveToStream(OleStream);
     OleStream.Free;
//     showmessage('Saved to file');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
     with TRegistry.create
     do
       begin
       Rootkey := HKEY_LOCAL_MACHINE;
       OpenKey('\SOFTWARE\LionWare\BriefCase', False);
       FileName := ReadString('dbPath')+'\BriefCase.lw';
       end;
     try
     inherited;
     LoadTable;
     RemoteServer1.Connected := true;
     if  (ClientDataSet1.ChangeCount > 0)
     then
         ClientDataset1.ApplyUpdates(3);
     if ClientDataSet1.active
     then
         with ClientDataSet1
         do
           Data := Provider.Data;
     ClientDataSet1.Open;
     except
       on E : EOleSysError
       do
         ShowMessage('You''re not connected to the server.');
     end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
     if RemoteServer1.connected
     then
         ClientDataSet1.ApplyUpdates(3)
     else
         SaveTable;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
     SaveTable;
end;

end.

⌨️ 快捷键说明

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