mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-04 22:24:01 +02:00
81 lines
1.5 KiB
ObjectPascal
81 lines
1.5 KiB
ObjectPascal
unit dbappform;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, DB, AppForm;
|
|
|
|
Type
|
|
TDatasetActionEvent = Procedure(Dataset : TDataset; DoAction : Boolean) of Object;
|
|
|
|
{ TDBAppForm }
|
|
|
|
TDBAppForm = Class(TAppForm)
|
|
private
|
|
FAfterOpen: TNotifyEvent;
|
|
FBeforeOpen: TNotifyEvent;
|
|
FOnOpenDataset: TDatasetActionEvent;
|
|
FOpenDatasets: Boolean;
|
|
Procedure OpenAllDatasets;
|
|
Protected
|
|
Procedure DoInitForm; override;
|
|
Procedure DoOpenDatasets; virtual;
|
|
Published
|
|
Property OpenDatasets : Boolean Read FOpenDatasets Write FOpenDatasets;
|
|
Property BeforeOpenDatasets : TNotifyEvent Read FBeforeOpen Write FBeforeOpen;
|
|
Property AfterOpenDatasets : TNotifyEvent Read FAfterOpen Write FAfterOpen;
|
|
Property OnOpenDataset : TDatasetActionEvent Read FOnOpenDataset Write FOnOpenDataset;
|
|
end;
|
|
|
|
implementation
|
|
|
|
uses
|
|
custforms;
|
|
|
|
|
|
{ TDBAppForm }
|
|
|
|
procedure TDBAppForm.OpenAllDatasets;
|
|
begin
|
|
If Assigned(BeforeOpenDatasets) then
|
|
BeforeOpenDatasets(Self);
|
|
DoOpenDatasets;
|
|
If Assigned(AfterOpenDatasets) then
|
|
AfterOpenDatasets(Self);
|
|
end;
|
|
|
|
procedure TDBAppForm.DoInitForm;
|
|
begin
|
|
inherited DoInitForm;
|
|
If OpenDatasets then
|
|
OpenAllDatasets;
|
|
end;
|
|
|
|
procedure TDBAppForm.DoOpenDatasets;
|
|
|
|
Var
|
|
I : Integer;
|
|
D : TDataset;
|
|
B : Boolean;
|
|
|
|
begin
|
|
For I:=0 to ComponentCount-1 do
|
|
begin
|
|
If Components[i] is TDataset then
|
|
begin
|
|
D:=TDataset(Components[i]);
|
|
B:=True;
|
|
If Assigned(OnOpenDataset) then
|
|
OnOpenDataset(D,B);
|
|
If B then
|
|
D.Open;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
end.
|
|
|