353 lines
11 KiB
ObjectPascal
353 lines
11 KiB
ObjectPascal
|
|
{
|
|||
|
|
===============================================================================
|
|||
|
|
Copyright (<EFBFBD>) 2001. Rodax Software.
|
|||
|
|
===============================================================================
|
|||
|
|
Los contenidos de este fichero son propiedad de Rodax Software titular del
|
|||
|
|
copyright. Este fichero s<EFBFBD>lo podr<EFBFBD> ser copiado, distribuido y utilizado,
|
|||
|
|
en su totalidad o en parte, con el permiso escrito de Rodax Software, o de
|
|||
|
|
acuerdo con los t<EFBFBD>rminos y condiciones establecidas en el acuerdo/contrato
|
|||
|
|
bajo el que se suministra.
|
|||
|
|
-----------------------------------------------------------------------------
|
|||
|
|
Web: www.rodax-software.com
|
|||
|
|
===============================================================================
|
|||
|
|
Fecha primera versi<EFBFBD>n: 01-10-2001
|
|||
|
|
Versi<EFBFBD>n actual: 1.0.8
|
|||
|
|
Fecha versi<EFBFBD>n actual: 06-03-2004
|
|||
|
|
===============================================================================
|
|||
|
|
Modificaciones:
|
|||
|
|
|
|||
|
|
Fecha Comentarios
|
|||
|
|
---------------------------------------------------------------------------
|
|||
|
|
02-03-2002 En el contenido se pueden a<EFBFBD>adir muchos materiales a la vez.
|
|||
|
|
|
|||
|
|
07-04-2002 Se ha adaptado a una unica transacci<EFBFBD>n.
|
|||
|
|
|
|||
|
|
09-05-2002 Cambio de grid en lugar de utilizar UltimDBGrid,
|
|||
|
|
utilizaremos dxDBGrid.
|
|||
|
|
|
|||
|
|
15-05-2002 Revisi<EFBFBD>n. Cuando se a<EFBFBD>aden muchos materiales a la vez se
|
|||
|
|
respeta el orden de selecci<EFBFBD>n.
|
|||
|
|
|
|||
|
|
15-05-2002 P225. Guardar el <EFBFBD>ltimo orden utilizado en las columnas de
|
|||
|
|
la lista de materiales.
|
|||
|
|
|
|||
|
|
30-07-2002 Revisi<EFBFBD>n. Hab<EFBFBD>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<EFBFBD>s.
|
|||
|
|
|
|||
|
|
15-09-2002 P243. A<EFBFBD>adir un campo de b<EFBFBD>squeda r<EFBFBD>pida por la descripci<EFBFBD>n.
|
|||
|
|
|
|||
|
|
06-03-2004 Al hacer doble click sobre el grid, se pasar<EFBFBD> a modificar el
|
|||
|
|
registro o se seleccionar<EFBFBD>, 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.
|