This repository has been archived on 2024-12-02. You can view files and clone it, but cannot push or open issues or pull requests.
FactuGES/Datos/ArticulosModelo.pas
2007-06-26 08:08:27 +00:00

277 lines
8.1 KiB
ObjectPascal

{
===============================================================================
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.0
Fecha versión actual: 13-05-2002
===============================================================================
Modificaciones:
Fecha Comentarios
---------------------------------------------------------------------------
===============================================================================
}
unit ArticulosModelo;
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, RdxFrameArticulos, Configuracion,
cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxEdit, cxDBData,
cxGridLevel, cxClasses,
cxControls, cxGridCustomView, cxGridCustomTableView, cxGridTableView,
cxGridDBTableView, cxGrid, RdxFrame, Menus, am2000menuitem,
am2000popupmenu, am2000, StdCtrls, RdxComboBox, RdxCampos, AdvPanel, cxContainer,
cxTextEdit, cxMaskEdit, cxDropDownEdit, cxLookupEdit, cxDBLookupEdit,
cxDBLookupComboBox, DBCtrls, ActnList, am2000utils, cxDataStorage;
type
TfrArticulosModelo = class(TRdxFrameArticulos)
brSeleccion: TRdxBarraInferior;
bSeleccionar: TRdxBoton;
bCancelar: TRdxBoton;
dsArticulos: TDataSource;
BarraSuperior: TRdxBarraSuperior;
bConsultar: TRdxBotonSuperior;
bEliminar: TRdxBotonSuperior;
bModificar: TRdxBotonSuperior;
bAnadir: TRdxBotonSuperior;
MenuOpciones: TPopupMenu2000;
mnuAnadir: TMenuItem2000;
mnuModificar: TMenuItem2000;
mnuEliminar: TMenuItem2000;
mnuConsultar: TMenuItem2000;
pnlCuerpo: TPanel;
pnlGrid: TPanel;
gridArticulos: TcxGrid;
gridArticulosDBTableView1: TcxGridDBTableView;
gridArticulosLevel1: TcxGridLevel;
Acciones: TActionList;
actAnadir: TAction;
actModificar: TAction;
actEliminar: TAction;
actConsultar: TAction;
actSeleccionar: TAction;
actCancelar: TAction;
imgSombra: TImage;
procedure gridArticulosRefreshButton(Sender: TObject);
procedure RdxFrameArticulosShow(Sender: TObject);
procedure actAnadirExecute(Sender: TObject); virtual;
procedure actModificarExecute(Sender: TObject); virtual;
procedure actEliminarExecute(Sender: TObject); virtual;
procedure actConsultarExecute(Sender: TObject); virtual;
procedure actSeleccionarExecute(Sender: TObject);
procedure actCancelarExecute(Sender: TObject);
procedure gridArticulosDBTableView1DblClick(Sender: TObject);
procedure actSeleccionarUpdate(Sender: TObject);
private
protected
procedure ActualizarBotones;
procedure BuscarArticulo; override;
procedure FreeContenido; override;
procedure InicializarTablas; virtual;
procedure CambiarModo(ModoAnterior: TRdxModo; Modo: TRdxModo);
override;
public
constructor Create (AOwner : TComponent); overload; override;
destructor Destroy; override;
published
property TablaArticulos;
property Entidad;
end;
var
frArticulosModelo: TfrArticulosModelo;
implementation
{$R *.DFM}
uses
Variants, BaseDatos, Entidades, TablaArticulos, ArticuloModelo, Literales;
constructor TfrArticulosModelo.Create (AOwner : TComponent);
begin
inherited Create(AOwner);
BaseDatos := dmBaseDatos.BD;
Transaccion := dmBaseDatos.Transaccion;
TablaArticulos := TIBDataSet.Create(Self);
dsArticulos.DataSet := TablaArticulos;
InicializarTablas;
dmTablaArticulos.InicializarGridArticulos(gridArticulosDBTableView1);
gridArticulosDBTableView1.OnDblClick := gridArticulosDBTableView1DblClick;
gridArticulosDBTableView1.Controller.GoToFirst;
end;
destructor TfrArticulosModelo.Destroy;
begin
TablaArticulos.Close;
TablaArticulos.UnPrepare;
TablaArticulos.Free;
inherited;
end;
procedure TfrArticulosModelo.BuscarArticulo;
begin
with TablaArticulos do
begin
DisableControls;
Close;
Open;
ActualizarBotones;
EnableControls;
if not Locate('CODIGO', CodigoArticulo, []) then
gridArticulosDBTableView1.Controller.GoToFirst
else
gridArticulosDBTableView1.Controller.TopRowIndex := gridArticulosDBTableView1.Controller.FocusedRowIndex;
end;
end;
procedure TfrArticulosModelo.FreeContenido;
begin
if (Contenido is TRdxFrameArticulos) then
CodigoArticulo := (Contenido as TRdxFrameArticulos).CodigoArticulo;
inherited FreeContenido;
gridArticulos.SetFocus;
end;
procedure TfrArticulosModelo.ActualizarBotones;
begin
if BaseDatos.IsReadOnly then
begin
actAnadir.Enabled := False;
actModificar.Enabled := False;
actEliminar.Enabled := False;
actConsultar.Enabled := True;
Exit;
end;
if TablaArticulos.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 TfrArticulosModelo.gridArticulosRefreshButton(Sender: TObject);
begin
BuscarArticulo;
end;
procedure TfrArticulosModelo.RdxFrameArticulosShow(Sender: TObject);
begin
gridArticulos.SetFocus
end;
procedure TfrArticulosModelo.actAnadirExecute(Sender: TObject);
begin
Contenido := TfrArticuloModelo.Create(Self);
Contenido.Modo := Anadir;
end;
procedure TfrArticulosModelo.actModificarExecute(Sender: TObject);
begin
Contenido := TfrArticuloModelo.Create(Self);
Contenido.Modo := Modificar;
end;
procedure TfrArticulosModelo.actEliminarExecute(Sender: TObject);
begin
Contenido := TfrArticuloModelo.Create(Self);
Contenido.Modo := Eliminar;
end;
procedure TfrArticulosModelo.actConsultarExecute(Sender: TObject);
begin
Contenido := TfrArticuloModelo.Create(Self);
Contenido.Modo := Consultar;
end;
procedure TfrArticulosModelo.actSeleccionarExecute(Sender: TObject);
begin
if TablaArticulos.RecordCount = 0 then
begin
VerMensaje(msgArtNoHayArt);
exit;
end;
if gridArticulosDBTableView1.VisibleItemCount = 0 then
begin
VerMensaje(msgArtNoHayArt);
exit;
end;
CodigoArticulo := TablaArticulos.FieldByName('CODIGO').AsString;
CloseFrame;
end;
procedure TfrArticulosModelo.actCancelarExecute(Sender: TObject);
begin
FCodigoArticulo := NULL;
CloseFrame;
end;
procedure TfrArticulosModelo.gridArticulosDBTableView1DblClick(Sender: TObject);
begin
if Modo = Seleccionar then
actSeleccionar.Execute
else
actModificar.Execute;
end;
procedure TfrArticulosModelo.InicializarTablas;
begin
Entidad := entArticuloModelo;
with TablaArticulos do
begin
DisableControls;
Database := BaseDatos;
Transaction := Transaccion;
SelectSQL.Assign(dmTablaArticulos.sqlGridArtModelo);
Prepare;
Open;
ActualizarBotones;
EnableControls;
end;
end;
procedure TfrArticulosModelo.actSeleccionarUpdate(Sender: TObject);
begin
(Sender as TAction).Enabled :=
(TablaArticulos.Active) and
(TablaArticulos.RecordCount > 0) and
(gridArticulosDBTableView1.VisibleItemCount > 0);
end;
procedure TfrArticulosModelo.CambiarModo(ModoAnterior, Modo: TRdxModo);
begin
inherited;
gridArticulosDBTableView1.OptionsSelection.MultiSelect := (Modo = Seleccionar)
end;
end.