unit uEditorMontaje; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uEditorDBItem, DB, uDADataTable, JvAppStorage, JvAppRegistryStorage, JvComponent, JvFormPlacement, ImgList, PngImageList, StdActns, ActnList, ComCtrls, TBX, TB2Item, TB2Dock, TB2Toolbar, ExtCtrls, JvExControls, JvNavigationPane, uViewMontaje, uCustomView, uViewBase, uViewTotales, StdCtrls, pngimage, AppEvnts, JvComponentBase, uBizMontajes, uIEditorMontaje, uMontajesController, dxLayoutLookAndFeels, JvExComCtrls, JvStatusBar; type TfEditorMontaje = class(TfEditorDBItem, IEditorMontaje) TBXSubmenuItem2: TTBXSubmenuItem; TBXItem33: TTBXItem; dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList; dxLayoutOfficeLookAndFeel1: TdxLayoutOfficeLookAndFeel; procedure FormShow(Sender: TObject); procedure actGuardarExecute(Sender: TObject); procedure actEliminarExecute(Sender: TObject); procedure frViewMontaje1edtlNombrePropertiesEditValueChanged( Sender: TObject); procedure dsDataTableDataChange(Sender: TObject; Field: TField); procedure CustomEditorClose(Sender: TObject; var Action: TCloseAction); procedure actPrevisualizarExecute(Sender: TObject); procedure actImprimirExecute(Sender: TObject); procedure frViewMontajeedtlNombrePropertiesChange(Sender: TObject); protected FController : IMontajesController; FMontaje: IBizMontaje; FViewMontaje: IViewMontaje; function GetController : IMontajesController; procedure SetController (const Value : IMontajesController); virtual; function GetMontaje: IBizMontaje; procedure SetMontaje(const Value: IBizMontaje); virtual; function GetViewMontaje: IViewMontaje; procedure SetViewMontaje(const Value: IViewMontaje); property ViewMontaje: IViewMontaje read GetViewMontaje write SetViewMontaje; procedure OnClienteChanged(Sender : TObject); //Si queremos crear otra vista para el editor heredado solo tendriamos que //sobreescribir este metodo procedure AsignarVista; virtual; public procedure PonerTitulos(const ATitulo: string = ''); override; property Controller : IMontajesController read GetController write SetController; property Montaje: IBizMontaje read GetMontaje write SetMontaje; constructor Create(AOwner: TComponent); override; destructor Destroy; override; end; implementation {$R *.dfm} uses cxDBEdit, uBizContactos, uDataModuleUsuarios; { TfEditorMontaje } { **************************** TfEditorMontaje **************************** } constructor TfEditorMontaje.Create(AOwner: TComponent); begin inherited; pgPaginas.ActivePageIndex := 0; AsignarVista; end; procedure TfEditorMontaje.CustomEditorClose(Sender: TObject; var Action: TCloseAction); begin inherited; dsDataTable.DataTable := NIL; FViewMontaje := NIL; FMontaje := NIL; end; destructor TfEditorMontaje.Destroy; begin // Utilizar mejor OnClose; inherited; end; procedure TfEditorMontaje.dsDataTableDataChange(Sender: TObject; Field: TField); begin inherited; if Assigned(FMontaje) and (not (FMontaje.DataTable.Fetching) or not (FMontaje.DataTable.Opening) or not (FMontaje.DataTable.Closing)) then PonerTitulos; end; procedure TfEditorMontaje.actEliminarExecute(Sender: TObject); begin if (Application.MessageBox('¿Desea borrar este montaje de cliente?', 'Atención', MB_YESNO) = IDYES) then begin FController.Eliminar(Montaje); inherited; end; end; procedure TfEditorMontaje.actGuardarExecute(Sender: TObject); begin inherited; FController.Guardar(FMontaje); Modified := False; end; procedure TfEditorMontaje.actImprimirExecute(Sender: TObject); begin inherited; // FController.Print(FMontaje); end; procedure TfEditorMontaje.actPrevisualizarExecute(Sender: TObject); begin inherited; // FController.Preview(FMontaje); end; procedure TfEditorMontaje.AsignarVista; var AViewMontaje: TfrViewMontaje; begin AViewMontaje := TfrViewMontaje.create(Self); with AViewMontaje do begin Parent := pagGeneral; Align := alClient; dxLayoutControlMontaje.LookAndFeel := dxLayoutOfficeLookAndFeel1; end; ViewMontaje := AViewMontaje; end; procedure TfEditorMontaje.FormShow(Sender: TObject); begin inherited; if not Assigned(FViewMontaje) then raise Exception.Create('No hay ninguna vista asignada'); if not Assigned(Montaje) then raise Exception.Create('No hay ningún albarán asignado'); Montaje.DataTable.Active := True; end; procedure TfEditorMontaje.frViewMontaje1edtlNombrePropertiesEditValueChanged(Sender: TObject); begin inherited; with (Sender as TcxDBTextEdit) do Enabled := (FMontaje.ID <> 0) end; procedure TfEditorMontaje.frViewMontajeedtlNombrePropertiesChange( Sender: TObject); begin inherited; PonerTitulos; end; function TfEditorMontaje.GetController: IMontajesController; begin Result := FController; end; function TfEditorMontaje.GetMontaje: IBizMontaje; begin Result := FMontaje; end; function TfEditorMontaje.GetViewMontaje: IViewMontaje; begin Result := FViewMontaje; end; procedure TfEditorMontaje.OnClienteChanged(Sender: TObject); begin FMontaje.Cliente := ViewMontaje.ViewClienteMontaje.Cliente; end; procedure TfEditorMontaje.PonerTitulos(const ATitulo: string); var FTitulo : String; begin FTitulo := ATitulo; if (FTitulo = '') and Assigned(Montaje) then begin if Montaje.EsNuevo then FTitulo := 'Nueva Montaje' else FTitulo := 'Montaje' + ' - ' + FMontaje.Cliente.Nombre end; inherited PonerTitulos(FTitulo); Self.Caption := FTitulo + ' (' + dmUsuarios.EmpresaActual.NOMBRE + ')'; end; procedure TfEditorMontaje.SetController(const Value: IMontajesController); begin FController := Value; if Assigned(FController) then ViewMontaje.ViewClienteMontaje.Controller := Controller.ClienteController; end; procedure TfEditorMontaje.SetMontaje(const Value: IBizMontaje); begin FMontaje := Value; if Assigned(FMontaje) then begin dsDataTable.DataTable := FMontaje.DataTable; if Assigned(FViewMontaje) then begin ViewMontaje.ViewClienteMontaje.Cliente := FMontaje.Cliente; ViewMontaje.ViewClienteMontaje.OnClienteChanged := OnClienteChanged; FViewMontaje.Montaje := FMontaje; end; Montaje.DataTable.Active := True; end; end; procedure TfEditorMontaje.SetViewMontaje(const Value: IViewMontaje); begin FViewMontaje := Value; if Assigned(FViewMontaje) and Assigned(Montaje) then FViewMontaje.Montaje := Montaje; end; end.