unit uViewDestinoPedidoProveedor; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uViewBase, DB, uDADataTable, cxControls, cxContainer, cxEdit, cxTextEdit, cxMaskEdit, cxDropDownEdit, cxCalendar, cxDBEdit, StdCtrls, Mask, DBCtrls, ExtCtrls, cxGraphics, cxMemo, ActnList, cxLookupEdit, cxDBLookupEdit, cxDBLookupComboBox, uBizAlmacenes, uBizPedidosProveedor; type IViewDestinoPedidoProveedor = interface(IViewBase) ['{1DD198BD-9F21-47D1-804E-ED3B627C9FA9}'] function GetPedidoProveedor: IBizPedidosProveedor; procedure SetPedidoProveedor(const Value: IBizPedidosProveedor); property PedidoProveedor: IBizPedidosProveedor read GetPedidoProveedor write SetPedidoProveedor; end; TfrViewDestinoPedidoProveedor = class(TfrViewBase) Bevel1: TBevel; Label5: TLabel; DADataSource: TDADataSource; rdxDestino1: TRadioButton; rdxDestino2: TRadioButton; memDireccion: TcxDBMemo; ActionList1: TActionList; actAlmacen: TAction; actOtro: TAction; DADataSource2: TDADataSource; cbAlmacen: TcxDBLookupComboBox; procedure actAlmacenExecute(Sender: TObject); procedure actOtroExecute(Sender: TObject); procedure cbAlmacenPropertiesEditValueChanged(Sender: TObject); procedure cbAlmacenPropertiesValidate(Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean); private FAlmacen: IBizAlmacen; FPedido : IBizPedidosProveedor; function GetPedidoProveedor: IBizPedidosProveedor; procedure SetPedidoProveedor(const Value: IBizPedidosProveedor); public constructor Create(AOwner: TComponent); override; destructor Destroy; override; property PedidoProveedor: IBizPedidosProveedor read GetPedidoProveedor write SetPedidoProveedor; end; var frViewDestinoPedidoProveedor: TfrViewDestinoPedidoProveedor; implementation {$R *.dfm} uses uDataModuleAlmacenes, schAlmacenesClient_Intf; procedure TfrViewDestinoPedidoProveedor.actAlmacenExecute(Sender: TObject); begin cbAlmacen.Enabled := True; memDireccion.Enabled := False; end; procedure TfrViewDestinoPedidoProveedor.actOtroExecute(Sender: TObject); begin cbAlmacen.Enabled := False; memDireccion.Enabled := True; if Assigned(FPedido) and (FPedido.CODIGOALMACEN <> 0) then begin FPedido.Edit; FPedido.CODIGOALMACEN := 0; end; end; constructor TfrViewDestinoPedidoProveedor.Create(AOwner: TComponent); begin inherited; FAlmacen := dmAlmacenes.GetItems; DADataSource2.DataTable := FAlmacen.DataTable; DADataSource2.DataTable.Active := True; cbAlmacen.ItemIndex := 0; end; destructor TfrViewDestinoPedidoProveedor.Destroy; begin FAlmacen := Nil; inherited; end; function TfrViewDestinoPedidoProveedor.GetPedidoProveedor: IBizPedidosProveedor; begin Result := FPedido; end; procedure TfrViewDestinoPedidoProveedor.SetPedidoProveedor( const Value: IBizPedidosProveedor); begin FPedido := Value; if (FPedido.CODIGOALMACEN = 0) and (Length(FPedido.DIRECCIONCOMPLETA.Text) = 0) then // Nuevo pedido begin actAlmacen.Checked := True; actOtro.Checked := False; end else begin if (FPedido.CODIGOALMACEN <> 0) then begin actAlmacen.Checked := True; actOtro.Checked := False; end else begin if (Length(FPedido.DIRECCIONCOMPLETA.Text) <> 0) then begin actAlmacen.Checked := False; actOtro.Checked := True; actOtro.Execute; end end end; // Esto al final para que no salten los eventos del cxComboBox DADataSource.DataTable := FPedido.DataTable; end; procedure TfrViewDestinoPedidoProveedor.cbAlmacenPropertiesEditValueChanged( Sender: TObject); begin inherited; { if Assigned(FPedido) and (FPedido.CODIGOALMACEN <> FAlmacen.CODIGO) then begin FPedido.Edit; FPedido.DIRECCIONCOMPLETA.Text := FAlmacen.CALLE + #13#10 + FAlmacen.CODIGOPOSTAL + ' ' + FAlmacen.POBLACION end;} end; procedure TfrViewDestinoPedidoProveedor.cbAlmacenPropertiesValidate( Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean); begin inherited; if Assigned(FPedido) and (FPedido.CODIGOALMACEN <> FAlmacen.CODIGO) then begin { memDireccion.Lines.Clear; memDireccion.Lines.Add(FAlmacen.CALLE); memDireccion.Lines.Add(FAlmacen.CODIGOPOSTAL + ' ' + FAlmacen.POBLACION);} memDireccion.DataBinding.Field.AsString := FAlmacen.CALLE + #13#10 + FAlmacen.CODIGOPOSTAL + ' ' + FAlmacen.POBLACION; end; end; end.