{ =============================================================================== Copyright (©) 2001. 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-2001 Versión actual: 1.0.1 Fecha versión actual: 07-04-2002 =============================================================================== Modificaciones: Fecha Comentarios --------------------------------------------------------------------------- 07-04-2002 Se ha adaptado el frame para transacción única. =============================================================================== } unit RdxDBFrame; interface uses Consts, Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, RdxFrame, IBCustomDataSet, Tipos, IBDatabase, IBEvents; type TRdxDBFrame = class(TRdxFrame) private FBaseDatos : TIBDataBase; FTransaccion : TIBTransaction; procedure SetBaseDatos (Value : TIBDataBase); procedure SetTransaccion (Value : TIBTransaction); protected procedure SetModo (Value : TRdxModo); override; procedure ActivarModo; virtual; function TratarCambios : integer; virtual; procedure ActivarModoAnadir; virtual; procedure ActivarModoModificar; virtual; procedure ActivarModoConsultar; virtual; procedure ActivarModoEliminar; virtual; procedure ActivarModoTraslado; virtual; procedure ActivarModoEntrada; virtual; procedure ActivarModoEntradaPedido; virtual; procedure ActivarModoSalida; virtual; procedure ActivarModoSalidaDevolucion; virtual; function ComprobarDatos : Boolean; virtual; function RealizarOperacion : Boolean; virtual; function DescartarOperacion : Boolean; virtual; function AnadirDatos : Boolean; virtual; abstract; function ModificarDatos : Boolean; virtual; function EliminarDatos : Boolean; virtual; function CancelarAnadir : Boolean; virtual; function CancelarModificar : Boolean; virtual; function CancelarEliminar : Boolean; virtual; public property BaseDatos : TIBDataBase read FBaseDatos write SetBaseDatos; property Transaccion : TIBTransaction read FTransaccion write SetTransaccion; procedure Rollback; procedure Commit; constructor Create (AOwner : TComponent); override; destructor Destroy; override; function CloseFrame : boolean; override; published property OnShow; end; implementation {$R *.DFM} uses IB, DB, Mensajes; { TRdxDBFrame } constructor TRdxDBFrame.Create(AOwner: TComponent); begin inherited Create(AOwner); FTransaccion := NIL; FBaseDatos := NIL; end; procedure TRdxDBFrame.Commit; begin if FTransaccion = NIL then Exit; if FTransaccion.InTransaction then FTransaccion.CommitRetaining; end; procedure TRdxDBFrame.Rollback; begin if FTransaccion = NIL then exit; if FTransaccion.InTransaction then FTransaccion.RollbackRetaining; end; procedure TRdxDBFrame.SetTransaccion(Value: TIBTransaction); begin if (Value = NIL) then Exit; if (FTransaccion <> Value) then FTransaccion := Value; end; procedure TRdxDBFrame.SetBaseDatos(Value: TIBDataBase); begin if (FBaseDatos <> Value) then FBaseDatos := Value; end; procedure TRdxDBFrame.SetModo(Value: TRdxModo); begin if Modo = Value then exit; if TratarCambios = IDCANCEL then exit; inherited; ActivarModo; end; function TRdxDBFrame.DescartarOperacion: Boolean; begin case Modo of Anadir : Result := CancelarAnadir; Modificar : Result := CancelarModificar; Eliminar : Result := CancelarEliminar; end; end; function TRdxDBFrame.RealizarOperacion: Boolean; begin case Modo of Anadir : begin if ComprobarDatos then Result := AnadirDatos else Result := False; end; Modificar : begin if ComprobarDatos then Result := ModificarDatos else Result := False; end; Eliminar : begin if ComprobarDatos then Result := EliminarDatos else Result := False; end; end; end; function TRdxDBFrame.CloseFrame : boolean; begin { Sólo tratamos los cambios en aquellos frames que sean visibles. Cuando no son visibles no se pregunta porque lo que se quiere es cerrarlo sin mostrar nada por pantalla (por ejemplo, cuando se quiere facturar un pedido que no se puede). } if Visible then begin if TratarCambios = IDCANCEL then begin Result := False; Exit; end; end; Result := inherited CloseFrame; end; function TRdxDBFrame.TratarCambios: integer; begin { Esta función vacía sirve para evitar que los frames hijos que no tengan cambios en las tablas (grids por ejemplo) estén obligados a redefinir esta función aunque luego no les sirva de nada. } Result := IDOK; end; procedure TRdxDBFrame.ActivarModo; begin case Modo of Anadir : ActivarModoAnadir; Modificar : ActivarModoModificar; Consultar : ActivarModoConsultar; Eliminar : ActivarModoEliminar; Traslado : ActivarModoTraslado; Entrada : ActivarModoEntrada; EntradaPedido : ActivarModoEntradaPedido; Salida : ActivarModoSalida; SalidaDevolucion : ActivarModoSalidaDevolucion; end; end; procedure TRdxDBFrame.ActivarModoAnadir; begin // end; procedure TRdxDBFrame.ActivarModoConsultar; begin // end; procedure TRdxDBFrame.ActivarModoEliminar; begin // end; procedure TRdxDBFrame.ActivarModoModificar; begin // end; function TRdxDBFrame.CancelarAnadir: Boolean; begin // end; function TRdxDBFrame.CancelarEliminar: Boolean; begin // end; function TRdxDBFrame.CancelarModificar: Boolean; begin // end; function TRdxDBFrame.EliminarDatos: Boolean; begin // end; function TRdxDBFrame.ModificarDatos: Boolean; begin // end; procedure TRdxDBFrame.ActivarModoTraslado; begin // end; procedure TRdxDBFrame.ActivarModoEntrada; begin // end; procedure TRdxDBFrame.ActivarModoEntradaPedido; begin // end; procedure TRdxDBFrame.ActivarModoSalida; begin // end; procedure TRdxDBFrame.ActivarModoSalidaDevolucion; begin // end; function TRdxDBFrame.ComprobarDatos: Boolean; begin // end; destructor TRdxDBFrame.Destroy; begin inherited; end; end.