tvplanit: Add property Persistent to BufDSDatastore

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@4924 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2016-07-06 13:41:17 +00:00
parent 4472db6f34
commit 287ff93ba0

View File

@ -19,7 +19,9 @@ type
FTasksTable: TBufDataset; FTasksTable: TBufDataset;
FDirectory: String; FDirectory: String;
FUseAutoInc: Boolean; FUseAutoInc: Boolean;
FPersistent: Boolean;
procedure SetDirectory(AValue: String); procedure SetDirectory(AValue: String);
procedure SetPersistent(AValue: Boolean);
procedure SetUseAutoInc(AValue: Boolean); procedure SetUseAutoInc(AValue: Boolean);
protected protected
@ -51,9 +53,10 @@ type
property TasksTable; property TasksTable;
published published
property Directory: String read FDirectory write SetDirectory;
property AutoConnect; property AutoConnect;
property AutoCreate; property AutoCreate;
property Directory: String read FDirectory write SetDirectory;
property Persistent: Boolean read FPersistent write SetPersistent default true;
property UseAutoIncFields: Boolean read FUseAutoInc write SetUseAutoInc default true; property UseAutoIncFields: Boolean read FUseAutoInc write SetUseAutoInc default true;
end; end;
@ -74,6 +77,7 @@ begin
FEventsTable := TBufDataset.Create(nil); FEventsTable := TBufDataset.Create(nil);
FContactsTable := TBufDataset.Create(nil); FContactsTable := TBufDataset.Create(nil);
FTasksTable := TBufDataset.Create(nil); FTasksTable := TBufDataset.Create(nil);
FPersistent := true;
FUseAutoInc := true; FUseAutoInc := true;
end; end;
@ -123,8 +127,9 @@ begin
raise Exception.CreateFmt('TableName "%s" cannot be processed.', [ATableName]); raise Exception.CreateFmt('TableName "%s" cannot be processed.', [ATableName]);
table.Close; table.Close;
table.FileName := dir + ATableName + TABLE_EXT; if FPersistent then
if not FileExists(table.FileName) then table.FileName := dir + ATableName + TABLE_EXT;
if ((not FPersistent) or (not FileExists(table.FileName))) and (table.FieldDefs.Count = 0) then
begin begin
CreateFieldDefs(ATableName, table.FieldDefs); CreateFieldDefs(ATableName, table.FieldDefs);
if FUseAutoInc then if FUseAutoInc then
@ -217,6 +222,24 @@ begin
FDirectory := AValue; FDirectory := AValue;
end; end;
procedure TVpBufDSDatastore.SetPersistent(AValue: Boolean);
var
wasConn: Boolean;
begin
if AValue <> FPersistent then begin
wasConn := Connected;
Connected := false;
FPersistent := AValue;
if not FPersistent then begin
FResourceTable.FileName := '';
FEventsTable.FileName := '';
FContactsTable.FileName := '';
FTasksTable.FileName := '';
end;
Connected := wasConn;
end;
end;
procedure TVpBufDSDatastore.SetUseAutoInc(AValue: Boolean); procedure TVpBufDSDatastore.SetUseAutoInc(AValue: Boolean);
var var
dir: String; dir: String;