📄 jvdbactions.pas
字号:
DataSet.Delete;
end;
//=== { TJvDatabasePostAction } ==============================================
procedure TJvDatabasePostAction.UpdateTarget(Target: TObject);
begin
SetEnabled(Assigned(DataSet) and not EngineControlsDisabled and EngineIsActive and EngineEditModeActive);
end;
procedure TJvDatabasePostAction.ExecuteTarget(Target: TObject);
begin
DataSet.Post;
end;
//=== { TJvDatabaseCancelAction } ============================================
procedure TJvDatabaseCancelAction.UpdateTarget(Target: TObject);
begin
SetEnabled(Assigned(DataSet) and not EngineControlsDisabled and EngineIsActive and EngineEditModeActive);
end;
procedure TJvDatabaseCancelAction.ExecuteTarget(Target: TObject);
begin
DataSet.Cancel;
end;
//=== { TJvDatabaseSingleRecordWindowAction } ================================
constructor TJvDatabaseSingleRecordWindowAction.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FOptions := TJvShowSingleRecordWindowOptions.Create;
end;
destructor TJvDatabaseSingleRecordWindowAction.Destroy;
begin
FOptions.Free;
inherited Destroy;
end;
procedure TJvDatabaseSingleRecordWindowAction.ExecuteTarget(Target: TObject);
begin
DataEngine.ShowSingleRecordWindow(Options, DataComponent);
end;
//=== { TJvDatabaseOpenAction } ==============================================
procedure TJvDatabaseOpenAction.UpdateTarget(Target: TObject);
begin
SetEnabled(Assigned(DataSet) and not EngineIsActive);
end;
procedure TJvDatabaseOpenAction.ExecuteTarget(Target: TObject);
begin
DataSet.Open;
end;
//=== { TJvDatabaseCloseAction } =============================================
procedure TJvDatabaseCloseAction.UpdateTarget(Target: TObject);
begin
SetEnabled(Assigned(DataSet) and EngineIsActive and not EngineEditModeActive);
end;
procedure TJvDatabaseCloseAction.ExecuteTarget(Target: TObject);
begin
DataSet.Close;
end;
{$IFDEF USE_3RDPARTY_SMEXPORT}
//=== { TJvDatabaseSMExportOptions } =========================================
constructor TJvDatabaseSMExportOptions.Create;
var
Fmt: TTableTypeExport;
Option: TSMOption;
begin
inherited Create;
FFormats := [];
for Fmt := Low(Fmt) to High(Fmt) do
FFormats := FFormats + [Fmt];
FOptions := [];
for Option := Low(Option) to High(Option) do
FOptions := FOptions + [Option];
// FDataFormats := TSMEDataFormats.Create;
end;
destructor TJvDatabaseSMExportOptions.Destroy;
begin
// FreeAndNil(FDataFormats);
inherited Destroy;
end;
procedure TJvDatabaseSMExportOptions.SMEWizardDlgGetCellParams(Sender: TObject; Field: TField;
var Text: string; AFont: TFont; var Alignment: TAlignment; var Background: TColor; var CellType: TCellType);
const
SToDateFormatLong = 'TO_DATE(''%s'', ''DD.MM.YYYY HH24:MI:SS'')';
SToDateFormatShort = 'TO_DATE(''%s'', ''DD.MM.YYYY'')';
SFormatLong = 'dd.mm.yyyy hh:nn:ss';
SFormatShort = 'dd.mm.yyyy';
SNull = 'NULL';
var
DT: TDateTime;
begin
if Sender is TSMExportToSQL then
if Assigned(Field) then
begin
if Field.IsNull or (Field.AsString = '') then
begin
Text := SNull;
CellType := ctBlank;
end
else
if Field.DataType in [ftFloat, ftBCD, ftCurrency] then
Text := AnsiReplaceStr(Text, ',', '.')
else
if Field.DataType in [ftDate, ftDateTime] then
begin
DT := Field.AsDateTime;
if DT <= 0 then
Text := SNull
else
if DT = Trunc(DT) then
Text := Format(SToDateFormatShort, [FormatDateTime(SFormatShort, DT)])
else
Text := Format(StoDateFormatLong, [FormatDateTime(SFormatLong, DT)]);
CellType := ctBlank;
end
else
if Field.DataType in [ftString, ftWideString] then
Text := '''' + AnsiReplaceStr(Text, '''', '''''') + '''';
end
else
if Text = '' then
begin
Text := SNull;
CellType := ctBlank;
end
else
if CellType in [ctDouble, ctCurrency] then
Text := AnsiReplaceStr(Text, ',', '.')
else
if CellType in [ctDateTime, ctDate, ctTime] then
begin
DT := StrToDate(Text);
if DT <= 0 then
Text := SNull
else
if DT = Trunc(DT) then
Text := Format(SToDateFormatShort, [FormatDateTime(SFormatShort, DT)])
else
Text := Format(StoDateFormatLong, [FormatDateTime(SFormatLong, DT)]);
CellType := ctBlank;
end
else
if CellType in [ctString] then
Text := '''' + AnsiReplaceStr(Text, '''', '''''') + ''''
end;
procedure TJvDatabaseSMExportOptions.SMEWizardDlgOnBeforeExecute(Sender: TObject);
begin
if Sender is TSMExportToSQL then
TSMExportToSQL(Sender).SQLQuote := #0;
end;
//=== { TJvDatabaseSMExportAction } ==========================================
constructor TJvDatabaseSMExportAction.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FOptions := TJvDatabaseSMExportOptions.Create;
end;
destructor TJvDatabaseSMExportAction.Destroy;
begin
FOptions.Free;
inherited Destroy;
end;
procedure TJvDatabaseSMExportAction.ExecuteTarget(Target: TObject);
begin
ExportData;
end;
procedure TJvDatabaseSMExportAction.ExportData;
var
SMEWizardDlg: TSMEWizardDlg;
{$IFDEF USE_3RDPARTY_DEVEXPRESS_CXGRID}
SMEEngineCx: TSMEcxCustomGridTableViewDataEngine;
{$ENDIF USE_3RDPARTY_DEVEXPRESS_CXGRID}
begin
{$IFDEF USE_3RDPARTY_DEVEXPRESS_CXGRID}
SMEEngineCx := nil;
{$ENDIF USE_3RDPARTY_DEVEXPRESS_CXGRID}
SMEWizardDlg := TSMEWizardDlg.Create(Self);
try
SMEWizardDlg.ColumnSource := csDataSet;
SMEWizardDlg.OnGetCellParams := Options.SMEWizardDlgGetCellParams;
SMEWizardDlg.OnBeforeExecute := Options.SMEWizardDlgOnBeforeExecute;
SMEWizardDlg.DataSet := DataSource.DataSet;
SMEWizardDlg.Title := Options.Title;
SMEWizardDlg.KeyGenerator := Options.Title;
SMEWizardDlg.WizardStyle := smewiz.wsWindows2000;
SMEWizardDlg.SpecificationDir := Options.DefaultOptionsDirectory + '\';
if DataComponent is TCustomDBGrid then
begin
SMEWizardDlg.DBGrid := TCustomControl(DataComponent);
SMEWizardDlg.ColumnSource := csDBGrid;
end
{$IFDEF USE_3RDPARTY_DEVEXPRESS_CXGRID}
else
if (DataComponent is TcxGrid) and (TcxGrid(DataComponent).FocusedView is TcxCustomGridTableView) then
begin
SMEEnginecx := TSMEcxCustomGridTableViewDataEngine.Create(Self);
SMEEngineCx.cxCustomGridTableView := TcxCustomGridTableView(TcxGrid(DataComponent).FocusedView);
SMEWizardDlg.DataEngine := SMEEngineCx;
SMEWizardDlg.ColumnSource := csDataEngine;
end
else
if DataComponent is TcxCustomGridTableView then
begin
SMEEnginecx := TSMEcxCustomGridTableViewDataEngine.Create(Self);
SMEEngineCx.cxCustomGridTableView := TcxCustomGridTableView(DataComponent);
SMEWizardDlg.DataEngine := SMEEngineCx;
SMEWizardDlg.ColumnSource := csDataEngine;
end
{$ENDIF USE_3RDPARTY_DEVEXPRESS_CXGRID}
else
begin
SMEWizardDlg.DataSet := DataSet;
SMEWizardDlg.ColumnSource := csDataSet;
end;
SMEWizardDlg.Formats := Options.Formats;
SMEWizardDlg.Options := Options.Options;
SMEWizardDlg.HelpContext := Options.HelpContext;
if FileExists(Options.DefaultOptionsDirectory + '\Last Export.SME') then
SMEWizardDlg.LoadSpecification(Options.DefaultOptionsDirectory + '\Last Export.SME');
SMEWizardDlg.Execute;
SMEWizardDlg.SaveSpecification('Last Export', Options.DefaultOptionsDirectory + '\Last Export.SME', False);
finally
{$IFDEF USE_3RDPARTY_DEVEXPRESS_CXGRID}
FreeAndNil(SMEEngineCx);
{$ENDIF USE_3RDPARTY_DEVEXPRESS_CXGRID}
FreeAndNil(SMEWizardDlg);
end;
end;
{$ENDIF USE_3RDPARTY_SMEXPORT}
{$IFDEF USE_3RDPARTY_SMIMPORT}
//=== { TJvDatabaseSMImportOptions } =========================================
constructor TJvDatabaseSMImportOptions.Create;
var
Fmt: TTableTypeImport;
Option: TSMIOption;
begin
inherited Create;
FFormats := [];
for Fmt := Low(Fmt) to High(Fmt) do
FFormats := FFormats + [Fmt];
FOptions := [];
for Option := Low(Option) to High(Option) do
FOptions := FOptions + [Option];
end;
//=== { TJvDatabaseSMImportAction } ==========================================
constructor TJvDatabaseSMImportAction.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FOptions := TJvDatabaseSMImportOptions.Create;
end;
destructor TJvDatabaseSMImportAction.Destroy;
begin
FOptions.Free;
inherited Destroy;
end;
procedure TJvDatabaseSMImportAction.ExecuteTarget(Target: TObject);
begin
ImportData;
end;
procedure TJvDatabaseSMImportAction.ImportData;
var
SMIWizardDlg: TSMIWizardDlg;
begin
SMIWizardDlg := TSMIWizardDlg.Create(Self);
try
// SMIWizardDlg.OnGetSpecifications := Options.SMIWizardDlgGetSpecifications;
SMIWizardDlg.SpecificationDir := Options.DefaultOptionsDirectory + '\';
SMIWizardDlg.DataSet := DataSource.DataSet;
SMIWizardDlg.Title := Options.Title;
SMIWizardDlg.Formats := Options.Formats;
SMIWizardDlg.HelpContext := Options.HelpContext;
SMIWizardDlg.WizardStyle := Options.WizardStyle;
SMIWizardDlg.Options := Options.Options;
// IF FileExists (Options.DefaultOptionsDirectory+'\Last Import.SMI') THEN
// SMIWizardDlg.LoadSpecification(Options.DefaultOptionsDirectory+'\Last Import.SMI');
SMIWizardDlg.Execute;
SMIWizardDlg.SaveSpecification('Last Import', Options.DefaultOptionsDirectory + '\Last Import.SMI', False);
finally
FreeAndNil(SMIWizardDlg);
end;
end;
{$ENDIF USE_3RDPARTY_SMIMPORT}
//=== { TJvDatabaseActionEngineList } ========================================
destructor TJvDatabaseActionEngineList.Destroy;
var
I: Integer;
begin
for I := Count - 1 downto 0 do
begin
TJvDatabaseActionBaseEngine(Items[I]).Free;
Items[I] := nil;
Delete(I);
end;
inherited Destroy;
end;
procedure TJvDatabaseActionEngineList.RegisterEngine(AEngineClass: TJvDatabaseActionBaseEngineClass);
begin
Add(AEngineClass.Create);
end;
function TJvDatabaseActionEngineList.GetEngine(AComponent: TComponent): TJvDatabaseActionBaseEngine;
var
Ind: Integer;
begin
Result := nil;
for Ind := 0 to Count - 1 do
if TJvDatabaseActionBaseEngine(Items[Ind]).Supports(AComponent) then
begin
Result := TJvDatabaseActionBaseEngine(Items[Ind]);
Break;
end;
end;
function TJvDatabaseActionEngineList.Supports(AComponent: TComponent): Boolean;
begin
Result := Assigned(GetEngine(AComponent));
end;
//=== Global =================================================================
function RegisteredDatabaseActionEngineList: TJvDatabaseActionEngineList;
begin
Result := IntRegisteredActionEngineList;
end;
procedure RegisterActionEngine(AEngineClass: TJvDatabaseActionBaseEngineClass);
begin
if Assigned(IntRegisteredActionEngineList) then
IntRegisteredActionEngineList.RegisterEngine(AEngineClass);
end;
procedure CreateActionEngineList;
begin
IntRegisteredActionEngineList := TJvDatabaseActionEngineList.Create;
end;
procedure DestroyActionEngineList;
begin
IntRegisteredActionEngineList.Free;
IntRegisteredActionEngineList := nil;
end;
procedure ActionInit;
begin
CreateActionEngineList;
RegisterActionEngine(TJvDatabaseActionBaseEngine);
RegisterActionEngine(TJvDatabaseActionDBGridEngine);
{$IFDEF USE_3RDPARTY_DEVEXPRESS_CXGRID}
RegisterActionEngine(TJvDatabaseActionDevExpCxGridEngine);
{$ENDIF USE_3RDPARTY_DEVEXPRESS_CXGRID}
end;
initialization
{$IFDEF UNITVERSIONING}
RegisterUnitVersion(HInstance, UnitVersioning);
{$ENDIF UNITVERSIONING}
ActionInit;
finalization
DestroyActionEngineList;
{$IFDEF UNITVERSIONING}
UnregisterUnitVersion(HInstance);
{$ENDIF UNITVERSIONING}
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -