📄 fbriefcaseclnt.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 + -