unit uViewAlbaranCliente; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uViewBase, uBizAlbaranesCliente, DB, uDADataTable, uCustomView, uViewDatosYSeleccionContacto, uViewDatosAlbaranCliente, uViewObservaciones, uViewFormaPago, AppEvnts, uViewPresupuestoAlbaran, uViewPresupuestoRelacionado, JvExControls, JvComponent, JvLabel, JvDBControls, StdCtrls, Buttons; type IViewAlbaranCliente = interface(IViewBase) ['{4AF36827-838E-40AC-BEB5-72D69C721E6B}'] function GetAlbaranCliente: IBizAlbaranesCliente; procedure SetAlbaranCliente(const Value: IBizAlbaranesCliente); property AlbaranCliente: IBizAlbaranesCliente read GetAlbaranCliente write SetAlbaranCliente; end; TfrViewAlbaranCliente = class(TfrViewBase, IViewAlbaranCliente) DADataSource: TDADataSource; frViewDatosYSeleccionContacto1: TfrViewDatosYSeleccionContacto; frViewDatosAlbaranCliente1: TfrViewDatosAlbaranCliente; frViewObservaciones1: TfrViewObservaciones; frViewFormaPago1: TfrViewFormaPago; frViewPresupuestoAlbaran1: TfrViewPresupuestoAlbaran; procedure BitBtn1Click(Sender: TObject); private FAlbaranCliente : IBizAlbaranesCliente; procedure OnContactoChanged (Sender : TObject); procedure OnPresupuestoChanged(Sender : TObject); protected function GetAlbaranCliente: IBizAlbaranesCliente; procedure SetAlbaranCliente(const Value: IBizAlbaranesCliente); public property AlbaranCliente: IBizAlbaranesCliente read GetAlbaranCliente write SetAlbaranCliente; end; var frViewAlbaranCliente: TfrViewAlbaranCliente; implementation uses uBizContacto, uExceptions, uDataModulePresupuestos; {$R *.dfm} { TfrViewAlbaranCliente } function TfrViewAlbaranCliente.GetAlbaranCliente: IBizAlbaranesCliente; begin Result := FAlbaranCliente; end; procedure TfrViewAlbaranCliente.OnContactoChanged(Sender: TObject); begin if FAlbaranCliente.CODIGOCONTACTO <> (frViewDatosYSeleccionContacto1.Contacto as IBizCliente).CODIGO then FAlbaranCliente.Cliente := (frViewDatosYSeleccionContacto1.Contacto as IBizCliente); end; procedure TfrViewAlbaranCliente.OnPresupuestoChanged(Sender: TObject); begin if not (FAlbaranCliente.DataTable.State in dsEditModes) then FAlbaranCliente.Edit; ShowMessage(IntToStr(frViewPresupuestoAlbaran1.Presupuesto.CODIGO)); try FAlbaranCliente.CODIGOPRESUPUESTO := frViewPresupuestoAlbaran1.Presupuesto.CODIGO; FAlbaranCliente.CopyFrom(frViewPresupuestoAlbaran1.Presupuesto); frViewDatosYSeleccionContacto1.Contacto := FAlbaranCliente.Cliente; MessageBox(0, 'Se ha copiado correctamente el presupuesto elegido en este albarán.', 'Presupuesto copiado', MB_ICONWARNING or MB_OK); except on E : Exception do ShowMessage(E.ClassName+' error raised, with message : '+E.Message); end; end; procedure TfrViewAlbaranCliente.SetAlbaranCliente( const Value: IBizAlbaranesCliente); begin FAlbaranCliente := Value; if Assigned(FAlbaranCliente) then DADataSource.DataTable := FAlbaranCliente.DataTable else DADataSource.DataTable := NIL; frViewDatosAlbaranCliente1.DADataSource.DataTable := DADataSource.DataTable; frViewObservaciones1.DADataSource.DataTable := DADataSource.DataTable; frViewFormaPago1.DADataSource.DataTable := DADataSource.DataTable; frViewDatosYSeleccionContacto1.Contacto := FAlbaranCliente.Cliente; frViewDatosYSeleccionContacto1.OnContactoChanged := OnContactoChanged; frViewPresupuestoAlbaran1.Presupuesto := dmPresupuestos.GetPresupuesto(FAlbaranCliente.CODIGOPRESUPUESTO); frViewPresupuestoAlbaran1.OnPresupuestoChanged := OnPresupuestoChanged; end; procedure TfrViewAlbaranCliente.BitBtn1Click(Sender: TObject); begin inherited; frViewDatosYSeleccionContacto1.Contacto.DataTable.Active := tRUE; end; end.