{
===============================================================================
  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 uViewTrabajosObra;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, uViewGrid, ComCtrls, ToolWin, StdCtrls, cxStyles, cxCustomData,
  cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData,
  dxPSGlbl, dxPSUtl, dxPSEngn, dxPrnPg, dxBkgnd, dxWrap, dxPrnDev,
  dxPSCompsProvider, dxPSFillPatterns, dxPSEdgePatterns, dxPSCore,
  dxPScxCommon, dxPScxGridLnk, uDADataTable, ActnList, cxGridLevel,
  cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses,
  cxControls, cxGridCustomView, cxGrid, cxGroupBox, cxRadioGroup, cxDBEdit,
  cxSpinEdit, cxContainer, cxTextEdit, cxMaskEdit, cxDropDownEdit, cxCalc,
  cxLabel, dxLayoutControl, uBizObra, uViewBase, uCustomView,
  uViewPresupuestosBase, ImgList, PngImageList;

type
  IViewTrabajosObra = interface(IViewBase)
  ['{87DE9081-B5B7-4F73-B806-FB3FFC8582A4}']
    function GetPresupuestos: IBizPresupuestosObra;
    procedure SetPresupuestos(const Value: IBizPresupuestosObra);
    property Presupuestos: IBizPresupuestosObra read GetPresupuestos write SetPresupuestos;
  end;

  TfrViewTrabajosObra = class(TfrViewBase, IViewTrabajosObra)
    ActionList1: TActionList;
    actEditar: TAction;
    actEliminar: TAction;
    actEliminarTodo: TAction;
    actAnadir: TAction;
    DADataSource: TDADataSource;
    cxStyleRepository1: TcxStyleRepository;
    cxStyleEven: TcxStyle;
    cxStyleOdd: TcxStyle;
    cxStyleSelection: TcxStyle;
    dxPSEngineController1: TdxPSEngineController;
    dxComponentPrinter: TdxComponentPrinter;
    dxComponentPrinterLink: TdxGridReportLink;
    ToolBar1: TToolBar;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    ToolButton4: TToolButton;
    ToolButton3: TToolButton;
    ToolButton5: TToolButton;
    frViewTrabajos: TfrViewPresupuestosBase;
    PngImageList: TPngImageList;
    procedure CustomViewCreate(Sender: TObject);
    procedure CustomViewDestroy(Sender: TObject);

    procedure actEliminarExecute(Sender: TObject);
    procedure actEliminarTodoExecute(Sender: TObject);
    procedure actEliminarUpdate(Sender: TObject);
    procedure actEliminarTodoUpdate(Sender: TObject);
    procedure actEditarUpdate(Sender: TObject);

  private
    FPresupuestos: IBizPresupuestosObra;
    FViewTrabajosObra: IViewGrid;
    function GetPresupuestos: IBizPresupuestosObra;
    procedure SetPresupuestos(const Value: IBizPresupuestosObra);
    function GetGridView(ViewGrid: IViewGrid): TcxCustomGridView;

  public
    property Presupuestos: IBizPresupuestosObra read GetPresupuestos write SetPresupuestos;
  end;

var
  frViewTrabajosObra: TfrViewTrabajosObra;

implementation
{$R *.dfm}

uses LiteralesObras, schObrasClient_Intf;

{ TfrViewTrabajosObra }

function TfrViewTrabajosObra.GetPresupuestos: IBizPresupuestosObra;
begin
  Result := FPresupuestos;
end;

procedure TfrViewTrabajosObra.SetPresupuestos(const Value: IBizPresupuestosObra);
begin
  FPresupuestos := Value;

  if Assigned(FPresupuestos) then
    DADataSource.DataTable := FPresupuestos.DataTable
  else
    DADataSource.DataTable := Nil;
end;

procedure TfrViewTrabajosObra.CustomViewCreate(Sender: TObject);
var
  ColumnaClase: TcxGridDBColumn;
begin
  inherited;

  FViewTrabajosObra := frViewTrabajos;
  ColumnaClase := (GetGridView(FViewTrabajosObra) as TcxGridDBTableView).GetColumnByFieldName(fld_PresupuestosObraCLASE);
  with GetGridView(FViewTrabajosObra).DataController.Filter do
  begin
    BeginUpdate;
    Clear;
    Root.AddItem(ColumnaClase, foEqual, CLASE_TRABAJO, CLASE_TRABAJO);
    EndUpdate;
  end;
end;

procedure TfrViewTrabajosObra.actEliminarUpdate(Sender: TObject);
begin
  inherited;
  (Sender as TAction).Enabled := ((GetGridView(FViewTrabajosObra).DataController.FocusedRowIndex <> -1) AND (GetGridView(FViewTrabajosObra).DataController.FilteredRecordCount > 0));
end;

procedure TfrViewTrabajosObra.actEliminarTodoUpdate(Sender: TObject);
begin
  inherited;
  (Sender as TAction).Enabled := ((GetGridView(FViewTrabajosObra).DataController.FocusedRowIndex <> -1) AND (GetGridView(FViewTrabajosObra).DataController.FilteredRecordCount > 0));
end;

function TfrViewTrabajosObra.GetGridView(ViewGrid: IViewGrid): TcxCustomGridView;
begin
  if (ViewGrid.Grid.ViewCount > 0)
  then Result := ViewGrid.Grid.ActiveView
  else raise Exception.Create('El grid no tiene vistas');
end;

procedure TfrViewTrabajosObra.actEliminarExecute(Sender: TObject);
begin
  inherited;
  if (MessageDlg(msgLitBorrarPO, mtConfirmation, [mbYes, mbNo], 0) = mrYes) then
     GetGridView(FViewTrabajosObra).DataController.DeleteSelection;
end;

procedure TfrViewTrabajosObra.actEliminarTodoExecute(Sender: TObject);
var
  i: Integer;
begin
  if (MessageDlg(msgLitBorrarTPO, mtConfirmation, [mbYes, mbNo], 0) = mrYes) then
     for i:=0 to GetGridView(FViewTrabajosObra).DataController.FilteredRecordCount - 1 do
         GetGridView(FViewTrabajosObra).DataController.DeleteSelection;
end;

procedure TfrViewTrabajosObra.CustomViewDestroy(Sender: TObject);
begin
  FViewTrabajosObra := Nil;
  inherited;
end;

procedure TfrViewTrabajosObra.actEditarUpdate(Sender: TObject);
begin
  inherited;
  (Sender as TAction).Enabled := ((GetGridView(FViewTrabajosObra).DataController.FocusedRowIndex <> -1) AND (GetGridView(FViewTrabajosObra).DataController.FilteredRecordCount > 0));
end;

end.
