{ =============================================================================== 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.2 Fecha versión actual: 09-04-2002 =============================================================================== Modificaciones: Fecha Comentarios --------------------------------------------------------------------------- 07-04-2002 Se ha adaptado el frame para transaccion unica. 09-04-2002 Sustituir las constantes IDYES/IDNO por IDOK. =============================================================================== } unit RdxFrameAlmacenes; {$I ..\COMPILE.INC} interface uses Consts, Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, IB, IBCustomDataSet, IBDataBase, DB, Mensajes, Tipos, RdxFrame, RdxDBFrame; type TRdxFrameAlmacenes = class(TRdxDBFrame) private FTablaAlmacenes : TIBDataSet; protected FCodigoAlmacen : Variant; procedure SetTablaAlmacenes (Value : TIBDataSet); procedure SetCodigoAlmacen (Value : Variant); virtual; procedure SetContenido (NuevoFrame : TRdxFrame); override; function TratarCambios : integer; override; procedure BuscarAlmacen; virtual; abstract; procedure CambiarModo(ModoAnterior, Modo : TRdxModo); override; public property TablaAlmacenes: TIBDataSet read FTablaAlmacenes write SetTablaAlmacenes; property CodigoAlmacen : Variant read FCodigoAlmacen write SetCodigoAlmacen; constructor Create (AOwner : TComponent); override; published property BaseDatos; property Transaccion; end; implementation {$R *.DFM} uses Literales{$IFDEF RDX_D6},Variants{$ENDIF}; { TRdxFrameAlmacenes } constructor TRdxFrameAlmacenes.Create(AOwner: TComponent); begin inherited Create(AOwner); FTablaAlmacenes := NIL; FCodigoAlmacen := NULL; end; function TRdxFrameAlmacenes.TratarCambios : integer; begin if (TablaAlmacenes.Modified = True) then case VerMensajePregunta(msgGuardarCambios) of IDCANCEL : Result := IDCANCEL; IDYES : begin if (RealizarOperacion) then Result := IDOK else Result := IDCANCEL; end; IDNO : begin if (DescartarOperacion) then Result := IDOK else Result := IDCANCEL; end; end else Result := IDOK; end; procedure TRdxFrameAlmacenes.SetContenido(NuevoFrame: TRdxFrame); begin if (Contenido <> NIL) then if (Contenido.Name = NuevoFrame.ClassName) then begin NuevoFrame.Free; exit; end; inherited; if (TablaAlmacenes <> NIL) then begin FCodigoAlmacen := TablaAlmacenes.FieldByName('ALMACENES.CODIGO').Value; if (Contenido is TRdxFrameAlmacenes) then (Contenido as TRdxFrameAlmacenes).CodigoAlmacen := FCodigoAlmacen; end; end; procedure TRdxFrameAlmacenes.SetTablaAlmacenes(Value: TIBDataSet); begin if (FTablaAlmacenes <> Value) then begin FTablaAlmacenes := Value; end; end; procedure TRdxFrameAlmacenes.CambiarModo(ModoAnterior, Modo : TRdxModo); begin inherited; if (FModo in [Normal, Seleccionar]) then begin TablaAlmacenes.Close; TablaAlmacenes.Open; end else begin { Si estábamos en el modo Añadir y pasamos a cualquier otro modo SIEMPRE es necesario buscar el codigo de almacén que tiene el frame en CodigoAlmacen (al activar el modo Añadir NO se pisa este valor con el código de almacén nuevo), preguntamos si la tabla esta activa por si se ha cerrado al realizar algun cambio en modificar y ejecutar TratarCambios} if (not TablaAlmacenes.Active) or (ModoAnterior = Anadir) then BuscarAlmacen; end; end; procedure TRdxFrameAlmacenes.SetCodigoAlmacen(Value: Variant); begin if (not VarIsNull(Value)) then begin FCodigoAlmacen := Value; BuscarAlmacen; end end; end.