Tecsitel_FactuGES2/Source/Modulos/Almacenes/Views/uEditorAlmacen.pas
2007-11-19 19:13:37 +00:00

205 lines
5.5 KiB
ObjectPascal
Raw Blame History

unit uEditorAlmacen;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uEditorDBItem, ToolWin, ComCtrls, JvExControls, JvComponent,
uViewAlmacen, uBizAlmacenes, JvNavigationPane, ActnList,
uEditorBase, StdActns, TB2Dock, TB2Toolbar, TBX, ImgList, PngImageList,
TB2Item, uEditorItem, DB, uDADataTable, uEditorDBBase, JvFormAutoSize,
uDAScriptingProvider, uDACDSDataTable, StdCtrls, pngimage, ExtCtrls,
TBXDkPanels, JvButton, AppEvnts, uCustomView, uViewBase,
JvAppStorage, JvAppRegistryStorage, JvFormPlacement, JvComponentBase,
uViewAlmacenes, uIEditorAlmacen, uAlmacenesController, JvExComCtrls,
JvStatusBar, dxLayoutLookAndFeels, uDAInterfaces;
type
TfEditorAlmacen = class(TfEditorDBItem, IEditorAlmacen)
dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList;
dxLayoutOfficeLookAndFeel1: TdxLayoutOfficeLookAndFeel;
procedure FormShow(Sender: TObject);
procedure dsDataTableDataChange(Sender: TObject; Field: TField);
procedure CustomEditorClose(Sender: TObject; var Action: TCloseAction);
protected
FController : IAlmacenesController;
FAlmacen: IBizAlmacen;
FViewAlmacen : IViewAlmacen;
function GetController : IAlmacenesController;
procedure SetController (const Value : IAlmacenesController); virtual;
function GetAlmacen: IBizAlmacen; virtual;
procedure SetAlmacen(const Value: IBizAlmacen); virtual;
function GetViewAlmacen: IViewAlmacen;
procedure SetViewAlmacen(const Value: IViewAlmacen);
property ViewAlmacen: IViewAlmacen read GetViewAlmacen write SetViewAlmacen;
procedure GuardarInterno; override;
procedure EliminarInterno; override;
procedure PonerTitulos(const ATitulo: string = ''); override;
//Si queremos crear otra vista para el editor heredado solo tendriamos que
//sobreescribir este metodo
procedure AsignarVista; virtual;
public
property Almacen: IBizAlmacen read GetAlmacen write SetAlmacen;
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
end;
implementation
{$R *.dfm}
uses
uCustomEditor, uDataModuleAlmacenes, uDataModuleBase;
function ShowEditorAlmacen (ABizObject : TDADataTableRules): TModalResult;
var
AEditor: TfEditorAlmacen;
begin
AEditor := TfEditorAlmacen.Create(Application);
try
AEditor.Almacen := (ABizObject as IBizAlmacen);
Result := AEditor.ShowModal;
finally
AEditor.Release;
end;
end;
{
******************************* TfEditorAlmacen *******************************
}
function TfEditorAlmacen.GetAlmacen: IBizAlmacen;
begin
Result := FAlmacen;
end;
function TfEditorAlmacen.GetController: IAlmacenesController;
begin
Result := FController;
end;
function TfEditorAlmacen.GetViewAlmacen: IViewAlmacen;
begin
Result := FViewAlmacen;
end;
procedure TfEditorAlmacen.GuardarInterno;
begin
inherited;
FController.Guardar(FAlmacen);
Modified := False;
end;
procedure TfEditorAlmacen.PonerTitulos(const ATitulo: string);
var
FTitulo : String;
begin
if Assigned(Almacen) then
begin
if Almacen.EsNuevo then
FTitulo := 'Nuevo almac<61>n'
else
FTitulo := 'Almac<61>n' + ' - ' + Almacen.NOMBRE;
end;
inherited PonerTitulos(FTitulo);
end;
procedure TfEditorAlmacen.SetAlmacen(const Value: IBizAlmacen);
begin
FAlmacen := Value;
dsDataTable.DataTable := FAlmacen.DataTable;
if Assigned(FViewAlmacen) and Assigned(Almacen) then
FViewAlmacen.Almacen := Almacen;
end;
procedure TfEditorAlmacen.SetController(const Value: IAlmacenesController);
begin
FController := Value;
end;
procedure TfEditorAlmacen.SetViewAlmacen(const Value: IViewAlmacen);
begin
FViewAlmacen := Value;
if Assigned(FViewAlmacen) and Assigned(Almacen) then
FViewAlmacen.Almacen := Almacen;
end;
procedure TfEditorAlmacen.FormShow(Sender: TObject);
begin
inherited;
if not Assigned(FViewAlmacen) then
raise Exception.Create('No hay ninguna vista asignada');
if not Assigned(Almacen) then
raise Exception.Create('No hay ning<6E>n almac<61>n asignado');
Almacen.DataTable.Active := True;
end;
destructor TfEditorAlmacen.Destroy;
begin
// Utilizar mejor OnClose;
inherited;
end;
procedure TfEditorAlmacen.AsignarVista;
var
AViewAlmacen: TfrViewAlmacen;
begin
AViewAlmacen := TfrViewAlmacen.create(Self);
with AViewAlmacen do
begin
Parent := pagGeneral;
Align := alClient;
dxLayoutControlAlmacen.LookAndFeel := dxLayoutOfficeLookAndFeel1;
end;
ViewAlmacen := AViewAlmacen;
end;
constructor TfEditorAlmacen.Create(AOwner: TComponent);
begin
inherited;
pgPaginas.ActivePageIndex := 0;
AsignarVista;
end;
procedure TfEditorAlmacen.CustomEditorClose(Sender: TObject;
var Action: TCloseAction);
begin
inherited;
dsDataTable.DataTable := NIL;
FViewAlmacen := NIL;
FAlmacen := NIL;
end;
procedure TfEditorAlmacen.dsDataTableDataChange(Sender: TObject;
Field: TField);
begin
inherited;
if Assigned(FAlmacen) and (not (FAlmacen.DataTable.Fetching) or
not (FAlmacen.DataTable.Opening) or not (FAlmacen.DataTable.Closing)) then
PonerTitulos;
end;
procedure TfEditorAlmacen.EliminarInterno;
begin
if (Application.MessageBox('<27>Desea borrar este almacen?', 'Atenci<63>n', MB_YESNO) = IDYES) then
begin
inherited;
if not FController.Eliminar(FAlmacen) then
actRefrescar.Execute;
end;
end;
end.