{ =============================================================================== 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-12-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 RdxFrameVendedores; {$I ..\COMPILE.INC} interface uses Windows, Classes, RdxFrame, RdxDBFrame, IBCustomDataSet, DB, Entidades; type TRdxFrameVendedores = class(TRdxDBFrame) private FTablaVendedores : TIBDataSet; protected FListaVendedores : TStringList; procedure SetTablaVendedores (Value : TIBDataSet); procedure SetListaVendedores (Value : TStringList); procedure SetCodigoVendedor (Value : Variant); procedure SetFCodigoVendedor (Value : Variant); function GetCodigoVendedor: Variant; function GetFCodigoVendedor: Variant; procedure SetContenido (NuevoFrame : TRdxFrame); override; function TratarCambios : integer; override; procedure BuscarVendedor; virtual; abstract; procedure CambiarModo(ModoAnterior, Modo : TRdxModo); override; function CambiarEntidad(EntidadAnterior, Entidad : TRdxEntidad): Boolean; override; public property TablaVendedores: TIBDataSet read FTablaVendedores write SetTablaVendedores; property ListaVendedores : TStringList read FListaVendedores write SetListaVendedores; property CodigoVendedor : Variant read GetCodigoVendedor write SetCodigoVendedor; property FCodigoVendedor : Variant read GetFCodigoVendedor write SetFCodigoVendedor; 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}; { TRdxFrameVendedores } constructor TRdxFrameVendedores.Create(AOwner: TComponent); begin inherited Create(AOwner); FListaVendedores := TStringList.Create; FTablaVendedores := NIL; end; destructor TRdxFrameVendedores.Destroy; begin FListaVendedores.free; FListaVendedores := NIL; inherited; end; function TRdxFrameVendedores.TratarCambios : integer; begin if (TablaVendedores.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 TRdxFrameVendedores.SetContenido(NuevoFrame: TRdxFrame); begin if (Contenido <> NIL) then if (Contenido.Name = NuevoFrame.ClassName) then begin NuevoFrame.Free; exit; end; inherited; if (TablaVendedores <> NIL) then begin FCodigoVendedor := TablaVendedores.FieldByName('CODIGO').Value; if (Contenido is TRdxFrameVendedores) then (Contenido as TRdxFrameVendedores).CodigoVendedor := FCodigoVendedor; end; end; procedure TRdxFrameVendedores.SetTablaVendedores(Value: TIBDataSet); begin if (FTablaVendedores <> Value) then begin FTablaVendedores := Value; end; end; procedure TRdxFrameVendedores.CambiarModo(ModoAnterior, Modo : TRdxModo); begin inherited; if (FModo in [Normal, Seleccionar]) then begin TablaVendedores.Close; TablaVendedores.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 que tiene el frame en CodigoVendedor (al activar el modo Añadir NO se pisa este valor con el código nuevo), preguntamos si la tabla esta activa por si se ha cerrado al realizar algun cambio en modificar y ejecutar TratarCambios} if (not TablaVendedores.Active) or (ModoAnterior = Anadir) then BuscarVendedor; end; end; function TRdxFrameVendedores.GetCodigoVendedor: Variant; begin Result := FCodigoVendedor; end; function TRdxFrameVendedores.GetFCodigoVendedor: Variant; begin if (ListaVendedores.Count = 0) then Result := NULL else Result := ListaVendedores.Strings[ListaVendedores.Count-1]; end; procedure TRdxFrameVendedores.SetCodigoVendedor(Value: Variant); begin if (not VarIsNull(Value)) then begin FCodigoVendedor := Value; BuscarVendedor; end end; procedure TRdxFrameVendedores.SetFCodigoVendedor(Value: Variant); begin FListaVendedores.Clear; if (not VarIsNull(Value)) then FListaVendedores.Add(Value); end; procedure TRdxFrameVendedores.SetListaVendedores(Value: TStringList); begin if (Value = Nil) or (Value.Count = 0) then exit; FListaVendedores.Clear; FListaVendedores.Assign(Value); end; function TRdxFrameVendedores.CambiarEntidad(EntidadAnterior, Entidad: TRdxEntidad): Boolean; begin inherited CambiarEntidad(EntidadAnterior, Entidad); ConfigurarFrame(Self, Self.Entidad); end; end.