unit uViewArticulosMontaje; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uViewGrid, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, uDADataTable, cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGrid, ActnList, Menus, cxGridBandedTableView, cxGridDBBandedTableView, uBizArticulosMontaje, JvComponent, JvFormAutoSize, PngImageList, ImgList, dxPSGlbl, dxPSUtl, dxPSEngn, dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns, dxPSEdgePatterns, cxIntlPrintSys3, dxPSCore, dxPScxCommon, dxPScxGridLnk, ComCtrls, ToolWin, uViewFiltroBase; type IViewArticulosMontaje = interface(IViewGrid) ['{64DE44DE-2F59-43E5-88D6-C958F3997A45}'] function GetCodigoMontaje: Integer; procedure SetCodigoMontaje(const Value: Integer); property CodigoMontaje: Integer read GetCodigoMontaje write SetCodigoMontaje; function GetArticulosMontaje: IBizArticulosMontaje; procedure SetArticulosMontaje(const Value: IBizArticulosMontaje); property ArticulosMontaje: IBizArticulosMontaje read GetArticulosMontaje write SetArticulosMontaje; end; TfrViewArticulosMontaje = class(TfrViewGrid, IViewArticulosMontaje) PngImageList: TPngImageList; cxGridViewRecID: TcxGridDBColumn; cxGridViewCODIGO: TcxGridDBColumn; cxGridViewDESCRIPCION: TcxGridDBColumn; cxGridViewREFERENCIAMONTAJE: TcxGridDBColumn; cxGridViewALMACEN: TcxGridDBColumn; cxGridViewCODIGOMONTAJE: TcxGridDBColumn; cxGridViewCODIGOPEDIDO: TcxGridDBColumn; cxGridViewCODIGOALMACEN: TcxGridDBColumn; ToolBar1: TToolBar; ToolButton1: TToolButton; ToolButton4: TToolButton; actAnadir: TAction; actQuitar: TAction; procedure cxGridViewCODIGOCustomDrawCell( Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); procedure actAnadirExecute(Sender: TObject); procedure actQuitarExecute(Sender: TObject); procedure cxGridViewSelectionChanged(Sender: TcxCustomGridTableView); procedure actQuitarUpdate(Sender: TObject); protected FCodigoMontaje: Integer; FArticulosMontaje: IBizArticulosMontaje; function GetCodigoMontaje: Integer; procedure SetCodigoMontaje(const Value: Integer); function GetArticulosMontaje: IBizArticulosMontaje; procedure SetArticulosMontaje(const Value: IBizArticulosMontaje); public property ArticulosMontaje: IBizArticulosMontaje read GetArticulosMontaje write SetArticulosMontaje; property CodigoMontaje: Integer read GetCodigoMontaje write SetCodigoMontaje; end; var frViewArticulosMontaje: TfrViewArticulosMontaje; implementation uses uBizArticulos, uDataModuleArticulos, uDBSelectionList; {$R *.dfm} { TfrViewArticulosMontaje } { ******************************* TfrViewArticulosMontaje ******************************* } function TfrViewArticulosMontaje.GetArticulosMontaje: IBizArticulosMontaje; begin Result := FArticulosMontaje; end; procedure TfrViewArticulosMontaje.SetArticulosMontaje(const Value: IBizArticulosMontaje); begin FArticulosMontaje := Value; if Assigned(FArticulosMontaje) then DADataSource.DataTable := FArticulosMontaje.DataTable; end; procedure TfrViewArticulosMontaje.cxGridViewCODIGOCustomDrawCell( Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); var R : TRect; begin inherited; R := AViewInfo.ContentBounds; ACanvas.FillRect(R); ACanvas.DrawImage(PngImageList, R.Left, R.Top, 0); ADone := True; end; procedure TfrViewArticulosMontaje.actAnadirExecute(Sender: TObject); var AArticulos: IBizArticulosAlmacen; begin try AArticulos:= dmArticulos.GetItemsLibres; if AArticulos.ShowForSelect = mrOK then begin AArticulos.Reservar(CodigoMontaje); FArticulosMontaje.DataTable.Refresh; end; finally AArticulos := Nil; Self.RefreshGrid; Self.SyncFocusedRecordsFromDataSet; end; end; procedure TfrViewArticulosMontaje.actQuitarExecute(Sender: TObject); begin Self.SyncFocusedRecordsFromGrid; try FArticulosMontaje.Liberar; FArticulosMontaje.DataTable.Refresh; finally Self.RefreshGrid; Self.SyncFocusedRecordsFromDataSet; end; end; procedure TfrViewArticulosMontaje.cxGridViewSelectionChanged(Sender: TcxCustomGridTableView); var ABookmark : Pointer; i, pos: Integer; begin inherited; pos := (Sender as TcxGridDBTableView).GetColumnByFieldName('CODIGO').Index; if FArticulosMontaje <> NIL then begin FArticulosMontaje.DataTable.DisableControls; ABookmark := FArticulosMontaje.DataTable.GetBookMark; (FArticulosMontaje as ISelectedRowList).SelectedRows.Clear; for i:=0 to Sender.Controller.SelectedRecordCount-1 do begin FArticulosMontaje.DataTable.Locate('CODIGO', Sender.Controller.SelectedRecords[i].Values[pos],[]); (FArticulosMontaje as ISelectedRowList).SelectedRows.CurrentRowSelected := True; end; (FArticulosMontaje as ISelectedRowList).SelectedRows.Count; FArticulosMontaje.DataTable.GotoBookmark(ABookmark); FArticulosMontaje.DataTable.FreeBookmark(ABookmark); FArticulosMontaje.DataTable.EnableControls; end; end; function TfrViewArticulosMontaje.GetCodigoMontaje: Integer; begin Result := FCodigoMontaje; end; procedure TfrViewArticulosMontaje.SetCodigoMontaje(const Value: Integer); begin FCodigoMontaje := Value; end; procedure TfrViewArticulosMontaje.actQuitarUpdate(Sender: TObject); begin inherited; if Assigned(DADataSource.DataTable) then (Sender as TAction).Enabled := (not DADataSource.DataTable.IsEmpty) else (Sender as TAction).Enabled := False; end; end.