{ =============================================================================== Copyright (©) 2006. Rodax Software. =============================================================================== Los contenidos de este fichero son propiedad de Rodax Software titular del copyright. Este fichero sólo podrá ser copiado, distribuido y utilizado, en su totalidad o en parte, con el permiso escrito de Rodax Software, o de acuerdo con los términos y condiciones establecidas en el acuerdo/contrato bajo el que se suministra. ----------------------------------------------------------------------------- Web: www.rodax-software.com =============================================================================== Fecha primera versión: 22-05-2006 Versión actual: 1.0.0 Fecha versión actual: 22-05-2006 =============================================================================== Modificaciones: Fecha Comentarios --------------------------------------------------------------------------- =============================================================================== } unit uEditorProyectoObra; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uEditorDBItem, dxLayoutLookAndFeels, DB, uDADataTable, JvAppStorage, JvAppRegistryStorage, JvComponentBase, JvFormPlacement, ImgList, PngImageList, StdActns, ActnList, ComCtrls, TBX, TB2Item, TB2Dock, TB2Toolbar, ExtCtrls, JvExControls, JvComponent, JvNavigationPane, uCustomView, uViewBase, uViewProyectoObra, uBizObra, uViewDocumentosAsociados, pngimage; type IEditorProyectoObra = interface(IEditorDBItem) ['{EE12C3A5-99A2-47B1-A662-E3DA7737BCBC}'] end; TfEditorProyectoObra = class(TfEditorDBItem, IEditorProyectoObra) frViewProyectoObra: TfrViewProyectoObra; frViewDocumentosAsociados: TfrViewDocumentosAsociados; //DOCUMENTOS ASOCIADOS procedure frViewProyectoObraedtDescripcionPropertiesValidate( Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean); procedure dsDataTableDataChange(Sender: TObject; Field: TField); private FProyectoObra: IBizProyectosObra; function GetProyectoObra: IBizProyectosObra; procedure SetProyectoObra(const Value: IBizProyectosObra); protected //DOCUMENTOS ASOCIADOS FViewDocumentosPresupuesto : IViewDocumentosAsociados; function GetViewDocumentosPresupuesto: IViewDocumentosAsociados; procedure SetViewDocumentosPresupuesto(const Value: IViewDocumentosAsociados); property ViewDocumentosPresupuesto: IViewDocumentosAsociados read GetViewDocumentosPresupuesto write SetViewDocumentosPresupuesto; public property ProyectoObra: IBizProyectosObra read GetProyectoObra write SetProyectoObra; constructor Create(AOwner: TComponent); override; destructor Destroy; override; end; var fEditorProyectoObra: TfEditorProyectoObra; implementation {$R *.dfm} uses uEditorUtils, uBizDocumentosAsociados, LiteralesObras, cxDBEdit, cxEdit; function ShowEditorProyectoObra (ABizObject : TDADataTableRules) : TModalResult; var AEditor: TfEditorProyectoObra; begin AEditor := TfEditorProyectoObra.Create(Application); try AEditor.ProyectoObra := (ABizObject as IBizProyectosObra); Result := AEditor.ShowModal; finally AEditor.Release; end; end; { TfEditorProyectoObra } constructor TfEditorProyectoObra.Create(AOwner: TComponent); begin inherited; //DOCUMENTOS ASOCIADOS ViewDocumentosPresupuesto := frViewDocumentosAsociados; end; destructor TfEditorProyectoObra.Destroy; begin //DOCUMENTOS ASOCIADOS FViewDocumentosPresupuesto := NIL; inherited; end; function TfEditorProyectoObra.GetProyectoObra: IBizProyectosObra; begin Result := FProyectoObra; end; function TfEditorProyectoObra.GetViewDocumentosPresupuesto: IViewDocumentosAsociados; begin Result := FViewDocumentosPresupuesto; end; procedure TfEditorProyectoObra.SetProyectoObra(const Value: IBizProyectosObra); begin FProyectoObra := Value; if Assigned(FProyectoObra) then begin dsDataTable.DataTable := FProyectoObra.DataTable; frViewProyectoObra.ProyectoObra := FProyectoObra; //DOCUMENTOS ASOCIADOS if Assigned(FViewDocumentosPresupuesto) then begin if (ProyectoObra.Obra.ALMACEN = CTE_ALMACEN_ANTIGUO) then FViewDocumentosPresupuesto.GestorDocumentos := (ProyectoObra as IBizDocumentosAsociados).GestorDocumentos else FViewDocumentosPresupuesto.GestorDocumentos := (ProyectoObra as IBizDocumentosAsociados).GestorDocumentosNuevo; FViewDocumentosPresupuesto.GestorDocumentos.ModoInsert := (ProyectoObra.DataTable.State = dsInsert); end; end else begin dsDataTable.DataTable := Nil; frViewProyectoObra.ProyectoObra := Nil; end; end; procedure TfEditorProyectoObra.SetViewDocumentosPresupuesto(const Value: IViewDocumentosAsociados); begin FViewDocumentosPresupuesto := Value; if Assigned(FViewDocumentosPresupuesto) and Assigned(ProyectoObra) then begin if (ProyectoObra.Obra.ALMACEN = CTE_ALMACEN_ANTIGUO) then FViewDocumentosPresupuesto.GestorDocumentos := (ProyectoObra as IBizDocumentosASociados).GestorDocumentos else FViewDocumentosPresupuesto.GestorDocumentos := (ProyectoObra as IBizDocumentosASociados).GestorDocumentosNuevo end; end; procedure TfEditorProyectoObra.frViewProyectoObraedtDescripcionPropertiesValidate( Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean); begin inherited; //Si cambia el nombre del proyecto debe cambiar el nombre del directorio raiz de la estructura if (frViewProyectoObra.edtDescripcion.EditValue <> DisplayValue) then begin frViewDocumentosAsociados.DeshabilitarDocumentos; if Length(DisplayValue)=0 then begin Error := True; ErrorText := msgLitNombreProObligatorio; DisplayValue := frViewProyectoObra.edtDescripcion.EditValue; end else begin try frViewDocumentosAsociados.GestorDocumentos.Directorio := DisplayValue; except on E: Exception do begin Error := True; ErrorText := E.Message; DisplayValue := frViewProyectoObra.edtDescripcion.EditValue; end; end; end; frViewDocumentosAsociados.HabilitarDocumentos; frViewDocumentosAsociados.refrescarTree; end; end; procedure TfEditorProyectoObra.dsDataTableDataChange(Sender: TObject; Field: TField); begin inherited; if Assigned(FProyectoObra) and (not (FProyectoObra.DataTable.Fetching) or not (FProyectoObra.DataTable.Opening) or not (FProyectoObra.DataTable.Closing)) then begin if Length(FProyectoObra.DESCRIPCION) = 0 then JvNavPanelHeader.Caption := msgLitProyectoNuv else JvNavPanelHeader.Caption := msgProyectos + FProyectoObra.DESCRIPCION; Self.Caption := JvNavPanelHeader.Caption; end; end; initialization RegisterEditor(IBizProyectosObra, ShowEditorProyectoObra, etItem); end.