mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-10 06:08:17 +02:00
added DBActns from Michael VC
git-svn-id: trunk@5726 -
This commit is contained in:
parent
823256e659
commit
cf339ad67c
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -979,6 +979,7 @@ lcl/comctrls.pp svneol=native#text/pascal
|
||||
lcl/commctrl.pp svneol=native#text/pascal
|
||||
lcl/controls.pp svneol=native#text/pascal
|
||||
lcl/customtimer.pas svneol=native#text/pascal
|
||||
lcl/dbactns.pp svneol=native#text/pascal
|
||||
lcl/dbctrls.pp svneol=native#text/pascal
|
||||
lcl/dbgrids.pas svneol=native#text/pascal
|
||||
lcl/dialogs.pp svneol=native#text/pascal
|
||||
|
@ -23,6 +23,7 @@ implicitunits= \
|
||||
comctrls \
|
||||
commctrl \
|
||||
controls \
|
||||
dbactns \
|
||||
dbctrls \
|
||||
dbgrids \
|
||||
dialogs \
|
||||
|
@ -44,7 +44,7 @@ uses
|
||||
Comctrls, Graphics, StdCtrls, Arrow, Controls, ImgList, Menus, Toolwin,
|
||||
Dialogs, Messages, Clistbox, ActnList, Grids, MaskEdit,
|
||||
Printers, PostScriptPrinter, CheckLst, PairSplitter, ExtDlgs,
|
||||
DBCtrls, DBGrids, EditBtn, ExtGraphics,
|
||||
DBCtrls, DBGrids, DBActns, EditBtn, ExtGraphics,
|
||||
PropertyStorage, IniPropStorage, XMLPropStorage,
|
||||
// widgetset skeleton
|
||||
WSActnList, WSArrow, WSButtons, WSCalendar,
|
||||
@ -63,6 +63,9 @@ end.
|
||||
{ =============================================================================
|
||||
|
||||
$Log$
|
||||
Revision 1.17 2004/08/03 10:01:22 mattias
|
||||
added DBActns from Michael VC
|
||||
|
||||
Revision 1.16 2004/07/25 15:39:55 mattias
|
||||
added rx components from Michal Van Canneyt
|
||||
|
||||
|
346
lcl/dbactns.pp
Normal file
346
lcl/dbactns.pp
Normal file
@ -0,0 +1,346 @@
|
||||
{
|
||||
/***************************************************************************
|
||||
dbactns.pp
|
||||
----------
|
||||
***************************************************************************/
|
||||
|
||||
*****************************************************************************
|
||||
* *
|
||||
* This file is part of the Lazarus Component Library (LCL) *
|
||||
* *
|
||||
* See the file COPYING.LCL, included in this distribution, *
|
||||
* for details about the copyright. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
|
||||
* *
|
||||
*****************************************************************************
|
||||
}
|
||||
{$mode objfpc}
|
||||
{$h+}
|
||||
unit DBActns;
|
||||
|
||||
interface
|
||||
|
||||
uses Classes, DB, ActnList;
|
||||
|
||||
type
|
||||
|
||||
{ ---------------------------------------------------------------------
|
||||
TDatasetAction - Parent for all other TDataset actions.
|
||||
---------------------------------------------------------------------}
|
||||
|
||||
TDataSetAction = Class(TAction)
|
||||
Private
|
||||
FDataSource: TDataSource;
|
||||
Procedure SetDataSource(Value: TDataSource);
|
||||
Protected
|
||||
Procedure Notification(AComponent: TComponent; Operation: TOperation); override;
|
||||
Function GetDataSet(Target: TObject): TDataSet; virtual;
|
||||
Public
|
||||
Function HandlesTarget(Target: TObject): Boolean; override;
|
||||
property DataSource: TDataSource read FDataSource write SetDataSource;
|
||||
end;
|
||||
|
||||
{ ---------------------------------------------------------------------
|
||||
Navigation Actions
|
||||
---------------------------------------------------------------------}
|
||||
|
||||
TDataSetFirst = Class(TDataSetAction)
|
||||
Public
|
||||
Procedure ExecuteTarget(Target: TObject); override;
|
||||
Procedure UpdateTarget(Target: TObject); override;
|
||||
Published
|
||||
property DataSource;
|
||||
end;
|
||||
|
||||
TDataSetLast = Class(TDataSetAction)
|
||||
Public
|
||||
Procedure ExecuteTarget(Target: TObject); override;
|
||||
Procedure UpdateTarget(Target: TObject); override;
|
||||
Published
|
||||
property DataSource;
|
||||
end;
|
||||
|
||||
TDataSetNext = Class(TDataSetAction)
|
||||
Public
|
||||
Procedure ExecuteTarget(Target: TObject); override;
|
||||
Procedure UpdateTarget(Target: TObject); override;
|
||||
Published
|
||||
property DataSource;
|
||||
end;
|
||||
|
||||
TDataSetPrior = Class(TDataSetAction)
|
||||
Public
|
||||
Procedure ExecuteTarget(Target: TObject); override;
|
||||
Procedure UpdateTarget(Target: TObject); override;
|
||||
Published
|
||||
property DataSource;
|
||||
end;
|
||||
|
||||
TDataSetRefresh = Class(TDataSetAction)
|
||||
Public
|
||||
Procedure ExecuteTarget(Target: TObject); override;
|
||||
Procedure UpdateTarget(Target: TObject); override;
|
||||
Published
|
||||
property DataSource;
|
||||
end;
|
||||
|
||||
|
||||
{ ---------------------------------------------------------------------
|
||||
Data manipulation actions
|
||||
---------------------------------------------------------------------}
|
||||
|
||||
TDataSetCancel = Class(TDataSetAction)
|
||||
Public
|
||||
Procedure ExecuteTarget(Target: TObject); override;
|
||||
Procedure UpdateTarget(Target: TObject); override;
|
||||
Published
|
||||
property DataSource;
|
||||
end;
|
||||
|
||||
TDataSetDelete = Class(TDataSetAction)
|
||||
Public
|
||||
Procedure ExecuteTarget(Target: TObject); override;
|
||||
Procedure UpdateTarget(Target: TObject); override;
|
||||
Published
|
||||
property DataSource;
|
||||
end;
|
||||
|
||||
TDataSetEdit = Class(TDataSetAction)
|
||||
Public
|
||||
Procedure ExecuteTarget(Target: TObject); override;
|
||||
Procedure UpdateTarget(Target: TObject); override;
|
||||
Published
|
||||
property DataSource;
|
||||
end;
|
||||
|
||||
TDataSetInsert = Class(TDataSetAction)
|
||||
Public
|
||||
Procedure ExecuteTarget(Target: TObject); override;
|
||||
Procedure UpdateTarget(Target: TObject); override;
|
||||
Published
|
||||
property DataSource;
|
||||
end;
|
||||
|
||||
TDataSetPost = Class(TDataSetAction)
|
||||
Public
|
||||
Procedure ExecuteTarget(Target: TObject); override;
|
||||
Procedure UpdateTarget(Target: TObject); override;
|
||||
Published
|
||||
property DataSource;
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
|
||||
{ ---------------------------------------------------------------------
|
||||
TDatasetAction
|
||||
---------------------------------------------------------------------}
|
||||
|
||||
Function TDataSetAction.GetDataSet(Target: TObject): TDataSet;
|
||||
begin
|
||||
Result:=(Target as TDataSource).DataSet;
|
||||
end;
|
||||
|
||||
Function TDataSetAction.HandlesTarget(Target: TObject): Boolean;
|
||||
|
||||
begin
|
||||
Result:=(DataSource<>Nil);
|
||||
if Result then
|
||||
Result:=(DataSource.DataSet<>Nil)
|
||||
else
|
||||
Result:=(Target is TDataSource) and (TDataSource(Target).DataSet<>Nil);
|
||||
end;
|
||||
|
||||
|
||||
Procedure TDataSetAction.Notification(AComponent: TComponent;
|
||||
Operation: TOperation);
|
||||
begin
|
||||
inherited Notification(AComponent,Operation);
|
||||
if (Operation=opRemove) and
|
||||
(AComponent=DataSource) then
|
||||
FDataSource:=Nil;
|
||||
end;
|
||||
|
||||
|
||||
Procedure TDataSetAction.SetDataSource(Value: TDataSource);
|
||||
begin
|
||||
if (Value<>FDataSource) then
|
||||
begin
|
||||
FDataSource:=Value;
|
||||
if (Value<>Nil) then
|
||||
Value.FreeNotification(Self);
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
{ ---------------------------------------------------------------------
|
||||
TDatasetFirst
|
||||
---------------------------------------------------------------------}
|
||||
|
||||
Procedure TDataSetFirst.ExecuteTarget(Target: TObject);
|
||||
begin
|
||||
GetDataSet(Target).First;
|
||||
end;
|
||||
|
||||
|
||||
Procedure TDataSetFirst.UpdateTarget(Target: TObject);
|
||||
begin
|
||||
With GetDataSet(Target) do
|
||||
Enabled:=Active and not BOF;
|
||||
end;
|
||||
|
||||
|
||||
{ ---------------------------------------------------------------------
|
||||
TDataSetLast
|
||||
---------------------------------------------------------------------}
|
||||
|
||||
Procedure TDataSetLast.ExecuteTarget(Target: TObject);
|
||||
begin
|
||||
GetDataSet(Target).Last;
|
||||
end;
|
||||
|
||||
|
||||
Procedure TDataSetLast.UpdateTarget(Target: TObject);
|
||||
begin
|
||||
with GetDataSet(Target) do
|
||||
Enabled:=Active and not EOF;
|
||||
end;
|
||||
|
||||
|
||||
{ ---------------------------------------------------------------------
|
||||
TDataSetNext
|
||||
---------------------------------------------------------------------}
|
||||
|
||||
Procedure TDataSetNext.ExecuteTarget(Target: TObject);
|
||||
begin
|
||||
GetDataSet(Target).Next;
|
||||
end;
|
||||
|
||||
|
||||
Procedure TDataSetNext.UpdateTarget(Target: TObject);
|
||||
begin
|
||||
with GetDataSet(Target) do
|
||||
Enabled:=Active and not Eof;
|
||||
end;
|
||||
|
||||
|
||||
{ ---------------------------------------------------------------------
|
||||
TDataSetPrior
|
||||
---------------------------------------------------------------------}
|
||||
|
||||
Procedure TDataSetPrior.ExecuteTarget(Target: TObject);
|
||||
begin
|
||||
GetDataSet(Target).Prior;
|
||||
end;
|
||||
|
||||
|
||||
Procedure TDataSetPrior.UpdateTarget(Target: TObject);
|
||||
begin
|
||||
with GetDataSet(Target) do
|
||||
Enabled:=Active and not BOF;
|
||||
end;
|
||||
|
||||
|
||||
{ ---------------------------------------------------------------------
|
||||
TDataSetRefresh
|
||||
---------------------------------------------------------------------}
|
||||
|
||||
Procedure TDataSetRefresh.ExecuteTarget(Target: TObject);
|
||||
begin
|
||||
GetDataSet(Target).Refresh;
|
||||
end;
|
||||
|
||||
|
||||
Procedure TDataSetRefresh.UpdateTarget(Target: TObject);
|
||||
begin
|
||||
with GetDataSet(Target) do
|
||||
Enabled:=Active;
|
||||
end;
|
||||
|
||||
|
||||
{ ---------------------------------------------------------------------
|
||||
TDatasetInsert
|
||||
---------------------------------------------------------------------}
|
||||
|
||||
Procedure TDataSetInsert.ExecuteTarget(Target: TObject);
|
||||
begin
|
||||
GetDataSet(Target).Insert;
|
||||
end;
|
||||
|
||||
Procedure TDataSetInsert.UpdateTarget(Target: TObject);
|
||||
begin
|
||||
with GetDataSet(Target) do
|
||||
Enabled:=Active and CanModify and not (State in dsEditModes);
|
||||
end;
|
||||
|
||||
|
||||
{ ---------------------------------------------------------------------
|
||||
TDataSetPost
|
||||
---------------------------------------------------------------------}
|
||||
|
||||
Procedure TDataSetPost.ExecuteTarget(Target: TObject);
|
||||
begin
|
||||
GetDataSet(Target).Post;
|
||||
end;
|
||||
|
||||
Procedure TDataSetPost.UpdateTarget(Target: TObject);
|
||||
begin
|
||||
with GetDataSet(Target) do
|
||||
Enabled:=Active and (State in dsEditModes);
|
||||
end;
|
||||
|
||||
{ ---------------------------------------------------------------------
|
||||
TDataSetCancel
|
||||
---------------------------------------------------------------------}
|
||||
|
||||
Procedure TDataSetCancel.ExecuteTarget(Target: TObject);
|
||||
begin
|
||||
GetDataSet(Target).Cancel;
|
||||
end;
|
||||
|
||||
|
||||
Procedure TDataSetCancel.UpdateTarget(Target: TObject);
|
||||
begin
|
||||
with GetDataSet(Target) do
|
||||
Enabled:=Active and (State in dsEditModes);
|
||||
end;
|
||||
|
||||
|
||||
{ ---------------------------------------------------------------------
|
||||
TDataSetEdit
|
||||
---------------------------------------------------------------------}
|
||||
|
||||
Procedure TDataSetEdit.ExecuteTarget(Target: TObject);
|
||||
begin
|
||||
GetDataSet(Target).Edit;
|
||||
end;
|
||||
|
||||
|
||||
Procedure TDataSetEdit.UpdateTarget(Target: TObject);
|
||||
begin
|
||||
with GetDataSet(Target) do
|
||||
Enabled:=Active and CanModify and not (State in dsEditModes);
|
||||
end;
|
||||
|
||||
|
||||
{ ---------------------------------------------------------------------
|
||||
TDataSetDelete
|
||||
---------------------------------------------------------------------}
|
||||
|
||||
Procedure TDataSetDelete.ExecuteTarget(Target: TObject);
|
||||
begin
|
||||
GetDataSet(Target).Delete;
|
||||
end;
|
||||
|
||||
|
||||
Procedure TDataSetDelete.UpdateTarget(Target: TObject);
|
||||
begin
|
||||
with GetDataSet(Target) do
|
||||
Enabled:=Active and (not (BOF and EOF)) and CanModify;
|
||||
end;
|
||||
|
||||
|
||||
end.
|
Loading…
Reference in New Issue
Block a user