{
===============================================================================
  Copyright (©) 2001. 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: 13-05-2002
  Versión actual: 1.0.1
  Fecha versión actual:  06-03-2004
===============================================================================
  Modificaciones:

    Fecha         Comentarios
    ---------------------------------------------------------------------------
    06-03-2004    Al hacer doble click sobre el grid, se pasará a modificar el
                  registro o se seleccionará, dependiendo del modo en el que
                  se encuentre la pantalla.
===============================================================================
}

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, Tipos, Mensajes, RdxFrameInstaladores, dxCntner, dxTL,
  dxDBCtrl, dxDBGrid;

type
  TfrInstaladores = class(TRdxFrameInstaladores)
    pnlGrid: TPanel;
    brSeleccion: TRdxBarraInferior;
    bSeleccionar: TRdxBoton;
    bCancelarGuardar: TRdxBoton;
    dsInstaladores: TDataSource;
    gridInstaladores: TdxDBGrid;
    barraInstaladores: TRdxBarraSuperior;
    bBuscar: TRdxBotonSuperior;
    bConsultar: TRdxBotonSuperior;
    bEliminar: TRdxBotonSuperior;
    bModificar: TRdxBotonSuperior;
    bAnadir: TRdxBotonSuperior;
    imgSombra: TImage;
    procedure bAnadirClick(Sender: TObject);
    procedure bModificarClick(Sender: TObject);
    procedure bEliminarClick(Sender: TObject);
    procedure bConsultarClick(Sender: TObject);
    procedure bBuscarClick(Sender: TObject);
    procedure bSeleccionarClick(Sender: TObject);
    procedure bCancelarGuardarClick(Sender: TObject);
    procedure gridInstaladoresRefreshButton(Sender: TObject);
    procedure gridInstaladoresDblClick(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
  BaseDatos, Instalador, BuscarInstalador, TablaInstaladores, Configuracion,
  Literales;

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

  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(gridInstaladores);
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;
  end;
  TablaInstaladores.Locate('CODIGO',CodigoInstalador,[]);
end;

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

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

procedure TfrInstaladores.bModificarClick(Sender: TObject);
begin
  CodigoInstalador := TablaInstaladores.FieldByName('CODIGO').AsString;
  Contenido := TfrInstalador.Create(Self);
  Contenido.Modo := Modificar;
end;

procedure TfrInstaladores.bEliminarClick(Sender: TObject);
begin
  CodigoInstalador := TablaInstaladores.FieldByName('CODIGO').AsString;
  Contenido := TfrInstalador.Create(Self);
  Contenido.Modo := Eliminar;
end;

procedure TfrInstaladores.bConsultarClick(Sender: TObject);
begin
  CodigoInstalador := TablaInstaladores.FieldByName('CODIGO').AsString;
  Contenido := TfrInstalador.Create(Self);
  Contenido.Modo := Consultar;
end;

procedure TfrInstaladores.bBuscarClick(Sender: TObject);
begin
  CodigoInstalador := TablaInstaladores.FieldByName('CODIGO').AsString;
  Contenido := TfrBuscarInstalador.Create(Self);
end;

procedure TfrInstaladores.bSeleccionarClick(Sender: TObject);
begin
  if TablaInstaladores.RecordCount = 0 then
  begin
    VerMensaje(msgInsNoHayInstaladores);
    exit;
  end;

  // Para no hacer un BuscarInstalador que no es necesario
  // FCodigoInstalador := TablaInstaladores.FieldByName('CODIGO').Value;

  if gridInstaladores.SelectedCount = 0 then
    FCodigoInstalador := TablaInstaladores.FieldByName('CODIGO').Value
  else
    FListaInstaladores := dmTablaInstaladores.darListaInstaladores(gridInstaladores, @TablaInstaladores);

  CloseFrame;
end;

procedure TfrInstaladores.bCancelarGuardarClick(Sender: TObject);
begin
  FCodigoInstalador := Null;
  CloseFrame;
end;

procedure TfrInstaladores.ActualizarBotones;
begin
  if BaseDatos.IsReadOnly then
  begin
    bAnadir.Enabled := False;
    bModificar.Enabled := False;
    bEliminar.Enabled := False;
    bConsultar.Enabled := True;
    bBuscar.Enabled := True;
    Exit;
  end;

  if TablaInstaladores.RecordCount = 0 then begin
    bAnadir.Enabled := True;
    bModificar.Enabled := False;
    bEliminar.Enabled := False;
    bConsultar.Enabled := False;
    bBuscar.Enabled := False;
  end
  else begin
    bAnadir.Enabled := True;
    bModificar.Enabled := True;
    bEliminar.Enabled := True;
    bConsultar.Enabled := True;
    bBuscar.Enabled := True;
  end;
end;

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

procedure TfrInstaladores.gridInstaladoresDblClick(Sender: TObject);
begin
  if Modo = Seleccionar then
    bSeleccionar.Click
  else
    bModificar.Click;
end;

end.
