{
===============================================================================
  Copyright (©) 2002. 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: 05-12-2002
  Versión actual: 1.0.0
  Fecha versión actual: 05-12-2002
===============================================================================
  Modificaciones:

    Fecha         Comentarios
    ---------------------------------------------------------------------------
===============================================================================
}

unit Instaladores;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Db, DBTables, Grids, DBGrids, ComCtrls, IBDatabase, ToolWin, ExtCtrls,
  IBCustomDataSet, IBQuery, RXDBCtrl, RdxPaneles, RdxBarras,
  RdxBotones, Mensajes, RdxFrameInstaladores, Configuracion,
  cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxEdit, cxDBData,
  cxGridLevel, cxClasses,
  cxControls, cxGridCustomView, cxGridCustomTableView, cxGridTableView,
  cxGridDBTableView, cxGrid, RdxFrame, Menus, am2000menuitem,
  am2000popupmenu, am2000, StdCtrls, AdvPanel, ActnList, am2000utils, cxDataStorage,
  cxContainer, cxTextEdit;

type
  TfrInstaladores = class(TRdxFrameInstaladores)
    brSeleccion: TRdxBarraInferior;
    bSeleccionar: TRdxBoton;
    bCancelar: TRdxBoton;
    dsInstaladores: TDataSource;
    BarraSuperior: TRdxBarraSuperior;
    bConsultar: TRdxBotonSuperior;
    bEliminar: TRdxBotonSuperior;
    bModificar: TRdxBotonSuperior;
    bAnadir: TRdxBotonSuperior;
    gridInstaladores: TcxGrid;
    gridInstaladoresDBTableView1: TcxGridDBTableView;
    gridInstaladoresLevel1: TcxGridLevel;
    MenuOpciones: TPopupMenu2000;
    mnuAnadir: TMenuItem2000;
    mnuModificar: TMenuItem2000;
    mnuEliminar: TMenuItem2000;
    mnuConsultar: TMenuItem2000;
    pnlCuerpo: TPanel;
    Acciones: TActionList;
    actAnadir: TAction;
    actModificar: TAction;
    actEliminar: TAction;
    actConsultar: TAction;
    actSeleccionar: TAction;
    actCancelar: TAction;
    imgSombra: TImage;
    Panel1: TPanel;
    eNombre: TLabel;
    Buscar: TcxTextEdit;
    bLimpiar: TRdxBoton;
    procedure gridInstaladoresRefreshButton(Sender: TObject);
    procedure RdxFrameInstaladoresShow(Sender: TObject);
    procedure bLimpiarClick(Sender: TObject);
    procedure actAnadirExecute(Sender: TObject);
    procedure actModificarExecute(Sender: TObject);
    procedure actEliminarExecute(Sender: TObject);
    procedure actConsultarExecute(Sender: TObject);
    procedure actSeleccionarExecute(Sender: TObject);
    procedure actCancelarExecute(Sender: TObject);
    procedure gridInstaladoresDBTableView1DblClick(Sender: TObject);
    procedure BuscarPropertiesChange(Sender: TObject);
  private
    procedure ActualizarBotones;
  protected
    procedure BuscarInstalador; override;
    procedure FreeContenido; override;
  public
    constructor Create (AOwner : TComponent); override;
    destructor Destroy; override;
  published
    property TablaInstaladores;
    property Entidad;
  end;

var
  frInstaladores: TfrInstaladores;

implementation

{$R *.DFM}

uses
  Variants, BaseDatos, Entidades, TablaInstaladores, Instalador;

constructor TfrInstaladores.Create (AOwner : TComponent);
begin
  inherited Create(AOwner);
  Entidad := entInstalador;

  BaseDatos := dmBaseDatos.BD;
  Transaccion := dmBaseDatos.Transaccion;
  TablaInstaladores := TIBDataSet.Create(Self);
  dsInstaladores.DataSet := TablaInstaladores;

  with TablaInstaladores do
  begin
    DisableControls;
    Database := BaseDatos;
    Transaction := Transaccion;
    SelectSQL.Assign(dmTablaInstaladores.sqlGrid);
    Prepare;
    Open;
    ActualizarBotones;
    EnableControls;
  end;

  dmTablaInstaladores.InicializarGridInstaladores(gridInstaladoresDBTableView1);
  gridInstaladoresDBTableView1.Controller.GoToFirst;
end;

destructor TfrInstaladores.Destroy;
begin
  TablaInstaladores.Close;
  TablaInstaladores.UnPrepare;
  TablaInstaladores.Free;
  inherited;
end;

procedure TfrInstaladores.BuscarInstalador;
begin
  with TablaInstaladores do
  begin
    DisableControls;
    Close;
    Open;
    ActualizarBotones;

    EnableControls;
    if not Locate('CODIGO', CodigoInstalador, []) then
      gridInstaladoresDBTableView1.Controller.GoToFirst
    else
      gridInstaladoresDBTableView1.Controller.TopRowIndex := gridInstaladoresDBTableView1.Controller.FocusedRowIndex;
  end;
end;

procedure TfrInstaladores.FreeContenido;
begin
  if (Contenido is TRdxFrameInstaladores) then
    CodigoInstalador := (Contenido as TRdxFrameInstaladores).CodigoInstalador;
  inherited FreeContenido;
  gridInstaladores.SetFocus;
end;

procedure TfrInstaladores.ActualizarBotones;
begin
  if BaseDatos.IsReadOnly then
  begin
    actAnadir.Enabled := False;
    actModificar.Enabled := False;
    actEliminar.Enabled := False;
    actConsultar.Enabled := True;
    Exit;
  end;

  if TablaInstaladores.RecordCount = 0 then begin
    actAnadir.Enabled := True;
    actModificar.Enabled := False;
    actEliminar.Enabled := False;
    actConsultar.Enabled := False;
  end
  else begin
    actAnadir.Enabled := True;
    actModificar.Enabled := True;
    actEliminar.Enabled := True;
    actConsultar.Enabled := True;
  end;
end;

procedure TfrInstaladores.gridInstaladoresRefreshButton(Sender: TObject);
begin
  BuscarInstalador;
end;

procedure TfrInstaladores.RdxFrameInstaladoresShow(Sender: TObject);
begin
  gridInstaladores.SetFocus
end;

procedure TfrInstaladores.bLimpiarClick(Sender: TObject);
begin
  Buscar.Text := '';
end;

procedure TfrInstaladores.actAnadirExecute(Sender: TObject);
begin
  Contenido := TfrInstalador.Create(Self);
  Contenido.Modo := Anadir;
end;

procedure TfrInstaladores.actModificarExecute(Sender: TObject);
begin
  Contenido := TfrInstalador.Create(Self);
  Contenido.Modo := Modificar;
end;

procedure TfrInstaladores.actEliminarExecute(Sender: TObject);
begin
  Contenido := TfrInstalador.Create(Self);
  Contenido.Modo := Eliminar;
end;

procedure TfrInstaladores.actConsultarExecute(Sender: TObject);
begin
  Contenido := TfrInstalador.Create(Self);
  Contenido.Modo := Consultar;
end;

procedure TfrInstaladores.actSeleccionarExecute(Sender: TObject);
begin
  CodigoInstalador := TablaInstaladores.FieldByName('CODIGO').AsString;
  CloseFrame;
end;

procedure TfrInstaladores.actCancelarExecute(Sender: TObject);
begin
  FCodigoInstalador := NULL;
  CloseFrame;
end;

procedure TfrInstaladores.gridInstaladoresDBTableView1DblClick(
  Sender: TObject);
begin
  if Modo = Seleccionar then
    actSeleccionar.Execute
  else
    actModificar.Execute;
end;

procedure TfrInstaladores.BuscarPropertiesChange(Sender: TObject);
begin
  FiltrarGrid(gridInstaladores, Buscar.Text);
end;

end.
