unit uBizArticulos; interface uses uDAInterfaces, uDADataTable, schArticulosClient_Intf, uDBSelectionListUtils; const BIZ_CLIENT_ARTICULO = 'Client.Articulo'; type IBizArticulo = interface(IArticulos) ['{06AB61B1-C225-4791-9F5E-00A60DBA7FFD}'] function EsNuevo : Boolean; function GetSelectedRecords: ISelectedRecords; property SelectedRecords : ISelectedRecords read GetSelectedRecords; function HayImagen: Boolean; procedure SalvarImagen(const AFileName: String); procedure CargarImagen(const AFileName: String); procedure QuitarImagen; end; TBizArticulo = class(TArticulosDataTableRules, IBizArticulo, ISelectedRecords) protected FSelectedRecords : TSelectedRecords; function GetSelected: Boolean; virtual; procedure SetSelected(const Value: Boolean); virtual; procedure OnNewRecord(Sender: TDADataTable); override; public function HayImagen: Boolean; procedure SalvarImagen(const AFileName: String); procedure CargarIMagen(const AFileName: String); procedure QuitarImagen; function EsNuevo : Boolean; function GetSelectedRecords: ISelectedRecords; constructor Create(aDataTable: TDADataTable); override; destructor Destroy; override; property SelectedRecords : ISelectedRecords read GetSelectedRecords implements ISelectedRecords; property Selected : Boolean read GetSelected write SetSelected; end; implementation uses uDataTableUtils, uDataModuleUsuarios, SysUtils, uROClasses, Classes; { TBizArticulo } procedure TBizArticulo.CargarImagen(const AFileName: String); var StdStream: TMemoryStream; StreamRO: IROStream; begin { inherited; StdStream := TMemoryStream.Create; try StdStream.LoadFromFile(AFileName); StreamRO := NewROStream(StdStream,False); DataTable.Edit; DataTable.FieldByName(fld_ArticulosIMAGEN).LoadFromStream(StreamRO); DataTable.Post; finally StdStream.Free; end;} end; constructor TBizArticulo.Create(aDataTable: TDADataTable); begin inherited; FSelectedRecords := TSelectedRecords.Create(aDataTable); end; destructor TBizArticulo.Destroy; begin FreeAndNIL(FSelectedRecords); inherited; end; function TBizArticulo.EsNuevo: Boolean; begin Result := (ID < 0); end; function TBizArticulo.GetSelected: Boolean; begin Result := FSelectedRecords.CurrentRowSelected; end; function TBizArticulo.GetSelectedRecords: ISelectedRecords; begin Result := FSelectedRecords; end; function TBizArticulo.HayImagen: Boolean; begin // Result := DataTable.FieldByName(fld_ArticulosIMAGEN).IsNull end; procedure TBizArticulo.OnNewRecord(Sender: TDADataTable); begin inherited; ID := GetRecNo; // -1, -2, -3... ID_EMPRESA := dmUsuarios.IDEmpresaActual; USUARIO := dmUsuarios.LoginInfo.Usuario; end; procedure TBizArticulo.QuitarImagen; begin { DataTable.Edit; DataTable.FieldByName(fld_ArticulosIMAGEN).Clear; DataTable.Post;} end; procedure TBizArticulo.SalvarImagen(const AFileName: String); begin // DataTable.FieldByName(fld_ArticulosIMAGEN).SaveToFile(AFileName); end; procedure TBizArticulo.SetSelected(const Value: Boolean); begin FSelectedRecords.CurrentRowSelected := True; end; initialization RegisterDataTableRules(BIZ_CLIENT_ARTICULO, TBizArticulo); finalization end.