This repository has been archived on 2024-11-29. You can view files and clone it, but cannot push or open issues or pull requests.
Tecsitel_FactuGES/Articulos/Articulos.pas
2007-06-21 15:47:20 +00:00

353 lines
11 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: 01-10-2001
Versión actual: 1.0.8
Fecha versión actual: 06-03-2004
===============================================================================
Modificaciones:
Fecha Comentarios
---------------------------------------------------------------------------
02-03-2002 En el contenido se pueden añadir muchos materiales a la vez.
07-04-2002 Se ha adaptado a una unica transacción.
09-05-2002 Cambio de grid en lugar de utilizar UltimDBGrid,
utilizaremos dxDBGrid.
15-05-2002 Revisión. Cuando se añaden muchos materiales a la vez se
respeta el orden de selección.
15-05-2002 P225. Guardar el último orden utilizado en las columnas de
la lista de materiales.
30-07-2002 Revisión. Había un fallo al seleccionar varios materiales a
la vez. No se borraba el contenido de la lista de selecciona-
dos cuando se seleccionaba uno solo y se deseleccionaban
los demás.
15-09-2002 P243. Añadir un campo de búsqueda rápida por la descripción.
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 Articulos;
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, RdxFrameArticulos, dxCntner, dxTL,
dxDBCtrl, dxDBGrid, StdCtrls, RdxComboBox, dxDBEdtr, dxDBELib, dxEditor,
dxExEdtr, dxEdLib;
type
TfrArticulos = class(TRdxFrameArticulos)
BarraArticulos: TRdxBarraSuperior;
bAnadir: TRdxBotonSuperior;
bModificar: TRdxBotonSuperior;
bEliminar: TRdxBotonSuperior;
bConsultar: TRdxBotonSuperior;
bBuscar: TRdxBotonSuperior;
bListar: TRdxBotonSuperior;
bLocalizar: TRdxBotonSuperior;
brSeleccion: TRdxBarraInferior;
bSeleccionar: TRdxBoton;
bCancelarGuardar: TRdxBoton;
dsArticulos: TDataSource;
pnlCuerpo: TRdxPanel;
pnlExtra: TRdxBarraSuperior;
pnlBusquedaRapida: TRdxPanel;
eBusqueda: TLabel;
BusquedaRapida: TdxLookupEdit;
pnlGrid: TPanel;
gridArticulos: TdxDBGrid;
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); virtual;
procedure bCancelarGuardarClick(Sender: TObject);
procedure bListarClick(Sender: TObject);
procedure bLocalizarClick(Sender: TObject);
procedure gridArticulosRefreshButton(Sender: TObject);
procedure BusquedaRapidaKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure gridArticulosDblClick(Sender: TObject);
procedure gridArticulosSelectedCountChange(Sender: TObject);
private
FListaArticulosAux : TStringList;
protected
procedure ActualizarBotones;
procedure BuscarArticulo; override;
procedure FreeContenido; override;
procedure CambiarModo(ModoAnterior, Modo : TRdxModo); override;
public
constructor Create (AOwner : TComponent); override;
destructor Destroy; override;
published
property TablaArticulos;
property Entidad;
end;
var
frArticulos: TfrArticulos;
implementation
{$R *.DFM}
uses
BaseDatos, Articulo, BuscarArticulo, TablaArticulos, ListarArticulos,
LocalizarArticulo, Configuracion, Literales;
constructor TfrArticulos.Create (AOwner : TComponent);
begin
inherited Create(AOwner);
Entidad := entArticulo;
ConfigurarFrame(Self, Self.Entidad);
BaseDatos := dmBaseDatos.BD;
Transaccion := dmBaseDatos.Transaccion;;
TablaArticulos := TIBDataSet.Create(Self);
dsArticulos.DataSet := TablaArticulos;
with gridArticulos do
begin
IniFileName := Configuracion.FICHERO_CONFIGURACION;
IniSectionName := 'MATERIAL';
OptionsBehavior := OptionsBehavior + [edgoStoreToIniFile];
end;
with TablaArticulos do
begin
DisableControls;
Database := BaseDatos;
Transaction := Transaccion;
SelectSQL.Assign(dmTablaArticulos.sqlGrid);
Prepare;
Open;
ActualizarBotones;
dmTablaArticulos.InicializarTablaArticulos(@TablaArticulos);
EnableControls;
end;
dmTablaArticulos.InicializarGridArticulos(gridArticulos);
gridArticulos.LoadFromIniFile(gridArticulos.IniFileName);
FListaArticulosAux := TStringList.Create;
gridArticulos.GotoFirst;
end;
destructor TfrArticulos.Destroy;
begin
TablaArticulos.Close;
TablaArticulos.UnPrepare;
TablaArticulos.Free;
if FListaArticulosAux <> NIL then
begin
FListaArticulosAux.Clear;
FListaArticulosAux.Free;
FListaArticulosAux := NIL;
end;
inherited;
end;
procedure TfrArticulos.BuscarArticulo;
begin
with TablaArticulos do
begin
DisableControls;
Close;
Open;
ActualizarBotones;
dmTablaArticulos.InicializarTablaArticulos(@TablaArticulos);
EnableControls;
end;
TablaArticulos.Locate('CODIGO',CodigoArticulo,[]);
end;
procedure TfrArticulos.FreeContenido;
begin
if (Contenido is TRdxFrameArticulos) then
CodigoArticulo := (Contenido as TRdxFrameArticulos).CodigoArticulo;
inherited;
end;
procedure TfrArticulos.bAnadirClick(Sender: TObject);
begin
Contenido := TfrArticulo.Create(Self);
Contenido.Modo := Anadir;
end;
procedure TfrArticulos.bModificarClick(Sender: TObject);
begin
CodigoArticulo := TablaArticulos.FieldByName('CODIGO').AsString;
Contenido := TfrArticulo.Create(Self);
Contenido.Modo := Modificar;
end;
procedure TfrArticulos.bEliminarClick(Sender: TObject);
begin
CodigoArticulo := TablaArticulos.FieldByName('CODIGO').AsString;
Contenido := TfrArticulo.Create(Self);
Contenido.Modo := Eliminar;
end;
procedure TfrArticulos.bConsultarClick(Sender: TObject);
begin
CodigoArticulo := TablaArticulos.FieldByName('CODIGO').AsString;
Contenido := TfrArticulo.Create(Self);
Contenido.Modo := Consultar;
end;
procedure TfrArticulos.bBuscarClick(Sender: TObject);
begin
CodigoArticulo := TablaArticulos.FieldByName('CODIGO').AsString;
Contenido := TfrBuscarArticulo.Create(Self);
end;
procedure TfrArticulos.bSeleccionarClick(Sender: TObject);
var
ListaArtSelec : TStringList;
iAux : Integer;
Aux : integer;
begin
if TablaArticulos.RecordCount = 0 then
begin
VerMensaje(msgArtNoHayArt);
exit;
end;
// Para no hacer un BuscarArticulo que no es necesario
// FCodigoArticulo := TablaArticulos.FieldByName('CODIGO').Value;
if gridArticulos.SelectedCount <= 1
then FCodigoArticulo := TablaArticulos.FieldByName('CODIGO').Value
else
ListaArticulos := FListaArticulosAux;
//FListaArticulos := dmTablaArticulos.darListaArticulos(gridArticulos, @TablaArticulos);
CloseFrame;
end;
procedure TfrArticulos.bCancelarGuardarClick(Sender: TObject);
begin
FCodigoArticulo := Null;
CloseFrame;
end;
procedure TfrArticulos.bListarClick(Sender: TObject);
begin
CodigoArticulo := TablaArticulos.FieldByName('CODIGO').AsString;
Contenido := TfrListarArticulos.Create(Self);
Contenido.Modo := Listar;
end;
procedure TfrArticulos.bLocalizarClick(Sender: TObject);
begin
CodigoArticulo := TablaArticulos.FieldByName('CODIGO').AsString;
Contenido := TfrLocalizarArticulo.Create(Self);
Contenido.Modo := Localizar;
Contenido.Visible := True;
end;
procedure TfrArticulos.ActualizarBotones;
begin
if BaseDatos.IsReadOnly then
begin
bAnadir.Enabled := False;
bModificar.Enabled := False;
bEliminar.Enabled := False;
bConsultar.Enabled := True;
bBuscar.Enabled := True;
bListar.Enabled := True;
bLocalizar.Enabled := True;
Exit;
end;
if TablaArticulos.RecordCount = 0 then begin
bAnadir.Enabled := True;
bModificar.Enabled := False;
bEliminar.Enabled := False;
bConsultar.Enabled := False;
bBuscar.Enabled := False;
bListar.Enabled := False;
bLocalizar.Enabled := False;
end
else begin
bAnadir.Enabled := True;
bModificar.Enabled := True;
bEliminar.Enabled := True;
bConsultar.Enabled := True;
bBuscar.Enabled := True;
bListar.Enabled := True;
bLocalizar.Enabled := True;
end;
end;
procedure TfrArticulos.gridArticulosRefreshButton(Sender: TObject);
begin
BuscarArticulo;
end;
procedure TfrArticulos.gridArticulosSelectedCountChange(Sender: TObject);
var
IndiceCol : Integer;
CodArt : String;
IndiceSel : Integer;
begin
if TablaArticulos.Active then
begin
IndiceCol := gridArticulos.ColumnByFieldName('CODIGO').Index;
CodArt := gridArticulos.FocusedNode.Strings[IndiceCol];
FListaArticulosAux.Clear;
for IndiceSel:=0 to gridArticulos.SelectedCount-1 do
FListaArticulosAux.Add(gridArticulos.SelectedNodes[IndiceSel].Strings[IndiceCol]);
end;
end;
procedure TfrArticulos.BusquedaRapidaKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if (Key = VK_RETURN) and (Modo = Seleccionar) then
bSeleccionar.Click;
end;
procedure TfrArticulos.CambiarModo(ModoAnterior, Modo: TRdxModo);
begin
inherited;
dmTablaArticulos.InicializarTablaArticulos(@TablaArticulos);
if Modo = Seleccionar then
gridArticulos.OptionsBehavior := gridArticulos.OptionsBehavior + [edgoMultiSelect]
else
gridArticulos.OptionsBehavior := gridArticulos.OptionsBehavior - [edgoMultiSelect];
end;
procedure TfrArticulos.gridArticulosDblClick(Sender: TObject);
begin
if Modo = Seleccionar then
bSeleccionar.Click
else
bModificar.Click;
end;
end.