📄 jvdbactions.pas
字号:
property DefaultOptionsDirectory: string read FDefaultOptionsDirectory write FDefaultOptionsDirectory;
property KeyGenerator: string read FKeyGenerator write FKeyGenerator;
property Options: TSMOptions read FOptions write FOptions;
end;
TJvDatabaseSMExportAction = class(TJvDatabaseBaseActiveAction)
private
FOptions: TJvDatabaseSMExportOptions;
protected
procedure ExportData;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure ExecuteTarget(Target: TObject); override;
published
property Options: TJvDatabaseSMExportOptions read FOptions write FOptions;
end;
{$ENDIF USE_3RDPARTY_SMEXPORT}
{$IFDEF USE_3RDPARTY_SMIMPORT}
TJvDatabaseSMImportOptions = class(TPersistent)
private
FHelpContext: THelpContext;
FFormats: TImportFormatTypes;
FTitle: TCaption;
FDefaultOptionsDirectory: string;
FOptions: TSMIOptions;
FWizardStyle: TSMIWizardStyle;
public
constructor Create;
published
property HelpContext: THelpContext read FHelpContext write FHelpContext;
property Formats: TImportFormatTypes read FFormats write FFormats;
property Title: TCaption read FTitle write FTitle;
property DefaultOptionsDirectory: string read FDefaultOptionsDirectory write FDefaultOptionsDirectory;
property Options: TSMIOptions read FOptions write FOptions;
property WizardStyle: TSMIWizardStyle read FWizardStyle write FWizardStyle;
end;
TJvDatabaseSMImportAction = class(TJvDatabaseBaseActiveAction)
private
FOptions: TJvDatabaseSMImportOptions;
protected
procedure ImportData;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure ExecuteTarget(Target: TObject); override;
published
property Options: TJvDatabaseSMImportOptions read FOptions write FOptions;
end;
{$ENDIF USE_3RDPARTY_SMIMPORT}
TJvDatabaseActionEngineList = class(TList)
public
destructor Destroy; override;
procedure RegisterEngine(AEngineClass: TJvDatabaseActionBaseEngineClass);
function GetEngine(AComponent: TComponent): TJvDatabaseActionBaseEngine;
function Supports(AComponent: TComponent): Boolean;
end;
procedure RegisterActionEngine(AEngineClass: TJvDatabaseActionBaseEngineClass);
function RegisteredDatabaseActionEngineList: TJvDatabaseActionEngineList;
{$IFDEF UNITVERSIONING}
const
UnitVersioning: TUnitVersionInfo = (
RCSfile: '$RCSfile: JvDBActions.pas,v $';
Revision: '$Revision: 1.22 $';
Date: '$Date: 2005/02/17 10:20:19 $';
LogPath: 'JVCL\run'
);
{$ENDIF UNITVERSIONING}
implementation
uses
SysUtils, DBGrids, Grids,
{$IFDEF HAS_UNIT_STRUTILS}
StrUtils,
{$ENDIF HAS_UNIT_STRUTILS}
{$IFDEF USE_3RDPARTY_DEVEXPRESS_CXGRID}
cxGrid, cxGridDBDataDefinitions,
{$ENDIF USE_3RDPARTY_DEVEXPRESS_CXGRID}
{$IFDEF USE_3RDPARTY_SMEXPORT}
{$IFDEF USE_3RDPARTY_DEVEXPRESS_CXGRID}
SMEEngCx,
{$ENDIF USE_3RDPARTY_DEVEXPRESS_CXGRID}
sme2sql, IniFiles,
{$ENDIF USE_3RDPARTY_SMEXPORT}
{$IFDEF USE_3RDPARTY_DEVEXPRESS_CXGRID}
cxCustomData,
{$ENDIF USE_3RDPARTY_DEVEXPRESS_CXGRID}
JvResources, JvParameterList, JvParameterListParameter;
var
IntRegisteredActionEngineList: TJvDatabaseActionEngineList;
//=== { TJvDatabaseActionList } ==============================================
procedure TJvDatabaseActionList.SetDataComponent(Value: TComponent);
var
I: Integer;
begin
FDataComponent := Value;
if FDataComponent <> nil then
FDataComponent.FreeNotification(Self);
for I := 0 to ActionCount - 1 do
if Actions[I] is TJvDatabaseBaseAction then
TJvDatabaseBaseAction(Actions[I]).DataComponent := Value;
end;
procedure TJvDatabaseActionList.Notification(AComponent: TComponent; Operation: TOperation);
begin
inherited Notification(AComponent, Operation);
if Operation = opRemove then
if AComponent = FDataComponent then
DataComponent := nil;
end;
//=== { TJvShowSingleRecordWindowOptions } ===================================
constructor TJvShowSingleRecordWindowOptions.Create;
begin
inherited Create;
FDialogCaption := '';
FPostButtonCaption := RsSRWPostButtonCaption;
FCancelButtonCaption := RsSRWCancelButtonCaption;
FCloseButtonCaption := RsSRWCloseButtonCaption;
FBorderStyle := bsDialog;
FTop := 0;
FLeft := 0;
FWidth := 640;
FHeight := 480;
FPosition := poScreenCenter;
FArrangeSettings := TJvArrangeSettings.Create(nil);
with FArrangeSettings do
begin
AutoSize := asBoth;
DistanceHorizontal := 3;
DistanceVertical := 3;
BorderLeft := 3;
BorderTop := 3;
WrapControls := True;
end;
FArrangeConstraints := TSizeConstraints.Create(nil);
FArrangeConstraints.MaxHeight := 480;
FArrangeConstraints.MaxWidth := 640;
FFieldCreateOptions := TJvCreateDBFieldsOnControlOptions.Create;
end;
destructor TJvShowSingleRecordWindowOptions.Destroy;
begin
FFieldCreateOptions.Free;
FArrangeConstraints.Free;
FArrangeSettings.Free;
inherited Destroy;
end;
procedure TJvShowSingleRecordWindowOptions.SetArrangeSettings(Value: TJvArrangeSettings);
begin
FArrangeSettings.Assign(Value);
end;
procedure TJvShowSingleRecordWindowOptions.SetArrangeConstraints(Value: TSizeConstraints);
begin
FArrangeConstraints.Assign(Value);
end;
procedure TJvShowSingleRecordWindowOptions.SetFieldCreateOptions(Value: TJvCreateDBFieldsOnControlOptions);
begin
FFieldCreateOptions.Assign(Value);
end;
procedure TJvShowSingleRecordWindowOptions.SetOptionsToDialog(ADialog: TJvDynControlDataSourceEditDialog);
begin
if Assigned(ADialog) then
begin
ADialog.DialogCaption := DialogCaption;
ADialog.PostButtonCaption := PostButtonCaption;
ADialog.CancelButtonCaption := CancelButtonCaption;
ADialog.CloseButtonCaption := CloseButtonCaption;
ADialog.Position := Position;
ADialog.BorderStyle := BorderStyle;
ADialog.Top := Top;
ADialog.Left := Left;
ADialog.Width := Width;
ADialog.Height := Height;
ADialog.ArrangeConstraints := ArrangeConstraints;
ADialog.ArrangeSettings := ArrangeSettings;
ADialog.FieldCreateOptions := FieldCreateOptions;
end;
end;
//=== { TJvDatabaseActionBaseEngine } ========================================
function TJvDatabaseActionBaseEngine.GetDataSource(ADataComponent: TComponent): TDataSource;
begin
if Assigned(ADataComponent) and (ADataComponent is TDataSource) then
Result := TDataSource(ADataComponent)
else
Result := nil;
end;
function TJvDatabaseActionBaseEngine.GetDataSet(ADataComponent: TComponent): TDataSet;
begin
if Assigned(GetDataSource(ADataComponent)) then
Result := GetDataSource(ADataComponent).DataSet
else
Result := nil;
end;
function TJvDatabaseActionBaseEngine.Supports(ADataComponent: TComponent): Boolean;
begin
Result := Assigned(ADataComponent) and (ADataComponent is TDataSource);
end;
function TJvDatabaseActionBaseEngine.IsActive(ADataComponent: TComponent): Boolean;
var
DataSet: TDataSet;
begin
DataSet := GetDataSet(ADataComponent);
if Assigned(DataSet) then
Result := DataSet.Active
else
Result := False;
end;
function TJvDatabaseActionBaseEngine.HasData(ADataComponent: TComponent): Boolean;
var
DataSet: TDataSet;
begin
DataSet := GetDataSet(ADataComponent);
if Assigned(DataSet) then
Result := DataSet.RecordCount > 0
else
Result := False;
end;
function TJvDatabaseActionBaseEngine.FieldCount(ADataComponent: TComponent): Integer;
var
DataSet: TDataSet;
begin
DataSet := GetDataSet(ADataComponent);
if Assigned(DataSet) then
Result := DataSet.FieldCount
else
Result := -1;
end;
function TJvDatabaseActionBaseEngine.RecordCount(ADataComponent: TComponent): Integer;
var
DataSet: TDataSet;
begin
DataSet := GetDataSet(ADataComponent);
if Assigned(DataSet) then
Result := DataSet.RecordCount
else
Result := -1;
end;
function TJvDatabaseActionBaseEngine.RecNo(ADataComponent: TComponent): Integer;
var
DataSet: TDataSet;
begin
DataSet := GetDataSet(ADataComponent);
if Assigned(DataSet) then
Result := DataSet.RecNo
else
Result := -1;
end;
function TJvDatabaseActionBaseEngine.CanInsert(ADataComponent: TComponent): Boolean;
var
DataSet: TDataSet;
begin
DataSet := GetDataSet(ADataComponent);
if Assigned(DataSet) then
Result := DataSet.CanModify
else
Result := False;
end;
function TJvDatabaseActionBaseEngine.CanUpdate(ADataComponent: TComponent): Boolean;
var
DataSet: TDataSet;
begin
DataSet := GetDataSet(ADataComponent);
if Assigned(DataSet) then
Result := DataSet.CanModify
else
Result := False;
end;
function TJvDatabaseActionBaseEngine.CanDelete(ADataComponent: TComponent): Boolean;
var
DataSet: TDataSet;
begin
DataSet := GetDataSet(ADataComponent);
if Assigned(DataSet) then
Result := DataSet.CanModify
else
Result := False;
end;
function TJvDatabaseActionBaseEngine.Eof(ADataComponent: TComponent): Boolean;
var
DataSet: TDataSet;
begin
DataSet := GetDataSet(ADataComponent);
if Assigned(DataSet) then
Result := DataSet.Eof
else
Result := False;
end;
function TJvDatabaseActionBaseEngine.Bof(ADataComponent: TComponent): Boolean;
var
DataSet: TDataSet;
begin
DataSet := GetDataSet(ADataComponent);
if Assigned(DataSet) then
Result := DataSet.Bof
else
Result := False;
end;
procedure TJvDatabaseActionBaseEngine.DisableControls(ADataComponent: TComponent);
var
DataSet: TDataSet;
begin
DataSet := GetDataSet(ADataComponent);
if Assigned(DataSet) then
DataSet.DisableControls;
end;
procedure TJvDatabaseActionBaseEngine.EnableControls(ADataComponent: TComponent);
var
DataSet: TDataSet;
begin
DataSet := GetDataSet(ADataComponent);
if Assigned(DataSet) then
DataSet.EnableControls;
end;
function TJvDatabaseActionBaseEngine.ControlsDisabled(ADataComponent: TComponent): Boolean;
var
DataSet: TDataSet;
begin
DataSet := GetDataSet(ADataComponent);
if Assigned(DataSet) then
Result := DataSet.ControlsDisabled
else
Result := False;
end;
function TJvDatabaseActionBaseEngine.EditModeActive(ADataComponent: TComponent): Boolean;
var
DataSet: TDataSet;
begin
DataSet := GetDataSet(ADataComponent);
if Assigned(DataSet) then
Result := DataSet.State in [dsInsert, dsEdit]
else
Result := False;
end;
procedure TJvDatabaseActionBaseEngine.First(ADataComponent: TComponent);
var
DataSet: TDataSet;
begin
DataSet := GetDataSet(ADataComponent);
if Assigned(DataSet) then
DataSet.First;
end;
procedure TJvDatabaseActionBaseEngine.Last(ADataComponent: TComponent);
var
DataSet: TDataSet;
begin
DataSet := GetDataSet(ADataComponent);
if Assigned(DataSet) then
DataSet.Last;
end;
procedure TJvDatabaseActionBaseEngine.MoveBy(ADataComponent: TComponent; Distance: Integer);
var
DataSet: TDataSet;
begin
DataSet := GetDataSet(ADataComponent);
if Assigned(DataSet) then
DataSet.MoveBy(Distance);
end;
procedure TJvDatabaseActionBaseEngine.ShowSingleRecordWindow(AOptions: TJvShowSingleRecordWindowOptions;
ADataComponent: TComponent);
var
Dialog: TJvDynControlDataSourceEditDialog;
begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -