{ =============================================================================== Copyright (©) 2003. 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: 02-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 RdxFramePresupuestos; {$I ..\COMPILE.INC} interface uses Windows, Classes, RdxFrame, RdxDBFrame, IBCustomDataSet, DB, Entidades; type TRdxFramePresupuestos = class(TRdxDBFrame) private FTablaPresupuestos : TIBDataSet; FTablaDetallesPresupuestos : TIBDataSet; FTablaPropiedadesPresupuestos : TIBDataSet; protected FCodigoPresupuesto : Variant; procedure SetTablaPresupuestos (Value : TIBDataSet); procedure SetTablaDetallesPresupuestos (Value : TIBDataSet); procedure SetTablaPropiedadesPresupuestos (Value : TIBDataSet); procedure SetCodigoPresupuesto (Value : Variant); virtual; procedure SetContenido (NuevoFrame : TRdxFrame); override; function TratarCambios : integer; override; procedure BuscarPresupuesto; virtual; abstract; procedure CambiarModo(ModoAnterior, Modo : TRdxModo); override; function CambiarEntidad(EntidadAnterior, Entidad : TRdxEntidad): Boolean; override; public property TablaPresupuestos: TIBDataSet read FTablaPresupuestos write SetTablaPresupuestos; property TablaDetallesPresupuestos: TIBDataSet read FTablaDetallesPresupuestos write SetTablaDetallesPresupuestos; property TablaPropiedadesPresupuestos: TIBDataSet read FTablaPropiedadesPresupuestos write SetTablaPropiedadesPresupuestos; property CodigoPresupuesto : Variant read FCodigoPresupuesto write SetCodigoPresupuesto; constructor Create (AOwner : TComponent); override; published property BaseDatos; property Transaccion; end; implementation {$R *.DFM} uses StrFunc, Mensajes, Literales, Configuracion {$IFDEF RDX_D6}, Variants{$ENDIF}; { TRdxFramePresupuestos } constructor TRdxFramePresupuestos.Create (AOwner : TComponent); begin inherited Create(AOwner); FCodigoPresupuesto := NULL; FTablaPresupuestos := NIL; FTablaDetallesPresupuestos := NIL; FTablaPropiedadesPresupuestos := NIL; end; function TRdxFramePresupuestos.TratarCambios : integer; begin if (TablaPresupuestos.State in [dsEdit, dsInsert]) or ((TablaDetallesPresupuestos <> NIL) and (TablaDetallesPresupuestos.State in dsEditModes)) or ((TablaPropiedadesPresupuestos <> NIL) and (TablaPropiedadesPresupuestos.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 TRdxFramePresupuestos.SetCodigoPresupuesto(Value: Variant); begin if not EsCadenaVacia (Value) then FCodigoPresupuesto := Value; BuscarPresupuesto; end; procedure TRdxFramePresupuestos.SetContenido(NuevoFrame: TRdxFrame); begin if (FContenido <> NIL) then if (Contenido.Name = NuevoFrame.ClassName) then begin NuevoFrame.Free; exit; end; inherited; if (TablaPresupuestos <> NIL) then begin FCodigoPresupuesto := TablaPresupuestos.FieldByName('CODIGO').Value; if Contenido is TRdxFramePresupuestos then (Contenido as TRdxFramePresupuestos).CodigoPresupuesto := FCodigoPresupuesto; end; end; procedure TRdxFramePresupuestos.CambiarModo(ModoAnterior, Modo : TRdxModo); begin inherited; if (FModo in [Normal, Seleccionar]) then begin TablaPresupuestos.Close; TablaPresupuestos.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 presupuesto que tiene el frame en CodigoPresupuesto (al activar el modo Añadir NO se pisa este valor con el código de presupuesto nuevo) } if (not TablaPresupuestos.Active) or (ModoAnterior = Anadir) then BuscarPresupuesto; end; end; procedure TRdxFramePresupuestos.SetTablaPresupuestos(Value: TIBDataSet); begin if (FTablaPresupuestos <> Value) then FTablaPresupuestos := Value; end; procedure TRdxFramePresupuestos.SetTablaDetallesPresupuestos(Value: TIBDataSet); begin if (FTablaDetallesPresupuestos <> Value) then FTablaDetallesPresupuestos := Value; end; procedure TRdxFramePresupuestos.SetTablaPropiedadesPresupuestos( Value: TIBDataSet); begin if (FTablaPropiedadesPresupuestos <> Value) then FTablaPropiedadesPresupuestos := Value; end; function TRdxFramePresupuestos.CambiarEntidad(EntidadAnterior, Entidad: TRdxEntidad): Boolean; begin inherited CambiarEntidad(EntidadAnterior, Entidad); ConfigurarFrame(Self, Self.Entidad); end; end.