type
{ TBaseWizardDialogEditorClass }
generic TBaseWizardDialogEditorClass<T; F: TBaseWizardForm> = class(TObject)
private
FOnActionClose: TCloseEvent;
FOnMasterDataSetField: TOnMasterDataSetField;
procedure SetOnActionClose(AValue: TCloseEvent);
procedure SetOnMasterDataSetField(AValue: TOnMasterDataSetField);
protected
FFormWizard: F;
procedure DoActionButton(Sender: TObject); virtual; abstract;
procedure EditObject(EditObject: T); virtual; abstract;
public
destructor Destroy; override;
procedure Show; virtual;
procedure Clear; virtual; abstract;
procedure DefaultValueComponent; virtual; abstract;
procedure DefaultValueComponent(DataSetValue: string); virtual; abstract;
property OnActionClose: TCloseEvent read FOnActionClose write SetOnActionClose;
property OnMasterDataSetField: TOnMasterDataSetField read FOnMasterDataSetField write SetOnMasterDataSetField;
end;
implementation
{ TBaseEditorClass }
procedure TBaseEditorClass.DoActionClose(Sender: TObject;
var CloseAction: TCloseAction);
begin
FActionTypeEditor := ateAdd;
end;
procedure TBaseEditorClass.Edit(Item: T);
begin
FActionTypeEditor := ateEdit;
end;
procedure TBaseEditorClass.Show;
begin
case FActionTypeEditor of
ateAdd: FWizardEditor.Show;
ateEdit: FWizardEditEditor.Show;
end;
end;
{ TBaseWizardDialogEditorClass }
procedure TBaseWizardDialogEditorClass.SetOnActionClose(AValue: TCloseEvent);
begin
if FOnActionClose = AValue then Exit;
FOnActionClose := AValue;
end;
procedure TBaseWizardDialogEditorClass.SetOnMasterDataSetField(
AValue: TOnMasterDataSetField);
begin
if FOnMasterDataSetField = AValue then Exit;
FOnMasterDataSetField := AValue;
end;
destructor TBaseWizardDialogEditorClass.Destroy;
begin
if FFormWizard <> nil then
FreeAndNil(FFormWizard);
inherited Destroy;
end;
procedure TBaseWizardDialogEditorClass.Show;
begin
FFormWizard.ShowModal;
end;
end.