added DBActns from Michael VC

git-svn-id: trunk@5726 -
This commit is contained in:
mattias 2004-08-03 10:01:22 +00:00
parent 823256e659
commit cf339ad67c
4 changed files with 352 additions and 1 deletions

1
.gitattributes vendored
View File

@ -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

View File

@ -23,6 +23,7 @@ implicitunits= \
comctrls \
commctrl \
controls \
dbactns \
dbctrls \
dbgrids \
dialogs \

View File

@ -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
View 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.