{ =============================================================================== Copyright (©) 2002. 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-2002 Versión actual: 1.0.1 Fecha versión actual: 28-05-2004 =============================================================================== Modificaciones: Fecha Comentarios --------------------------------------------------------------------------- 28/05/2004 Se han adaptado los frames para que se autoconfiguren =============================================================================== } unit RdxFrameArticulos; {$I ..\COMPILE.INC} interface uses Windows, Classes, RdxFrame, RdxDBFrame, IBCustomDataSet, DB, Entidades; type TRdxFrameArticulos = class(TRdxDBFrame) private FTablaArticulos : TIBDataSet; FTablaPropiedades : TIBDataSet; protected FListaArticulos : TStringList; procedure SetTablaArticulos (Value : TIBDataSet); procedure SetTablaPropiedades (Value : TIBDataSet); procedure SetListaArticulos (Value : TStringList); procedure SetCodigoArticulo (Value : Variant); procedure SetFCodigoArticulo (Value : Variant); function GetCodigoArticulo: Variant; function GetFCodigoArticulo: Variant; procedure SetContenido (NuevoFrame : TRdxFrame); override; function TratarCambios : integer; override; procedure BuscarArticulo; virtual; abstract; procedure CambiarModo(ModoAnterior, Modo : TRdxModo); override; function CambiarEntidad(EntidadAnterior, Entidad : TRdxEntidad): Boolean; override; public property TablaArticulos: TIBDataSet read FTablaArticulos write SetTablaArticulos; property TablaPropiedades: TIBDataSet read FTablaPropiedades write SetTablaPropiedades; property ListaArticulos : TStringList read FListaArticulos write SetListaArticulos; property CodigoArticulo : Variant read GetCodigoArticulo write SetCodigoArticulo; property FCodigoArticulo : Variant read GetFCodigoArticulo write SetFCodigoArticulo; constructor Create (AOwner : TComponent); override; destructor Destroy; override; published property BaseDatos; property Transaccion; end; implementation {$R *.DFM} uses Mensajes, StrFunc, Literales, Configuracion {$IFDEF RDX_D6}, Variants{$ENDIF}; { TRdxFrameArticulos } constructor TRdxFrameArticulos.Create(AOwner: TComponent); begin inherited Create(AOwner); FListaArticulos := TStringList.Create; FTablaArticulos := NIL; end; destructor TRdxFrameArticulos.Destroy; begin FListaArticulos.free; FListaArticulos := NIL; inherited; end; function TRdxFrameArticulos.TratarCambios : integer; begin if (TablaArticulos.State in dsEditModes) 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 TRdxFrameArticulos.SetContenido(NuevoFrame: TRdxFrame); begin if (Contenido <> NIL) then if (Contenido.Name = NuevoFrame.ClassName) then begin NuevoFrame.Free; exit; end; inherited; if (TablaArticulos <> NIL) then begin FCodigoArticulo := TablaArticulos.FieldByName('CODIGO').Value; if (Contenido is TRdxFrameArticulos) then (Contenido as TRdxFrameArticulos).CodigoArticulo := FCodigoArticulo; end; end; procedure TRdxFrameArticulos.SetTablaArticulos(Value: TIBDataSet); begin if (FTablaArticulos <> Value) then begin FTablaArticulos := Value; end; end; procedure TRdxFrameArticulos.CambiarModo(ModoAnterior, Modo : TRdxModo); begin inherited; if (FModo in [Normal, Seleccionar]) then begin TablaArticulos.Close; TablaArticulos.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 articulo que tiene el frame en CodigoArticulo (al activar el modo Añadir NO se pisa este valor con el código de articulo nuevo), preguntamos si la tabla esta activa por si se ha cerrado al realizar algun cambio en modificar y ejecutar TratarCambios} if (not TablaArticulos.Active) or (ModoAnterior = Anadir) then BuscarArticulo; end; end; function TRdxFrameArticulos.GetCodigoArticulo: Variant; begin Result := FCodigoArticulo; end; function TRdxFrameArticulos.GetFCodigoArticulo: Variant; begin if (ListaArticulos.Count = 0) then Result := NULL else Result := ListaArticulos.Strings[ListaArticulos.Count-1]; end; procedure TRdxFrameArticulos.SetCodigoArticulo(Value: Variant); begin if (not VarIsNull(Value)) then begin FCodigoArticulo := Value; BuscarArticulo; end end; procedure TRdxFrameArticulos.SetFCodigoArticulo(Value: Variant); begin FListaArticulos.Clear; if (not VarIsNull(Value)) then FListaArticulos.Add(Value); end; procedure TRdxFrameArticulos.SetListaArticulos(Value: TStringList); begin if (Value = Nil) or (Value.Count = 0) then exit; FListaArticulos.Clear; FListaArticulos.Assign(Value); end; procedure TRdxFrameArticulos.SetTablaPropiedades(Value: TIBDataSet); begin if (FTablaPropiedades <> Value) then begin FTablaPropiedades := Value; end; end; function TRdxFrameArticulos.CambiarEntidad(EntidadAnterior, Entidad: TRdxEntidad): Boolean; begin inherited CambiarEntidad(EntidadAnterior, Entidad); ConfigurarFrame(Self, Self.Entidad); end; end.