unit uViewDetallesPedidoCliente; 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, uBizPedidosCliente, uDAInterfaces, cxButtonEdit, cxDropDownEdit, Menus, cxGridCustomPopupMenu, cxGridPopupMenu, cxEditRepositoryItems; type IViewDetallesPedidoCliente = interface(IViewDetallesArticulos) ['{0DDE8FC8-100E-4429-9A8B-49D6B24BB396}'] function GetPedido: IBizPedidoCliente; procedure SetPedido(const Value: IBizPedidoCliente); property Pedido: IBizPedidoCliente read GetPedido write SetPedido; end; TfrViewDetallesPedidoCliente = class(TfrViewDetallesArticulos, IViewDetallesPedidoCliente) TBXItem18: TTBXItem; Artculosdelcatlogo1: TMenuItem; N2: TMenuItem; procedure CustomViewDestroy(Sender: TObject); protected FPedido: IBizPedidoCliente; function GetPedido: IBizPedidoCliente; procedure SetPedido(const Value: IBizPedidoCliente); procedure AnadirArticulosInterno; override; procedure RellenarArticulosInterno; override; function AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean; override; public property Pedido: IBizPedidoCliente read GetPedido write SetPedido; end; implementation {$R *.dfm} uses uDetallesPedidoClienteController; { TfrViewDetallesPedidoCliente } procedure TfrViewDetallesPedidoCliente.AnadirArticulosInterno; begin //No sé porque está en este módulo hecho así, supongo que por seguridad. if Assigned(Pedido) and Assigned(Pedido.Cliente) then (Controller as IDetallesPedidoClienteController).AnadirArticulos(Detalles, Pedido.Cliente) else (Controller as IDetallesPedidoClienteController).AnadirArticulos(Detalles); end; procedure TfrViewDetallesPedidoCliente.CustomViewDestroy(Sender: TObject); begin FPedido := Nil; inherited; end; function TfrViewDetallesPedidoCliente.AnadirArticulo(pReferencia: String; TipoReferencia: TEnumReferencia): Boolean; begin Result := (Controller as IDetallesPedidoClienteController).AnadirArticulo(Detalles, pReferencia, TipoReferencia); end; function TfrViewDetallesPedidoCliente.GetPedido: IBizPedidoCliente; begin Result := FPedido; end; procedure TfrViewDetallesPedidoCliente.RellenarArticulosInterno; begin //No sé porque está en este módulo hecho así, supongo que por seguridad. if Assigned(Pedido) and Assigned(Pedido.Cliente) then (Controller as IDetallesPedidoClienteController).AnadirArticulos(Detalles, Pedido.Cliente, False) else (Controller as IDetallesPedidoClienteController).AnadirArticulos(Detalles, False); end; procedure TfrViewDetallesPedidoCliente.SetPedido(const Value: IBizPedidoCliente); begin FPedido := Value; end; end.