{ =============================================================================== 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: 03-11-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 RdxFrameClientes; {$I ..\COMPILE.INC} interface uses Windows, Classes, RdxFrame, RdxDBFrame, IBCustomDataSet, DB, Entidades; type TRdxFrameClientes = class(TRdxDBFrame) private FTablaClientes : TIBDataSet; FTablaSucursales : TIBDataSet; protected FCodigoCliente : Variant; procedure SetTablaClientes (Value : TIBDataSet); procedure SetTablaSucursales (Value : TIBDataSet); procedure SetCodigoCliente (Value : Variant); virtual; procedure SetContenido (NuevoFrame : TRdxFrame); override; function TratarCambios : integer; override; procedure BuscarCliente; virtual; procedure CambiarModo(ModoAnterior, Modo : TRdxModo); override; function CambiarEntidad(EntidadAnterior, Entidad : TRdxEntidad): Boolean; override; public property TablaClientes: TIBDataSet read FTablaClientes write SetTablaClientes; property TablaSucursales: TIBDataSet read FTablaSucursales write SetTablaSucursales; property CodigoCliente : Variant read FCodigoCliente write SetCodigoCliente; constructor Create (AOwner : TComponent); override; published property BaseDatos; property Transaccion; end; implementation {$R *.DFM} uses Mensajes, StrFunc, Literales, Configuracion {$IFDEF RDX_D6}, Variants{$ENDIF}; { TRdxFrameClientes } constructor TRdxFrameClientes.Create(AOwner: TComponent); begin inherited Create(AOwner); FCodigoCliente := NULL; FTablaClientes := NIL; FTablaSucursales := NIL; end; function TRdxFrameClientes.TratarCambios : integer; begin if (TablaClientes.State in dsEditModes) or ((TablaSucursales <> NIL) and (TablaSucursales.State in dsEditModes)) then begin 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 end else Result := IDOK; end; procedure TRdxFrameClientes.SetCodigoCliente(Value: Variant); begin if not EsCadenaVacia(Value) then begin FCodigoCliente := Value; BuscarCliente; end end; procedure TRdxFrameClientes.SetContenido(NuevoFrame: TRdxFrame); begin if (FContenido <> NIL) then if (Contenido.Name = NuevoFrame.ClassName) then begin NuevoFrame.Free; exit; end; inherited; if (TablaClientes <> NIL) then begin FCodigoCliente := TablaClientes.FieldByName('CODIGO').Value; if Contenido is TRdxFrameClientes then (Contenido as TRdxFrameClientes).CodigoCliente := FCodigoCliente; end; end; procedure TRdxFrameClientes.CambiarModo(ModoAnterior, Modo : TRdxModo); begin inherited; if (FModo in [Normal, Seleccionar]) then begin TablaClientes.Close; TablaClientes.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 CodigoCliente (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 TablaClientes.Active) or (ModoAnterior = Anadir) then BuscarCliente; end; end; procedure TRdxFrameClientes.SetTablaClientes(Value: TIBDataSet); begin if (FTablaClientes <> Value) then FTablaClientes := Value; end; procedure TRdxFrameClientes.SetTablaSucursales(Value: TIBDataSet); begin if (FTablaSucursales <> Value) then FTablaSucursales := Value; end; procedure TRdxFrameClientes.BuscarCliente; begin // end; function TRdxFrameClientes.CambiarEntidad(EntidadAnterior, Entidad: TRdxEntidad): Boolean; begin inherited CambiarEntidad(EntidadAnterior, Entidad); ConfigurarFrame(Self, Self.Entidad); end; end.