unit uViewDetallesPedidoProveedor; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uViewDetallesArticulos, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, ImgList, PngImageList, uDADataTable, ActnList, ComCtrls, ToolWin, cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGrid, cxImageComboBox, cxTextEdit, cxMaskEdit, cxCheckBox, cxCurrencyEdit, Grids, DBGrids, StdCtrls, ExtCtrls, cxRichEdit, ExtActns, StdActns, JvExStdCtrls, JvCombobox, JvColorCombo, TB2Item, TBX, TB2Dock, TB2Toolbar, uControllerDetallesArticulos, uBizPedidosProveedor, uDAInterfaces; type IViewDetallesPedidoProveedor = interface(IViewDetallesArticulos) ['{4C82AADF-7FE2-47BC-88F1-2F2DA6DF0B57}'] function GetPedido: IBizPedidoProveedor; procedure SetPedido(const Value: IBizPedidoProveedor); property Pedido: IBizPedidoProveedor read GetPedido write SetPedido; end; TfrViewDetallesPedidoProveedor = class(TfrViewDetallesArticulos, IViewDetallesPedidoProveedor) procedure CustomViewDestroy(Sender: TObject); protected FPedido: IBizPedidoProveedor; function GetPedido: IBizPedidoProveedor; procedure SetPedido(const Value: IBizPedidoProveedor); procedure AnadirArticulosInterno; override; procedure RellenarArticulosInterno; override; function AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean; override; public property Pedido: IBizPedidoProveedor read GetPedido write SetPedido; end; implementation {$R *.dfm} uses uDetallesPedidoProveedorController; { TfrViewDetallesPedidoProveedor } procedure TfrViewDetallesPedidoProveedor.AnadirArticulosInterno; begin if Assigned(Pedido) and Assigned(Pedido.Proveedor) then (Controller as IDetallesPedidoProveedorController).AnadirArticulos(Detalles, Pedido.Proveedor) else (Controller as IDetallesPedidoProveedorController).AnadirArticulos(Detalles); end; procedure TfrViewDetallesPedidoProveedor.CustomViewDestroy(Sender: TObject); begin FPedido := Nil; inherited; end; function TfrViewDetallesPedidoProveedor.AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean; begin Result := (Controller as IDetallesPedidoProveedorController).AnadirArticulo(Detalles, pReferencia, TipoReferencia); end; function TfrViewDetallesPedidoProveedor.GetPedido: IBizPedidoProveedor; begin Result := FPedido; end; procedure TfrViewDetallesPedidoProveedor.RellenarArticulosInterno; begin //No sé porque está en este módulo hecho así, supongo que por seguridad. if Assigned(Pedido) and Assigned(Pedido.Proveedor) then (Controller as IDetallesPedidoProveedorController).AnadirArticulos(Detalles, Pedido.Proveedor, False) else (Controller as IDetallesPedidoProveedorController).AnadirArticulos(Detalles, False); end; procedure TfrViewDetallesPedidoProveedor.SetPedido(const Value: IBizPedidoProveedor); begin FPedido := Value; end; end.