unit uEditorPresupuesto; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uEditorItem, ImgList, PngImageList, StdActns, ActnList, TBX, TB2Item, TB2Dock, TB2Toolbar, ComCtrls, JvExControls, JvComponent, JvNavigationPane, uEditorDBItem, DB, uDADataTable, uBizPresupuestosCliente, uViewPresupuesto, uCustomView, uViewBase, uViewTotales, uViewGrid, uViewContenido, TBXDkPanels, ExtCtrls, uDAScriptingProvider, uDACDSDataTable, uViewMensaje, JvAppStorage, JvAppRegistryStorage, JvFormPlacement, uViewDetallesPresupuesto, pngimage, StdCtrls, Mask, DBCtrls, uViewDetallesFamilias, uViewDocumentosAsociados, uBizDocumentosAsociados, JvComponentBase; type IEditorPresupuesto = interface(IEditorDBItem) ['{E06BB9E1-A95D-4983-B08D-6E1719C48D91}'] function GetPresupuesto: IBizPresupuestos; procedure SetPresupuesto(const Value: IBizPresupuestos); property Presupuesto: IBizPresupuestos read GetPresupuesto write SetPresupuesto; end; TfEditorPresupuesto = class(TfEditorDBItem, IEditorPresupuesto) pagContenido: TTabSheet; pagPlanos: TTabSheet; frViewDetallesPresupuesto1: TfrViewDetallesPresupuesto; frViewTotales1: TfrViewTotales; frViewPresupuesto1: TfrViewPresupuesto; procedure FormShow(Sender: TObject); procedure actEliminarExecute(Sender: TObject); procedure frViewClientePresupuesto1edtlNombrePropertiesChange( Sender: TObject); private FPresupuesto : IBizPresupuestos; FViewPresupuesto : IViewPresupuesto; FViewDocumentosPresupuesto : IViewDocumentosAsociados; protected function GetPresupuesto: IBizPresupuestos; procedure SetPresupuesto(const Value: IBizPresupuestos); function GetViewPresupuesto: IViewPresupuesto; procedure SetViewPresupuesto(const Value: IViewPresupuesto); property ViewPresupuesto: IViewPresupuesto read GetViewPresupuesto write SetViewPresupuesto; //DOCUMENTOS ASOCIADOS { function GetViewDocumentosPresupuesto: IViewDocumentosAsociados; procedure SetViewDocumentosPresupuesto(const Value: IViewDocumentosAsociados); property ViewDocumentosPresupuesto: IViewDocumentosAsociados read GetViewDocumentosPresupuesto write SetViewDocumentosPresupuesto; } public property Presupuesto: IBizPresupuestos read GetPresupuesto write SetPresupuesto; constructor Create(AOwner: TComponent); override; destructor Destroy; override; end; implementation {$R *.dfm} uses uEditorUtils; function ShowEditorPresupuesto (ABizObject : TDADataTableRules) : TModalResult; var AEditor: TfEditorPresupuesto; begin AEditor := TfEditorPresupuesto.Create(Application); try AEditor.Presupuesto := (ABizObject as IBizPresupuestos); Result := AEditor.ShowModal; finally AEditor.Release; end; end; { TfEditorPresupuesto } function TfEditorPresupuesto.GetPresupuesto: IBizPresupuestos; begin Result := FPresupuesto; end; function TfEditorPresupuesto.GetViewPresupuesto: IViewPresupuesto; begin Result := FViewPresupuesto; end; procedure TfEditorPresupuesto.SetPresupuesto(const Value: IBizPresupuestos); begin FPresupuesto := Value; if Assigned(FPresupuesto) then begin dsDataTable.DataTable := FPresupuesto.DataTable; frViewTotales1.DADataSource.DataTable := FPresupuesto.DataTable; frViewDetallesPresupuesto1.DADataSource.DataTable := FPresupuesto.Detalles.DataTable; if Assigned(FViewPresupuesto) then FViewPresupuesto.Presupuesto := Presupuesto; //DOCUMENTOS ASOCIADOS { if Assigned(FViewDocumentosPresupuesto) then begin FViewDocumentosPresupuesto.GestorDocumentos := (Presupuesto as IBizDocumentosAsociados).GestorDocumentos; FViewDocumentosPresupuesto.GestorDocumentos.ModoInsert := (Presupuesto.DataTable.State = dsInsert); end;} end; end; procedure TfEditorPresupuesto.SetViewPresupuesto( const Value: IViewPresupuesto); begin FViewPresupuesto := Value; if Assigned(FViewPresupuesto) and Assigned(Presupuesto) then FViewPresupuesto.Presupuesto := Presupuesto; end; procedure TfEditorPresupuesto.FormShow(Sender: TObject); begin inherited; if not Assigned(FViewPresupuesto) then raise Exception.Create('No hay ninguna vista asignada'); if not Assigned(Presupuesto) then raise Exception.Create('No hay ningún presupuesto asignado'); Presupuesto.DataTable.Active := True; // FViewPresupuesto.ShowEmbedded(pagGeneral); // FViewPresupuesto.SetFocus; end; constructor TfEditorPresupuesto.Create(AOwner: TComponent); begin inherited; // ViewPresupuesto := CreateView(TfrViewPresupuesto) as IViewPresupuesto; pgPaginas.ActivePageIndex := 0; ViewPresupuesto := frViewPresupuesto1; //DOCUMENTOS ASOCIADOS // ViewDocumentosPresupuesto := frViewDocumentosAsociados; end; destructor TfEditorPresupuesto.Destroy; begin FViewPresupuesto := NIL; FPresupuesto := NIL; //DOCUMENTOS ASOCIADOS // FViewDocumentosPresupuesto := NIL; inherited; end; procedure TfEditorPresupuesto.actEliminarExecute(Sender: TObject); begin if (Application.MessageBox('¿Desea borrar este presupuesto?', 'Atención', MB_YESNO) = IDYES) then inherited; end; procedure TfEditorPresupuesto.frViewClientePresupuesto1edtlNombrePropertiesChange( Sender: TObject); begin inherited; if Length(frViewPresupuesto1.frViewClientePresupuesto1.edtlNombre.Text) = 0 then JvNavPanelHeader.Caption := 'Nuevo presupuesto de cliente' else JvNavPanelHeader.Caption := 'Presupuesto de ' + frViewPresupuesto1.frViewClientePresupuesto1.edtlNombre.Text + ' (' + FPresupuesto.SITUACION + ')'; Caption := JvNavPanelHeader.Caption; end; {function TfEditorPresupuesto.GetViewDocumentosPresupuesto: IViewDocumentosAsociados; begin Result := FViewDocumentosPresupuesto; end; procedure TfEditorPresupuesto.SetViewDocumentosPresupuesto(const Value: IViewDocumentosAsociados); begin FViewDocumentosPresupuesto := Value; if Assigned(FViewDocumentosPresupuesto) and Assigned(Presupuesto) then FViewDocumentosPresupuesto.GestorDocumentos := (Presupuesto as IBizDocumentosASociados).GestorDocumentos; end;} initialization RegisterEditor(IBizPresupuestos, ShowEditorPresupuesto, etItem); finalization end.