cxdbnavigator.pas
来自「胜天进销存源码,国产优秀的进销存」· PAS 代码 · 共 542 行 · 第 1/2 页
PAS
542 行
{********************************************************************}
{ }
{ Developer Express Visual Component Library }
{ ExpressEditors }
{ }
{ Copyright (c) 1998-2008 Developer Express Inc. }
{ ALL RIGHTS RESERVED }
{ }
{ The entire contents of this file is protected by U.S. and }
{ International Copyright Laws. Unauthorized reproduction, }
{ reverse-engineering, and distribution of all or any portion of }
{ the code contained in this file is strictly prohibited and may }
{ result in severe civil and criminal penalties and will be }
{ prosecuted to the maximum extent possible under the law. }
{ }
{ RESTRICTIONS }
{ }
{ THIS SOURCE CODE AND ALL RESULTING INTERMEDIATE FILES }
{ (DCU, OBJ, DLL, ETC.) ARE CONFIDENTIAL AND PROPRIETARY TRADE }
{ SECRETS OF DEVELOPER EXPRESS INC. THE REGISTERED DEVELOPER IS }
{ LICENSED TO DISTRIBUTE THE EXPRESSEDITORS AND ALL }
{ ACCOMPANYING VCL CONTROLS AS PART OF AN EXECUTABLE PROGRAM ONLY. }
{ }
{ THE SOURCE CODE CONTAINED WITHIN THIS FILE AND ALL RELATED }
{ FILES OR ANY PORTION OF ITS CONTENTS SHALL AT NO TIME BE }
{ COPIED, TRANSFERRED, SOLD, DISTRIBUTED, OR OTHERWISE MADE }
{ AVAILABLE TO OTHER INDIVIDUALS WITHOUT EXPRESS WRITTEN CONSENT }
{ AND PERMISSION FROM DEVELOPER EXPRESS INC. }
{ }
{ CONSULT THE END USER LICENSE AGREEMENT FOR INFORMATION ON }
{ ADDITIONAL RESTRICTIONS. }
{ }
{********************************************************************}
unit cxDBNavigator;
{$I cxVer.inc}
interface
uses
Classes, DB, cxDBFilterControl, cxNavigator;
type
TcxCustomDBNavigator = class;
TcxDBNavigatorDataLink = class(TDataLink)
private
FNavigator: TcxCustomDBNavigator;
protected
procedure EditingChanged; override;
procedure DataSetChanged; override;
procedure ActiveChanged; override;
public
constructor Create(ANavigator: TcxCustomDBNavigator);
destructor Destroy; override;
end;
TcxDBNavigatorButtonsFilterEvent = procedure(Sender: TObject;
AFilterControl: TcxDBFilterControl) of object;
TcxDBNavigatorButtonsGetDataLink = function: TDataLink of object;
TcxDBNavigatorButtons = class(TcxCustomNavigatorButtons)
private
FBookmark: TBookmark;
FFilterCriteria: TMemoryStream;
FFilterSetting: Boolean;
FPageSize: Integer;
FOnApplyFilter: TcxDBNavigatorButtonsFilterEvent;
FOnGetDataLink: TcxDBNavigatorButtonsGetDataLink;
FOnShowFilterDialog: TcxDBNavigatorButtonsFilterEvent;
procedure DoApplyFilter(Sender: TObject);
procedure DoShowFilterDialog(Sender: TObject);
function GetDataLink: TDataLink;
function GetDataSet: TDataSet;
function GetInternalPageSize: Integer;
procedure SetBookmark(Value: TBookmark);
procedure SetPageSize(Value: Integer);
procedure ShowFilter;
protected
procedure DoButtonClick(ADefaultIndex: Integer); override;
function GetButtonEnabled(ADefaultIndex: Integer): Boolean; override;
procedure CheckBookmark;
procedure ClearFilterCriteria;
property Bookmark: TBookmark read FBookmark write SetBookmark;
property DataLink: TDataLink read GetDataLink;
property DataSet: TDataSet read GetDataSet;
property InternalPageSize: Integer read GetInternalPageSize;
property OnGetDataLink: TcxDBNavigatorButtonsGetDataLink
read FOnGetDataLink write FOnGetDataLink;
public
constructor Create(ANavigator: IcxNavigatorOwner); override;
destructor Destroy; override;
procedure Assign(Source: TPersistent); override;
procedure ReleaseBookmark; override;
published
property ConfirmDelete;
property Images;
property PageSize: Integer read FPageSize write SetPageSize default 0;
property OnShowFilterDialog: TcxDBNavigatorButtonsFilterEvent
read FOnShowFilterDialog write FOnShowFilterDialog;
property OnApplyFilter: TcxDBNavigatorButtonsFilterEvent
read FOnApplyFilter write FOnApplyFilter;
property First;
property PriorPage;
property Prior;
property Next;
property NextPage;
property Last;
property Insert;
property Append;
property Delete;
property Edit;
property Post;
property Cancel;
property Refresh;
property SaveBookmark;
property GotoBookmark;
property Filter;
end;
TcxDBNavigatorFilterEvent = procedure(ANavigator: TcxCustomDBNavigator;
AFilterControl: TcxDBFilterControl) of object;
TcxCustomDBNavigator = class(TcxCustomNavigator)
private
FDataLink: TcxDBNavigatorDataLink;
FOnApplyFilter: TcxDBNavigatorFilterEvent;
FOnShowFilterDialog: TcxDBNavigatorFilterEvent;
procedure DoApplyFilter(Sender: TObject; AFilterControl: TcxDBFilterControl);
procedure DoShowFilterDialog(Sender: TObject; AFilterControl: TcxDBFilterControl);
function GetButtons: TcxDBNavigatorButtons;
function GetDataLink: TDataLink;
function GetDataSource: TDataSource;
function GetDataSet: TDataSet;
procedure SetButtons(Value: TcxDBNavigatorButtons);
procedure SetDataSource(Value: TDataSource);
procedure SetOnApplyFilter(Value: TcxDBNavigatorFilterEvent);
procedure SetOnShowFilterDialog(Value: TcxDBNavigatorFilterEvent);
protected
function CreateButtons: TcxCustomNavigatorButtons; override;
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
procedure DataSetActiveChanged; virtual;
procedure DataSetDataChanged; virtual;
property Buttons: TcxDBNavigatorButtons read GetButtons write SetButtons;
property DataLink: TcxDBNavigatorDataLink read FDataLink;
property DataSource: TDataSource read GetDataSource write SetDataSource;
property OnApplyFilter: TcxDBNavigatorFilterEvent read FOnApplyFilter
write SetOnApplyFilter;
property OnShowFilterDialog: TcxDBNavigatorFilterEvent read FOnShowFilterDialog
write SetOnShowFilterDialog;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
property DataSet: TDataSet read GetDataSet;
end;
TcxDBNavigator = class(TcxCustomDBNavigator)
published
property Buttons;
property DataSource;
property LookAndFeel;
property OnApplyFilter;
property OnShowFilterDialog;
property Align;
property Anchors;
property Constraints;
property DragCursor;
property DragKind;
property DragMode;
property Enabled;
property Ctl3D;
property ParentCtl3D;
property ParentShowHint;
property PopupMenu;
property ShowHint;
property TabOrder;
property TabStop;
property Visible;
{$IFDEF DELPHI5}
property OnContextPopup;
{$ENDIF}
property OnDblClick;
property OnDragDrop;
property OnDragOver;
property OnEndDock;
property OnEndDrag;
property OnEnter;
property OnExit;
property OnResize;
property OnStartDock;
property OnStartDrag;
end;
implementation
uses
Windows, SysUtils, Controls, DBCtrls, Dialogs, cxClasses,
cxFilterControlDialog, cxEditConsts;
type
TDataSetAccess = class(TDataSet);
{ TcxDBNavigatorDataLink }
constructor TcxDBNavigatorDataLink.Create(ANavigator: TcxCustomDBNavigator);
begin
inherited Create;
FNavigator := ANavigator;
VisualControl := True;
end;
destructor TcxDBNavigatorDataLink.Destroy;
begin
FNavigator := nil;
inherited Destroy;
end;
procedure TcxDBNavigatorDataLink.EditingChanged;
begin
if FNavigator <> nil then
FNavigator.NavigatorButtonsStateChanged;
end;
procedure TcxDBNavigatorDataLink.DataSetChanged;
begin
if FNavigator <> nil then
begin
FNavigator.DataSetDataChanged;
FNavigator.NavigatorButtonsStateChanged;
end;
end;
procedure TcxDBNavigatorDataLink.ActiveChanged;
begin
if FNavigator <> nil then
begin
FNavigator.DataSetActiveChanged;
FNavigator.NavigatorButtonsStateChanged;
end;
end;
{ TcxDBNavigatorButtons }
constructor TcxDBNavigatorButtons.Create(ANavigator: IcxNavigatorOwner);
begin
inherited Create(ANavigator);
FPageSize := 0;
FFilterCriteria := TMemoryStream.Create;
end;
destructor TcxDBNavigatorButtons.Destroy;
begin
FreeAndNil(FFilterCriteria);
inherited Destroy;
end;
procedure TcxDBNavigatorButtons.Assign(Source: TPersistent);
begin
if Source is TcxDBNavigatorButtons then
with TcxDBNavigatorButtons(Source) do
begin
Self.PageSize := PageSize;
Self.OnApplyFilter := OnApplyFilter;
Self.OnShowFilterDialog := OnShowFilterDialog;
end
else
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?