{ =============================================================================== 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 uEditorObras; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uEditorBase, uEditorGrid, ToolWin, ComCtrls, JvExControls, JvComponent, JvNavigationPane, uViewObras, uBizObra, ActnList, DBActns, uViewGrid, Menus, uDataModuleBase, ImgList, PngImageList, TB2Dock, TB2Toolbar, TBX, TB2Item, StdActns, TB2ExtItems, TBXExtItems, TB2MRU, DB, uDADataTable, uCustomView, uViewBase, uViewBarraSeleccion, StdCtrls, dxLayoutLookAndFeels, JvAppStorage, JvAppRegistryStorage, JvFormPlacement, ExtCtrls, JvComponentBase, dxLayoutControl, cxControls, uViewProyectosObra, cxSplitter; type IEditorObras = interface(IEditorGrid) ['{B011F957-6251-4425-A950-15DC49DEB563}'] function GetObras: IBizObra; procedure SetObras(const Value: IBizObra); property Obras: IBizObra read GetObras write SetObras; end; TfEditorObras = class(TfEditorGrid, IEditorObras) N3: TMenuItem; PopupMenu1: TPopupMenu; frViewProyectosObra: TfrViewProyectosObra; paginas: TPageControl; pagProyectos: TTabSheet; frViewObras: TfrViewObras; Splitter1: TSplitter; procedure actEliminarExecute(Sender: TObject); procedure actModificarExecute(Sender: TObject); procedure actNuevoExecute(Sender: TObject); procedure FormShow(Sender: TObject); procedure frViewProyectosObraactAnadirExecute(Sender: TObject); procedure frViewProyectosObraactAnadirUpdate(Sender: TObject); procedure frViewProyectosObraactModificarExecute(Sender: TObject); procedure frViewProyectosObraactEliminarExecute(Sender: TObject); procedure frViewProyectosObracxGridViewDataControllerDataChanged(Sender: TObject); procedure frViewProyectosObraactEliminarTodoExecute(Sender: TObject); private FObras: IBizObra; protected function GetObras: IBizObra; virtual; procedure SetObras(const Value: IBizObra); virtual; procedure SetViewGrid(const Value: IViewGrid); override; procedure DblClickAction(Sender: TObject); public property Obras: IBizObra read GetObras write SetObras; constructor Create(AOwner: TComponent); override; destructor Destroy; override; end; implementation uses uCustomEditor, uDataModuleObras, LiteralesObras; {$R *.dfm} { ****************************** TfEditorObras ******************************* } procedure TfEditorObras.actEliminarExecute(Sender: TObject); begin if (MessageDlg(msgLitBorrar, mtConfirmation, [mbYes, mbNo], 0) = mrYes) then begin inherited; ViewGrid.RefreshGrid; end; end; procedure TfEditorObras.actModificarExecute(Sender: TObject); begin inherited; Obras.Show; ViewGrid.RefreshGrid; ViewGrid.SyncFocusedRecordsFromDataSet; end; procedure TfEditorObras.actNuevoExecute(Sender: TObject); begin inherited; Obras.Insert; Obras.Show; ViewGrid.RefreshGrid; ViewGrid.SyncFocusedRecordsFromDataSet; end; procedure TfEditorObras.FormShow(Sender: TObject); begin inherited; if not Assigned(ViewGrid) then raise Exception.Create('No hay ninguna vista asignada'); if not Assigned(Obras) then raise Exception.Create('No hay ningún obra asignado'); if not Obras.DataTable.Active then Obras.DataTable.Active := True; end; function TfEditorObras.GetObras: IBizObra; begin Result := FObras; end; procedure TfEditorObras.SetObras(const Value: IBizObra); begin FObras := Value; dsDataTable.DataTable := FObras.DataTable; if Assigned(ViewGrid) then begin (ViewGrid as IViewObras).Obras := Obras; frViewProyectosObra.DADataSource.DataTable := FObras.Proyectos.DataTable; end end; destructor TfEditorObras.Destroy; begin FObras := NIL; inherited; end; constructor TfEditorObras.Create(AOwner: TComponent); begin inherited; ViewGrid := frViewObras; end; procedure TfEditorObras.SetViewGrid(const Value: IViewGrid); begin inherited; if Assigned(ViewGrid) and Assigned(Obras) then begin (ViewGrid as IViewObras).Obras := Obras; end; end; procedure TfEditorObras.DblClickAction(Sender: TObject); begin actModificar.Execute; end; procedure TfEditorObras.frViewProyectosObraactAnadirExecute(Sender: TObject); begin inherited; FObras.Proyectos.Insert; FObras.Proyectos.Show; ViewGrid.RefreshGrid; ViewGrid.SyncFocusedRecordsFromDataSet; end; procedure TfEditorObras.frViewProyectosObraactModificarExecute(Sender: TObject); begin ViewGrid.SyncFocusedRecordsFromGrid; FObras.Proyectos.Show; ViewGrid.RefreshGrid; ViewGrid.SyncFocusedRecordsFromDataSet; end; procedure TfEditorObras.frViewProyectosObraactEliminarExecute(Sender: TObject); begin if (MessageDlg(msgLitBorrarProyecto, mtConfirmation, [mbYes, mbNo], 0) = mrYes) then begin FObras.Proyectos.Delete; FObras.Proyectos.DataTable.ApplyUpdates; end; end; procedure TfEditorObras.frViewProyectosObraactAnadirUpdate(Sender: TObject); begin inherited; if Assigned(dsDataTable.DataTable) then (Sender as TAction).Enabled := not dsDataTable.DataTable.IsEmpty else (Sender as TAction).Enabled := False; end; procedure TfEditorObras.frViewProyectosObracxGridViewDataControllerDataChanged(Sender: TObject); begin inherited; if Assigned(FObras) and (not (FObras.DataTable.Fetching) or not (FObras.DataTable.Opening) or not (FObras.DataTable.Closing)) then frViewProyectosObra.JvNavPanelHeader.Caption := msgLitListaProyectos + Obras.NOMBRE; end; procedure TfEditorObras.frViewProyectosObraactEliminarTodoExecute(Sender: TObject); begin inherited; if (MessageDlg(msgLitBorrarTProyecto, mtConfirmation, [mbYes, mbNo], 0) = mrYes) then begin Obras.Proyectos.DataTable.ClearRows; Obras.Proyectos.DataTable.ApplyUpdates; end; end; end.