{ =============================================================================== Copyright (©) 2005. 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: 08-06-2005 Versión actual: 1.0.0 Fecha versión actual: 08-06-2005 =============================================================================== Modificaciones: Fecha Comentarios --------------------------------------------------------------------------- =============================================================================== } unit RdxFrameObras; {$I ..\COMPILE.INC} interface uses Windows, Classes, RdxFrame, RdxDBFrame, IBCustomDataSet, DB, Entidades; type TRdxFrameObras = class(TRdxDBFrame) private FTablaObras : TIBDataSet; protected FCodigoObra : Variant; procedure SetTablaObras (Value : TIBDataSet); procedure SetCodigoObra (Value : Variant); virtual; procedure SetContenido (NuevoFrame : TRdxFrame); override; function TratarCambios : integer; override; procedure BuscarObra; virtual; abstract; procedure CambiarModo(ModoAnterior, Modo : TRdxModo); override; function CambiarEntidad(EntidadAnterior, Entidad : TRdxEntidad): Boolean; override; public property TablaObras: TIBDataSet read FTablaObras write SetTablaObras; property CodigoObra : Variant read FCodigoObra write SetCodigoObra; 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 TRdxFrameObras.Create(AOwner: TComponent); begin inherited Create(AOwner); FCodigoObra := NULL; FTablaObras := NIL; end; function TRdxFrameObras.TratarCambios : integer; begin if (TablaObras.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 TRdxFrameObras.SetCodigoObra(Value: Variant); begin if not EsCadenaVacia(Value) then begin FCodigoObra := Value; BuscarObra; end end; procedure TRdxFrameObras.SetContenido(NuevoFrame: TRdxFrame); begin if (FContenido <> NIL) then if (Contenido.Name = NuevoFrame.ClassName) then begin NuevoFrame.Free; exit; end; inherited; if (TablaObras <> NIL) then begin FCodigoObra := TablaObras.FieldByName('CODIGOCONTRATO').Value; if Contenido is TRdxFrameObras then (Contenido as TRdxFrameObras).CodigoObra := FCodigoObra; end; end; procedure TRdxFrameObras.CambiarModo(ModoAnterior, Modo : TRdxModo); begin inherited; if (FModo in [Normal, Seleccionar]) then begin TablaObras.Close; TablaObras.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 TablaObras.Active) or (ModoAnterior = Anadir) then BuscarObra; end; end; procedure TRdxFrameObras.SetTablaObras(Value: TIBDataSet); begin if (FTablaObras <> Value) then FTablaObras := Value; end; function TRdxFrameObras.CambiarEntidad(EntidadAnterior, Entidad: TRdxEntidad): Boolean; begin inherited CambiarEntidad(EntidadAnterior, Entidad); ConfigurarFrame(Self, Self.Entidad); end; end.