📄 aceds.pas
字号:
unit AceDS;
{ ----------------------------------------------------------------
Ace Reporter
Copyright 1995-1998 SCT Associates, Inc.
Written by Kevin Maher, Steve Tyrakowski
---------------------------------------------------------------- }
interface
{$I ace.inc}
uses {$ifdef AceBDE} db,
{$ifndef VCL130PLUS} dbtables, {$endif}
{$endif}
classes;
type
TAceDataSource = class(TObject)
private
protected
public
DataSource: TDataSource;
CloseDataSource: Boolean;
UnableToActivate: Boolean;
constructor Create(DS: TDataSource); virtual;
destructor Destroy; override;
procedure CloseSource;
function OpenSource: Boolean;
end;
TAceDataSourceManager = class(TObject)
private
protected
public
DSList: TList;
constructor Create; virtual;
destructor Destroy; override;
procedure CloseDataSources;
function ActivateDataSource(DS: TDataSource): Boolean;
end;
implementation
constructor TAceDataSource.Create(DS: TDataSource);
begin
DataSource := DS;
CloseDataSource := False;
UnableToActivate := False;
end;
destructor TAceDataSource.Destroy;
begin
CloseSource;
inherited Destroy;
end;
function TAceDataSource.OpenSource: Boolean;
begin
Result := False;
if DataSource <> nil then
begin
if DataSource.DataSet <> nil then
begin
if Not DataSource.DataSet.Active then
begin
try
DataSource.DataSet.Active := True;
CloseDataSource := DataSource.DataSet.Active;
UnableToActivate := Not CloseDataSource;
Result := CloseDataSource;
except
UnableToActivate := True;
end;
end else Result := True;
end;
end;
end;
procedure TAceDataSource.CloseSource;
begin
if CloseDataSource then
begin
if DataSource <> nil then
begin
if DataSource.DataSet <> nil then
begin
if DataSource.DataSet.Active then
begin
DataSource.DataSet.Active := False;
CloseDataSource := False;
end;
end;
end;
end;
UnableToActivate := False;
end;
constructor TAceDataSourceManager.Create;
begin
DSList := TList.Create;
end;
destructor TAceDataSourceManager.Destroy;
begin
CloseDataSources;
if DSList <> nil then DSList.Free;
inherited Destroy;
end;
function TAceDataSourceManager.ActivateDataSource(DS: TDataSource): Boolean;
var
ADS: TAceDataSource;
Duplicate: Boolean;
Spot: Integer;
begin
Result := False;
if DS <> nil then
begin
Spot := 0;
Duplicate := False;
While Not Duplicate And ( Spot < DSList.Count) do
begin
ADS := DSList.Items[Spot];
if ADS.DataSource = DS then Duplicate := True;
Inc(Spot);
end;
if Not Duplicate then
begin
ADS := TAceDataSource.Create(DS);
DSList.Add(ADS);
Result := ADS.OpenSource;
end else
begin
if DS.DataSet <> nil then Result := DS.DataSet.Active;
end;
end;
end;
procedure TAceDataSourceManager.CloseDataSources;
var
ADS: TAceDataSource;
Spot: Integer;
begin
for Spot := 0 to DSList.Count - 1 do
begin
ADS := DSList.Items[Spot];
ADS.CloseSource;
ADS.Free;
end;
DSList.Clear;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -